我正在研究光线追踪器,我不想在 3D 场景的文件格式方面重新发明轮子。我还希望能够使用其他人制作的场景来测试我的程序。我是程序员而不是 3D 建模师。
是否有特定的或非常适合光线追踪的 3D 场景格式?
我正在研究光线追踪器,我不想在 3D 场景的文件格式方面重新发明轮子。我还希望能够使用其他人制作的场景来测试我的程序。我是程序员而不是 3D 建模师。
是否有特定的或非常适合光线追踪的 3D 场景格式?
确实没有特定于光线追踪的格式(除非您计算 PovRay 格式)。光线追踪是一种渲染图像的方法,可以应用于任何场景。人们建模场景将使用他们选择的建模软件并通常以建模器的默认格式保存。
看起来您对加载特定格式没有任何要求(或者您不会问),所以我猜您只是希望能够从网络中导入各种几何图形进行测试。如果是这种情况,请查看 ompf 论坛:http ://ompf.org/他们有一个部分提供免费场景的链接。你可以感受到那里的共同点。
另一种选择是利用开放资产导入库: http ://assimp.sourceforge.net/
这可以为您导入大量文件格式。它将它们全部加载到一个内部数据结构中,然后您可以根据需要对其进行处理。它使用 BSD 许可证,因此它应该与您正在做的任何事情合理地兼容许可证。
当我编写光线追踪器时,我为Blender编写了一个导出器(它是免费的)。Blender 本身可以加载几十种格式,然后一个简单的 20 行 python 脚本将为您提供所需的点。
超级棒的功能是在 Blender 中,您可以将所有模型的面转换为三角形。大多数光线追踪器仅适用于三角形(或在内部将多边形转换为三角形)。因此,让 Blender 完成处理这些多边形的繁重工作是非常好的。
从 20 行代码开始,您可以只导出多边形。从那里,您可以将其扩展到输出材质、法线等。我喜欢这种方法,因为我可以以我想要的格式获得我想要的数据,但仍然可以选择导入更复杂的模型。
其他方法也可以,但您首先必须弄清楚如何解析文件,然后以您想要的格式获取它。我宁愿编写光线追踪器而不是解析器。
我不相信使用任何特定的场景格式,因为不同的建模器需要不同的参数和设置指令等。
然而,WaveFront.obj
格式在描述场景中的单个对象时非常流行,并且该格式的许多文件都可以在 Internet 上找到。