ModelTranslator: UVPM 弃用启发式(headless 随机崩引擎),只保留旋转15°
系统调试结论:UVPM heuristic 搜索在 headless 下随机崩溃引擎进程 (well1500 3/3、gargoyle 1/2),确定性差;旋转步进无辜。改为只用 rotation_step=15 稳定小提升(gargoyle 52.3→55.6%、well1500 +uvpm 稳定)。 移除 _uvpm_pack_once/重试与 UVPM_HEURISTIC_TIME。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
d44a2fa997
commit
4f18c770c1
@@ -141,8 +141,7 @@ PACK_MARGIN = 0.002 # 岛间距 ≈ 2048 图 4px
|
|||||||
UVPM_EXT = "bl_ext.user_default.uvpackmaster4" # UVPackmaster 4 扩展模块名
|
UVPM_EXT = "bl_ext.user_default.uvpackmaster4" # UVPackmaster 4 扩展模块名
|
||||||
UVPM_PIXEL_MARGIN = 4 # UVPM 岛间距(像素),与 PACK_MARGIN * UVPM_TEX_SIZE 同口径
|
UVPM_PIXEL_MARGIN = 4 # UVPM 岛间距(像素),与 PACK_MARGIN * UVPM_TEX_SIZE 同口径
|
||||||
UVPM_TEX_SIZE = 2048
|
UVPM_TEX_SIZE = 2048
|
||||||
UVPM_ROTATION_STEP = 15 # UVPM 旋转步进(度);比默认 90 更细,利于薄斜条对齐
|
UVPM_ROTATION_STEP = 15 # UVPM 旋转步进(度);比默认 90 更细,利于薄斜条对齐(启发式因引擎崩溃已弃用)
|
||||||
UVPM_HEURISTIC_TIME = 10 # UVPM 启发式搜索秒数上限(默认 0=无限,必须给正值上限)
|
|
||||||
SEAM_ANGLE_SWEEP = (55.0, 45.0, 35.0) # 首选 SEAM_ANGLE_DEG 不过门时依次下探的 seam 角度
|
SEAM_ANGLE_SWEEP = (55.0, 45.0, 35.0) # 首选 SEAM_ANGLE_DEG 不过门时依次下探的 seam 角度
|
||||||
STRETCH_ITERS = 30 # minimize_stretch 松弛迭代次数
|
STRETCH_ITERS = 30 # minimize_stretch 松弛迭代次数
|
||||||
REL_WELD = 1e-4 # 焊接距离占局部包围盒对角线比例(避免 cm/m 单位差异导致绝对阈值失准)
|
REL_WELD = 1e-4 # 焊接距离占局部包围盒对角线比例(避免 cm/m 单位差异导致绝对阈值失准)
|
||||||
@@ -299,7 +298,9 @@ def _uvpm_set(p, name, value, warnings):
|
|||||||
|
|
||||||
def _uvpm_repack(obj, warnings):
|
def _uvpm_repack(obj, warnings):
|
||||||
"""UVPM4 重排当前 UV 布局,成功返回 True;任何失败记警告返回 False,
|
"""UVPM4 重排当前 UV 布局,成功返回 True;任何失败记警告返回 False,
|
||||||
保底布局(pack_islands/smart_project)原样保留。"""
|
保底布局(pack_islands/smart_project)原样保留。rotation_step 调细以利薄斜条对齐。
|
||||||
|
注:UVPM 启发式搜索(heuristic)在 headless 下会随机崩溃引擎进程(Engine process died),
|
||||||
|
确定性/稳定性差,故不启用——只用旋转增强这一稳定杠杆。"""
|
||||||
global _uvpm_failed
|
global _uvpm_failed
|
||||||
if _uvpm_failed:
|
if _uvpm_failed:
|
||||||
return False
|
return False
|
||||||
@@ -312,8 +313,6 @@ def _uvpm_repack(obj, warnings):
|
|||||||
p.pixel_margin_tex_size = UVPM_TEX_SIZE
|
p.pixel_margin_tex_size = UVPM_TEX_SIZE
|
||||||
_uvpm_set(p, "rotation_enable", True, warnings)
|
_uvpm_set(p, "rotation_enable", True, warnings)
|
||||||
_uvpm_set(p, "rotation_step", UVPM_ROTATION_STEP, warnings)
|
_uvpm_set(p, "rotation_step", UVPM_ROTATION_STEP, warnings)
|
||||||
_uvpm_set(p, "heuristic_enable", True, warnings)
|
|
||||||
_uvpm_set(p, "heuristic_search_time", UVPM_HEURISTIC_TIME, warnings)
|
|
||||||
bpy.context.scene.tool_settings.use_uv_select_sync = True
|
bpy.context.scene.tool_settings.use_uv_select_sync = True
|
||||||
bpy.context.view_layer.objects.active = obj
|
bpy.context.view_layer.objects.active = obj
|
||||||
bpy.ops.object.mode_set(mode='EDIT')
|
bpy.ops.object.mode_set(mode='EDIT')
|
||||||
|
|||||||
Reference in New Issue
Block a user