diff --git a/Tools/ModelTranslator/bl_uvgate.py b/Tools/ModelTranslator/bl_uvgate.py index 92963415..d1390217 100644 --- a/Tools/ModelTranslator/bl_uvgate.py +++ b/Tools/ModelTranslator/bl_uvgate.py @@ -7,6 +7,13 @@ import sys sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +def seam_fallback_label(mode): + """回退产物标注:seam 系模式改 seam_fallback(保留 +uvpm 等后缀)。""" + if mode.startswith("seam"): + return "seam_fallback" + mode[len("seam"):] + return mode + + def main(): import bpy import json @@ -42,8 +49,7 @@ def main(): warnings.append("%s 输出无 UV,回退 seam" % mode_label) m = _do_unwrap(obj, "seam", warnings) # 内部自带 smart 回退 - if m["mode"] == "seam": - m["mode"] = "seam_fallback" + m["mode"] = seam_fallback_label(m["mode"]) bpy.ops.object.select_all(action='DESELECT') obj.select_set(True) bpy.ops.export_scene.fbx(filepath=os.path.abspath(fbx), use_selection=True, diff --git a/Tools/ModelTranslator/tests/test_bl_uvgate.py b/Tools/ModelTranslator/tests/test_bl_uvgate.py new file mode 100644 index 00000000..583bebb4 --- /dev/null +++ b/Tools/ModelTranslator/tests/test_bl_uvgate.py @@ -0,0 +1,23 @@ +import os +import sys +import unittest + +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +import bl_uvgate as bg + + +class TestSeamFallbackLabel(unittest.TestCase): + def test_plain_seam(self): + self.assertEqual(bg.seam_fallback_label("seam"), "seam_fallback") + + def test_seam_with_uvpm_suffix(self): + self.assertEqual(bg.seam_fallback_label("seam+uvpm"), "seam_fallback+uvpm") + + def test_smart_fallback_untouched(self): + self.assertEqual(bg.seam_fallback_label("smart_fallback"), "smart_fallback") + self.assertEqual(bg.seam_fallback_label("smart_fallback+uvpm"), + "smart_fallback+uvpm") + + +if __name__ == "__main__": + unittest.main()