为何Ursina中程序化模型与网格模型着色效果不同?
问题解决:Ursina程序化模型无法被方向光照亮
你遇到的问题根源是程序化生成的Cube()默认没有包含法线数据,而Ursina的光照计算依赖法线来实现光影效果。内置的'cube'模型是预先生成好的,自带完整的法线信息,所以能正常被方向光照亮。
解决方法很简单,只需在创建程序化Cube时主动生成法线:
两种实现方式:
- 创建后调用
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()
- 创建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
相关产品推荐
相关产品推荐

