【发布时间】:2015-08-15 10:20:51
【问题描述】:
所以我正在为波前 obj 模型文件编写一个解析器,并且有一些我不知道如何处理的违规行为。
所以根据我的阅读,可以使用“g”命令将网格分成组,并且可以使用“usemtl”命令将材料分配给每个组
所以一个理想的文件应该是这样的:
g group1
usemtl material1
//vertices
//UV coords
//faces
g group2
usemtl material2
//vertices
//UV coords
//faces
etc....
但是在我下载的一些 obj 文件中(从 Turbosquid 之类的地方),我看到一个组包含多个“usemtl”,如下所示:
g group1
usemtl material1
//vertices, faces, etc
usemtl material2
//vertices, faces, etc
g group2
usematerial material3
//vertices, faces, etc
如果每个组可以有多种材料,那么组的意义何在?
这些文件是否被视为“非标准”或损坏?
我应该改为基于共享材料而不是共享组对面孔进行分组吗?
每组有多种材料会使我的很多代码复杂化(例如 - 假设我必须在一组具有某种材料的三角形/面上生成一组 N 个随机样本。如果每组只有一种材料我可以查找该组中的三角形并生成样本。但是如果该组包含一些具有正确材料的三角形而一些没有,我必须在组检查的基础上进行一些奇怪的材料检查以生成正确的样本. 这只是一个例子 - 还有其他问题也成为问题)
【问题讨论】:
标签: graphics 3d rendering polygon wavefront