因此,我正在为波前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个随机样本。如果每组只有一种材质,我可以查找该组中的三角形并生成样本。但是,如果该组中包含一些具有正确材质的三角形,而另一些没有,则我必须在组检查的基础上进行一些奇怪的材质检查,以生成正确的样本。只是一个示例-在其他情况下也成为问题)

最佳答案

对象网格不仅可以分组为组项目(g),而且可以将对象(o)和平滑区域(s)分组。最简单的方法是使人脸参考usemtl指定的当前材质,或仅按usemtl分组

07-28 12:58