因此,我正在为波前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分组