Ursina(Python3)加载Blender制作的3D模型时材质颜色不显示如何解决
Ursina加载Blender模型无材质颜色问题解决方案
核心原因
Ursina加载.obj模型时默认不会自动读取关联材质,且你手动设置的color = color.white参数会覆盖模型自带的材质/顶点色,所以只显示纯白色。
分步解决方法
- 第一步:修正Blender导出设置
导出OBJ格式时,在导出面板勾选「导出材质」「写入UV坐标」「顶点颜色」三个选项,导出后将.obj文件、同目录生成的.mtl文件、所有用到的纹理素材全部放到Ursina项目的资源目录下,确保路径无中文、无特殊字符。 - 第二步:修改模型加载代码
删除代码中手动设置的color参数,同时添加对材质/顶点色的支持,修正后的参考代码如下:class Hand(Entity): def __init__(self): super().__init__(model = 'ARMS.obj', scale = (0.1, 0.1, 0.1), rotation = (0, -20, 0), # 移除color=color.white参数,避免覆盖原生材质 shader = 'vertex_color', # 如果用的是Blender里的顶点色着色,加这个参数 # 如果是用带纹理的材质,直接加texture参数指定路径:texture='你的纹理图路径.png' position = (0, 2, 0)) - 第三步:材质验证
如果还是不显示颜色,可以先手动指定纯色材质测试,确认模型加载逻辑没问题,再排查路径、导出参数的问题:# 测试用:手动指定红色材质 test_mat = Material() test_mat.color = color.red # 初始化Hand的时候加参数material=test_mat
后续纹理加载说明
如果要加载纹理,除了在.mtl文件中配置纹理路径外,也可以直接在Entity初始化时传入texture参数指定本地图片路径,Ursina支持常见的png、jpg格式纹理。
内容的提问来源于stack exchange,提问作者Quantum Sushi
相关产品推荐
相关产品推荐

