Graphics 波前OBJ格式->;小组及;usemtl命令
所以我正在为波阵面obj模型文件编写一个解析器,有一些不规则的地方我不知道如何处理 因此,根据我的阅读,可以使用“g”命令将网格分解为多个组,并使用“usemtl”命令将材质分配给每个组 因此理想的文件如下所示:Graphics 波前OBJ格式->;小组及;usemtl命令,graphics,3d,rendering,polygon,wavefront,Graphics,3d,Rendering,Polygon,Wavefront,所以我正在为波阵面obj模型文件编写一个解析器,有一些不规则的地方我不知道如何处理 因此,根据我的阅读,可以使用“g”命令将网格分解为多个组,并使用“usemtl”命令将材质分配给每个组 因此理想的文件如下所示: g group1 usemtl material1 //vertices //UV coords //faces g group2 usemtl material2 //vertices //UV coords //faces etc.... 然而,在我下载的一些obj文件中(从
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个随机样本。如果每组只有一个材质,我可以查找该组中的三角形并生成样本。但是如果该组包含一些具有正确材质的三角形,而另一些没有,我必须执行一些奇怪的操作。)在组检查的基础上进行Material检查以生成正确的样本。这只是一个示例-还有其他一些示例也存在此问题)Obj网格不仅可以分组为组项目(g),还可以分组为对象(o)和平滑区域(s)也是。最简单的方法是使面引用由usemtl指定的当前材质,或者只是按usemtl分组在我的例子中,我按usemtl分组。每个新的“usemtl”关键字定义了一个新组,其名称与上一个带计数器的组相同。效果很好!@Shurbsk对象和组项之间有什么区别?