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

为何Ursina中程序化模型与网格模型着色效果不同?

问题解决:Ursina程序化模型无法被方向光照亮

你遇到的问题根源是程序化生成的Cube()默认没有包含法线数据,而Ursina的光照计算依赖法线来实现光影效果。内置的'cube'模型是预先生成好的,自带完整的法线信息,所以能正常被方向光照亮。

解决方法很简单,只需在创建程序化Cube时主动生成法线:

两种实现方式:

  1. 创建后调用generate_normals()方法:
from ursina import *

app = Ursina()

L1 = DirectionalLight(color=color.white)
L1.setHpr((0, 0, 0))

# 程序化Cube,生成法线后再使用
e = Entity(model=Cube(), x=-2, color=color.green)
e.model.generate_normals()

e = Entity(model='cube', x=2, color=color.red)

_ed = EditorCamera(rotation_speed=200, panning_speed=200)

app.run()
  1. 创建Cube时直接指定generate_normals=True参数:
from ursina import *

app = Ursina()

L1 = DirectionalLight(color=color.white)
L1.setHpr((0, 0, 0))

# 创建时直接生成法线
e = Entity(model=Cube(generate_normals=True), x=-2, color=color.green)

e = Entity(model='cube', x=2, color=color.red)

_ed = EditorCamera(rotation_speed=200, panning_speed=200)

app.run()

执行修改后的代码,绿色的程序化立方体就能和红色内置立方体一样被方向光正确照亮了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:22:04