我导出的.obj文件缺少顶点颜色的数据。有没有办法在.obj文件中包含颜色信息?如果没有,有哪些替代方案?
我导出的.obj文件缺少顶点颜色的数据。有没有办法在.obj文件中包含颜色信息?如果没有,有哪些替代方案?
Answers:
Blender可以导出基于文本的PLY文件(.ply),非常易于解析,并且包括顶点颜色。困难的方法是更改OBJ导出器代码,使其包含顶点颜色(从而破坏obj兼容性)。
确实有一种Wavefront的* .obj可以简化顶点着色。.我知道有两个可以导出它们的应用程序,即“ MeshLab”(免费)和“ MeshMixer”(也可以从Autodesk免费获得)。在每个顶点定义之后,如下所示。
(* .obj的部分)
####
#
# OBJ File Generated by Meshlab
#
####
# Object VERTEXPAINT_004_OBJ.obj
#
# Vertices: 284
# Faces: 281
#
####
mtllib ./VERTEXPAINT_004_OBJ.obj.mtl
vn 0.029683 0.730087 -0.682709
v 1220.094482 -572.500000 177.713943 0.984314 0.764706 1.000000
# "3 vals for Vert and 3 vals for Col"
vn 0.000000 0.858139 -0.513418
v 1291.571533 -609.439636 -28.628490 0.921569 0.219608 1.000000
vn 0.303129 0.896367 -0.323480
尝试使用meshlab生成“基于顶点的环境光遮挡”,然后使用“ MeshMixer”将其打开。
这应该可以澄清您的问题。.我认为顶点着色随着着色器的出现而又回来了。.当发现图像贴图时,似乎忽略了顶点着色。让我知道这是否有用!
v
。(希望)不破坏与现有OBJ解析器的兼容性的巧妙方法。
Wavefront OBJ支持材料,其颜色组的网格颜色相同。
重大声明如下所示:
newmtl redMtl
Kd 1.00 0.00 0.00
Ks 0.50 0.50 0.50
Ns 18.00
因此,Kd是漫反射分量,Ks是镜面反射。
这些将在.obj文件随附的.mtl文件中指定。在.obj文件中的语句如下
usemtl redMtl
f 1/5/1 30/39/2 20/29/3
f 20/29/4 30/39/5 31/41/6
f 35/48/7 26/35/8 2/6/9
这意味着在那里指定的面必须使用redMtl材质。解析obj文件时,这会转换为每个顶点的颜色。
如果有很多不同的颜色,您将有很多不同的材料,但是您可以做到。
这是有关如何为一组特定的面孔分配不同材质的视频。如果需要,可以为网格中的每个面分配不同的材质。