Ursina框架中Mesh线模式绘制六边形出现断线问题求助
解决Ursina绘制宽线六边形时线段断裂的问题
问题描述:绘制无填充六边形,设置thickness大于1时,线段之间出现断裂缺口。
问题原因
你当前通过triangles=[[0,1],[1,2],[2,3],[3,4], [4,5], [5,0]]定义了6条独立线段,当线宽增大时,独立线段的端点没有自动衔接处理,就会出现连接处的断裂缺口。
解决方案
直接改用mode='line_loop'模式,让引擎自动处理闭合线的端点衔接,不需要手动定义独立线段:
修改后的完整代码:
from ursina import * OUTER_RADIUS = 1 INNER_RADIUS = OUTER_RADIUS * 0.866025404 # 保留6个顶点即可,无需重复第一个顶点 HEX_CORNERS = [ Vec3(0, 0, OUTER_RADIUS), Vec3(INNER_RADIUS, 0, 0.5 * OUTER_RADIUS), Vec3(INNER_RADIUS, 0, -0.5 * OUTER_RADIUS), Vec3(0, 0, -OUTER_RADIUS), Vec3(-INNER_RADIUS, 0, -0.5 * OUTER_RADIUS), Vec3(-INNER_RADIUS, 0, 0.5 * OUTER_RADIUS), ] hex = Mesh( vertices=HEX_CORNERS, # line_loop会自动按顺序连接顶点,并闭合最后一个顶点到第一个顶点 mode='line_loop', thickness=10 ) Entity( model=hex, color=color.black ) EditorCamera() app.run()
原理说明
line_loop模式会将所有顶点按顺序串联成一条连续的闭合折线,引擎会自动处理线段端点的重叠衔接,从根源上避免了宽线情况下的断裂问题,比手动定义独立线段更高效且效果更稳定。
内容的提问来源于stack exchange,提问作者klobaska soslaninou
相关产品推荐
相关产品推荐

