From 3609ea43349840720c4cb42ddf645974c3870244 Mon Sep 17 00:00:00 2001 From: ud18010 Date: Tue, 21 Jul 2026 12:38:43 +0800 Subject: [PATCH] =?UTF-8?q?ModelTranslator:=20model=5Fdecimate=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20--max-overlap=20=E5=8F=82=E6=95=B0=EF=BC=88?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C+=E9=80=8F=E4=BC=A0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- Tools/ModelTranslator/model_decimate.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Tools/ModelTranslator/model_decimate.py b/Tools/ModelTranslator/model_decimate.py index d851ae4c..f331dac7 100644 --- a/Tools/ModelTranslator/model_decimate.py +++ b/Tools/ModelTranslator/model_decimate.py @@ -14,10 +14,14 @@ def main(): ap.add_argument("-o", "--out", default=None, help="输出目录(默认源文件同目录)") ap.add_argument("--unwrap", choices=("seam", "smart"), default="seam", help="UV 展开:seam=锐边接缝整岛展开(默认),smart=Smart UV Project") + ap.add_argument("--max-overlap", type=float, default=None, + help="UV 重叠容忍上限(0-1,默认内置 0.08);调高可让更高 seam 角度过门、减少碎岛") ap.add_argument("--blender", default=None) args = ap.parse_args() if args.tris <= 0: ap.error("--tris 必须为正整数") + if args.max_overlap is not None and not (0.0 < args.max_overlap <= 1.0): + ap.error("--max-overlap 必须在 (0, 1] 内") blender = find_blender(args.blender) name = os.path.splitext(os.path.basename(args.input))[0] @@ -25,7 +29,8 @@ def main(): out_fbx = os.path.join(outdir, name + "_low.fbx") s = run_blender_script(blender, "bl_decimate.py", - [args.input, out_fbx, str(args.tris), args.unwrap]) + [args.input, out_fbx, str(args.tris), args.unwrap, + "" if args.max_overlap is None else str(args.max_overlap)]) print("== %s: %d -> %d 面(目标 %d)-> %s" % (s["src"], s["tris_before"], s["tris_after"], s["target"], out_fbx))