You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ursina引擎导入外部3D模型时纹理无法加载问题

Ursina 导入外部3D模型纹理渲染异常修复

你遇到的纹理显示错误和sRGB配置、系统兼容性没有关系,核心问题出在模型加载逻辑和资源处理方式上:

  • 未指定正确的模型格式:直接写model='bmw'时,Ursina会优先检索自身内置模型库,不会自动读取你放在项目目录的外部下载模型,同时如果你下载的模型是glb、fbx等Ursina默认不支持直接加载的格式,连模型网格、UV坐标都无法正确解析,更不可能正常贴纹理。
  • 手动加载纹理的方式跳过了模型材质关联逻辑:你单独加载jpg文件赋值给模型纹理的操作,没有匹配模型导出时的UV映射规则、材质参数,哪怕纹理路径正确,也会出现纹理错位、显示异常的问题。

可直接复现的修复步骤

  1. 预处理模型资源
    拿到下载的模型后,用Blender打开导出为.obj格式,导出时勾选「写入材质文件(.mtl)」「包含UV坐标」「相对路径引用纹理」选项,把导出得到的.obj文件、.mtl文件、对应的纹理jpg文件,全部放到你项目根目录下新建的models文件夹里,不要拆分存放。
  2. 替换原有代码
    不需要单独调用load_texture,Ursina加载obj模型时会自动读取同目录下mtl文件关联的纹理配置,修正后的代码如下:
from ursina import *
app = Ursina()

window.title = 'ursina'
camera.orthographic = True
camera.fov = 2.5

# 明确指定obj后缀,强制引擎加载项目目录下的外部模型
e36 = Entity(
    model = 'bmw.obj',
    scale=(0.05, 0.05, 0.05)
)

app.run()
  1. 特殊情况排查
    如果按上面操作后纹理还是显示异常,再针对性测试:
    • 先给Entity临时加color=color.red参数运行,确认模型网格本身能正常加载,没有出现形状扭曲、缺失
    • 确认模型形状正常后,再手动加载纹理,添加srgb参数测试:bmwtexture = load_texture('my_image.jpg', srgb=False),再把纹理赋值给Entity的texture属性
    • 不要把模型资源放到Ursina安装目录的系统资源文件夹,避免出现路径权限、资源优先级冲突问题
    • 打开mtl文件检查里面写的纹理文件名,和你实际存放的jpg文件名完全一致,不要有中文、空格、特殊字符

内容的提问来源于stack exchange,提问作者snookes 99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 03:24:26