with open(obj_file, "w") as fp: fp.write(f'mtllib mesh_{cas}.mtl \n') print(f'[INFO] writing vertices {v_np.shape}')#写顶点 for v in v_np: fp.write(f'v {v[0]} {v[1]} {v[2]} \n') print(f'[INFO] writing vertices texture coords {vt_np.shape}')#写顶点的贴图坐标 for v in vt_np: fp.write(f'vt {v[0]} {1 - v[1]} \n') print(f'[INFO] writing vertices normal coords {vn_np.shape}') # 写顶点的法向量坐标 for v in vn_np: fp.write(f'vn {v[0]} {v[1]} {v[2]} \n')我这段代码输出后的结果vn在vt前面,这是为什么
时间: 2024-04-18 16:31:58 浏览: 6
根据你提供的代码,可以看到在写入文件时,先写入了顶点坐标(v),然后是顶点的贴图坐标(vt),最后是顶点的法向量坐标(vn)。因此,vn在vt前面是由于代码中的写入顺序决定的。
在3D图形中,通常先定义物体的顶点坐标,然后是贴图坐标(用于纹理映射),最后是法向量坐标(用于光照计算)。这样的顺序可以确保正确地渲染物体并应用纹理。
所以,根据你的代码逻辑和写入顺序,在输出结果中vn会在vt前面。
相关问题
def __str__(self): return self.name#返回对象的name属性
这段代码是什么意思?
这是一个 Python 类中的特殊方法,用于返回实例对象的字符串表示。在这个方法中,返回了对象的 name 属性的值。当我们使用 print() 函数打印一个对象时,实际上会调用这个方法来获取对象的字符串表示。例如,如果有一个名为 obj 的对象,调用 print(obj) 时,会输出该对象的 name 属性的值。这个方法通常用于调试和日志记录。
mfuzz.plot(mfuzz_obj_SOL) Error in mfuzz.plot(mfuzz_obj_SOL) : argument "cl" is missing, with no default
这个错误提示表明`mfuzz.plot()`函数需要`cl`参数,但是你没有给出这个参数,并且该函数也没有默认值。`cl`参数用于指定聚类的数量。你需要指定一个合适的聚类数量,并将其作为`cl`参数传递给`mfuzz.plot()`函数,例如:
``` r
mfuzz.plot(mfuzz_obj_SOL, cl = 2)
```
在这里,我将聚类数量设置为2,你可以根据需要调整这个参数的值。