Ursina Engine纹理无法适配缩放问题求助(v5.3.0)
Ursina Engine 5.3.0纹理适配问题解决方法及Bug说明
解决纹理拉伸/间隙问题
以下几种方法可解决你的问题:
手动匹配纹理与实体缩放比例
放弃texture_scale='mesh',直接根据实体缩放设置texture_scale的具体数值。比如你的实体Y轴缩放2倍,若纹理为正方形,设置texture_scale=(1, 2)让纹理在Y方向重复2次,刚好适配实体尺寸,避免拉伸或间隙:example = Entity(model='cube', scale=(1,2), texture='stone.png', texture_scale=(1, 2))若纹理非正方形,需根据纹理宽高比调整参数,比如纹理是1:2比例,实体缩放(1,2),则设置
texture_scale=(2, 2)适配。自定义UV映射
若默认Cube的UV坐标不满足需求,可手动创建自定义Mesh,调整每个面的UV值,让纹理完全适配实体缩放:from ursina import * # 适配Y轴2倍缩放的自定义Cube网格 custom_cube = Mesh( vertices=[(-0.5,-1,0.5), (0.5,-1,0.5), (0.5,1,0.5), (-0.5,1,0.5), (-0.5,-1,-0.5), (0.5,-1,-0.5), (0.5,1,-0.5), (-0.5,1,-0.5), (-0.5,-1,-0.5), (-0.5,-1,0.5), (-0.5,1,0.5), (-0.5,1,-0.5), (0.5,-1,-0.5), (0.5,-1,0.5), (0.5,1,0.5), (0.5,1,-0.5), (-0.5,1,-0.5), (0.5,1,-0.5), (0.5,1,0.5), (-0.5,1,0.5), (-0.5,-1,-0.5), (0.5,-1,-0.5), (0.5,-1,0.5), (-0.5,-1,0.5)], uvs=[(0,0), (1,0), (1,2), (0,2), (0,0), (1,0), (1,2), (0,2), (0,0), (1,0), (1,2), (0,2), (0,0), (1,0), (1,2), (0,2), (0,0), (1,0), (1,1), (0,1), (0,0), (1,0), (1,1), (0,1)], triangles=[(0,1,2), (0,2,3), (4,5,6), (4,6,7), (8,9,10), (8,10,11), (12,13,14), (12,14,15), (16,17,18), (16,18,19), (20,21,22), (20,22,23)] ) example = Entity(model=custom_cube, scale=(1,2), texture='stone.png')显式开启纹理重复模式
先加载纹理并开启重复,再配合texture_scale调整,确保纹理正确适配:from ursina import * stone_tex = Texture('stone.png') stone_tex.repeat = True # 开启纹理重复 example = Entity(model='cube', scale=(1,2), texture=stone_tex, texture_scale=(1, 2))
版本相关Bug说明
Ursina 5.3.0确实存在texture_scale='mesh'的适配问题:当实体非等比例缩放时,该参数的计算逻辑会出现偏差,导致纹理重复时出现间隙或适配不良。这个问题在后续的5.4.0及更高版本中已被官方修复,优化了非均匀缩放实体的纹理适配计算方式。
内容的提问来源于stack exchange,提问作者user22591469
相关产品推荐
相关产品推荐

