无论是VFX艺术家,研究人员还是图形业余爱好者, Blendernerf都是在Blender中创建合成的Nerf和Gaussian剥离数据集的最简单,最快的方法。在对3D场景和相机的完整用户控制时,请单击一次单击渲染和相机参数!
您准备好呆了吗?通过单击Blender的单击,通过查看本教程!
神经辐射场(NERF)旨在将3D场景作为视图依赖性体积对象,仅来自2D图像,以及它们各自的相机信息。 3D场景是在简单的神经网络的帮助下从训练图像进行反向设计的。
高斯脱落是一种以基于点的方式渲染辐射场字段的后续方法。该表示形式高度优化,用于GPU渲染,并利用更传统的图形技术来达到高帧速率。
我建议您观看Corridor Crew的YouTube视频,以对一些用例和NERF的未来潜在应用进行激动人心的调查。
渲染是一个昂贵的计算。逼真的场景可能需要秒到几个小时才能渲染,具体取决于场景的复杂性,硬件和可用的软件资源。
NERFS和Gaussian的夹层可以加快此过程,但是通常需要通过繁琐的代码提取相机信息。该插件使任何人都可以单击搅拌机中获得渲染和相机。
尽管可以下载Blendernerf的发布版本,但它们主要用于跟踪主要代码更改和引用目的。我建议直接下载当前的存储库,因为可能不会立即将其包含在版本中。
Blendernerf包括以下小节中讨论的3种方法。每种方法都能以训练图像的形式创建培训数据和测试NERF的数据,并分别使用相应的摄像头信息transforms_train.json transforms_test.json文件。数据存档到包含培训和测试文件夹的单个邮政编码中。然后,NERF模型可以使用培训数据来学习3D场景表示。经过培训后,可以在测试数据(仅相机信息)上评估(或测试)模型以获得新颖的渲染。
框架(SOF)的子集从相机动画中呈现每个N帧,并将框架的渲染子集作为NERF训练数据。注册的测试数据跨越了同一相机动画的所有帧,包括训练帧。经过培训后,NERF模型可以渲染完整的相机动画,因此非常适合插值或渲染大型静态场景动画。
训练和测试摄像机(TTC)注册来自两个独立用户定义的摄像机的培训和测试数据。然后,可以将NERF模型与从训练相机中提取的数据拟合,并在测试数据上进行评估。
在球体上(COS)上的摄像机通过从用户控制的球体上指向中心的随机摄像机视图来渲染训练框架。测试数据是从选定的相机中提取的。
附加属性面板可在3D View > N panel > BlenderNeRF下使用(按下N时,在3D视口下可访问N面板)。所有3种方法( SOF , TTC和COS )与以下可控属性共享一个称为BlenderNeRF shared UI常见选项卡。
Train (默认激活):是否注册培训数据(渲染 +相机信息)Test (默认激活):是否注册测试数据(仅相机信息)AABB (默认设置为4 ):Instant NGP中所述的AABB刻度参数(下面的更多详细信息)Render Frames (默认激活):是否渲染框架Save Log File (默认情况下停用):是否保存包含可重复性信息的日志文件File Format (默认情况下为NGP ):是在即时NGP中导出相机文件还是Defaut Nerf文件格式惯例Gaussian Points (默认停用):是否要导出一个points3d.ply file for Gaussian splattingGaussian Test Camera Poses (默认情况下是虚拟):是导出虚拟测试摄像头文件还是完整的测试摄像头姿势(仅使用Gaussian Points )Save Path (默认为空):将创建数据集的输出目录的路径如果Gaussian Points属性处于活动状态,则Blendernerf将从所有可见网格(在渲染时间)中创建一个额外的points3d.ply文件,其中每个顶点将用作初始化点。如果有的话,将存储顶点颜色,否则将其设置为黑色。
高斯脱落存储库本身支持NERF数据集,但需要培训和测试数据。 Gaussian Test Camera Poses的Dummy选项属性会创建一个空的测试摄像头姿势文件,如果不需要测试图像。 Full选项导出了默认测试摄像头提出,但需要单独渲染包含所有测试渲染器的test文件夹。
AABB被限制为2的整数功率,它定义了边界框的侧面长度,其中NERF将追踪射线。该属性是使用NVIDIA的即时NGP版本的NERF引入的。
File Format属性可以是NGP或NERF 。 NGP文件格式约定与Nerf One相同,其中有一些其他参数可以通过即时NGP访问。
请注意,每个方法都具有与数据集名称相对应的独特Name属性(默认设置为dataset ),并为相应方法创建了zip文件名。请注意,不支持的字符(例如#或/ )将自动被下划线取代。
以下描述了每种方法特定的属性(遗漏了Name属性,因为上面已经讨论过)。
Frame Step (默认设置为3 ): n (设置部分中定义)=注册训练帧的频率Camera (始终设置为活动相机):用于注册训练和测试数据的相机PLAY SOF :播放帧方法运算符的子集以导出NERF数据Frames (默认设置为100 ):训练相机使用的训练帧数量Train Cam (默认为空):用于注册训练数据的相机Test Cam (默认为空):用于注册测试数据的相机PLAY TTC :播放火车和测试摄像机方法操作员导出NERF数据从场景开始框架开始,将使用Train Cam对象捕获训练框架的Frames量。
Camera (始终设置为活动相机):用于注册测试数据的相机Location (默认设置为0 m向量):训练球的中心位置,从中取样相机视图Rotation (默认设置为0°矢量):采样相机视图的训练球的旋转Scale (默认设置为1个向量):XYZ轴中训练球的比例向量Radius (默认设置为4 m ):训练球的半径标量Lens (默认设置为50毫米):训练相机的焦距Seed (默认设置为0 ):种子以初始化随机相机视图采样过程Frames (默认设置为100 ):从训练领域采样并渲染的训练帧数量Sphere (默认情况下停用):是否显示训练领域,将对随机视图进行采样Camera (默认停用):是否显示用于注册训练数据的相机Upper Views (默认情况下停用):是否仅从上部训练半球样本视图(旋转变体)Outwards (默认停用):是否将摄像机向外指向训练领域PLAY COS :在球体方法上播放相机以导出NERF数据请注意,激活Sphere和Camera属性会分别创建BlenderNeRF Sphere空对象和BlenderNeRF Camera头对象。请不要手动创建使用这些名称的任何对象,因为这可能会破坏附加功能。
从场景开始帧开始,将使用BlenderNeRF Camera对象捕获Frames量的训练帧。最后,请记住,训练相机已锁定在适当的位置,无法手动移动。
NVIDIA提供了一些有关如何使用即时NGP训练NERF模型的有用提示。随时访问其存储库以寻求进一步的帮助。以下是一些从个人经验中获得的最佳秘诀的快速提示。
AABB尽可能紧密,对场景规模,更高的值将减慢训练的速度AABB ,同时保持2Vertical摄像机传感器拟合有时会导致NERF量变形,请在可能的情况下避免如果您可以访问NVIDIA GPU,则可能需要在自己的设备上安装即时NGP,以获得最佳的用户体验,并遵循其存储库中提供的说明。否则,您可以通过Google帐户免费在Google GPU上的COLAB笔记本中运行NERF。
打开此COLAB笔记本电脑(也可以在此处下载),然后按照说明进行操作。
在多个月的过程中,该附加组件正在作为一个有趣的方面项目开发,主要是Macos。如果您遇到了插件功能的任何问题,请随意开开一个github问题,并清楚地描述该问题,这些问题已遇到了问题,如果有相关性,则有任何进一步的信息。
虽然此扩展名用于创建合成数据集,但现有的用于从现实世界摄像机中导入运动数据的工具。一个这样的示例是由Shopify ,开源iOS应用程序和相邻的搅拌机插件录制运动跟踪iPhone上ARKIT会话的数据的Tracky 。但是请记住,跟踪数据可能会受到漂移和错误的影响,这可能会影响由此产生的NERF重建质量。
如果您发现此存储库在您的研究中有用,请考虑使用上面的专用GitHub按钮引用Blendernerf 。如果您为自己的艺术项目使用此扩展名,请随时使用社交媒体上的#blendernerf主题标签分享一些工作! :)