推荐:用 NSDT编辑器 快速搭建可编程3D场景
3D理解在从自动驾驶汽车和自主机器人到虚拟现实和增强现实的众多应用中发挥着至关重要的作用。在过去的一年里,pytorch3D已经成为一个越来越流行的开源框架,用于使用Python进行3D深度学习。值得庆幸的是,PyTorch3D 库背后的人员已经完成了实现几个常见的 3D 运算符、损失函数和可微渲染 API 的繁琐工作,使 PyTorch3D 更易于访问,更容易开始使用。一些关键的 PyTorch3D 组件包括:
- 用于存储和操作三角形网格的数据结构
- 三角形网格的高效操作
- 可微分网格渲染接口
渲染是计算机图形管道中必不可少的构建块,可将 3D 表示 — 无论是网格 (.obj) 还是点云 (.ply)— 转换为 2D 图像。
在这篇文章中,我们将构建有关如何从各种角度渲染 3D .obj 文件以创建 2D 图像的背景知识。我们还将使用 Python 中的 PyTorch3D 构建一个基本的 3D 渲染管线,组件如下所示。
这篇文章只假设对 3D 文件表示有基本的了解,所以希望每个人都可以访问它:)但是,如果你想了解有关3D重建的更多信息,请查看这个神奇的最新资源列表或斯坦福CS231A 和CS468的课程笔记。
在本文结束时,你将了解如何:
- 使用 .obj 和 .mtl 文件加载 3D 网格
- 创建渲染器
- 渲染网格
- 可选:使用批处理属性从不同视点高效渲染网格
只是想要代码?整个代码在此 GitHub 存储库 中可用。
让我们开始吧!
1、导入库并初始化参数我们首先从 pytorch3d 库中导入先决条件库,例如 torch 或 numpy,以及各种实用程序函数和结构。
最后,第 43 行从 utils.py 导入类参数,从配置文件加载重要的超参数。通常,最好将所有参数写入单个文件并从此特定文件加载它们。这允许你跟踪正在测试的超参数,并查看哪些超参数导致了最佳性能。在我们的例子中,超参数存储在 params_demo.json 中: