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

如何在Python Ursina引擎中为单个模型加载多张纹理

Ursina 单个模型加载多张纹理实现方案

前置要求

你用于渲染的房屋3D模型,需要提前在建模工具(如Blender)中为不同部位(墙面、楼板、窗户)分配独立的材质槽,且材质槽的顺序和你要加载的纹理顺序一一对应,这是多纹理生效的前提。

现有代码问题

Ursina中Entity(Button继承自Entity)的单纹理参数为texture,多纹理需要用复数形式的textures参数传列表,且你设置的color = color.lime会给所有纹理叠加绿色色调,若不需要纹理染色建议改为白色。

修正后可运行代码

textures = ["wall", "slap", "window"]

class Homes(Button):
    def __init__(self, pos = (10,1,0)):
       super().__init__(
          parent = scene,
          model = 'images/house',
          textures = textures, # 单纹理参数texture改为多纹理参数textures
          scale = (5,12,5),
          position = pos,
          color = color.white, # 不需要纹理染色改回白色,避免影响纹理原始显示效果
          origin_y = 0.5,
        )

home = Homes()

额外注意事项

  • 如果纹理没有正常显示,首先检查模型材质槽的顺序是否和textures列表的顺序匹配
  • 如果你的纹理文件不是默认的png格式,需要在纹理名中补全后缀,例如"wall.jpg"
  • 如果你需要在同一个面上叠加多层纹理,可以额外使用texture2、texture3参数单独指定叠加层纹理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:39:04