/
Godjent
/
Ply2Mesh
Обзор
Документация
Войти
/
Godjent
/
Ply2Mesh
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
scripts/blender_export.py
56 строк
2 KB
Godjent
Initial commit: Ply2Mesh pipeline, UI, and docs
04 июл 2026, 12:56
04 июл 2026, 12:56
4c25ed0
Код
Авторство
О чём код?
"""Запускается внутри Blender: blender --background --python blender_export.py -- <in> <out> [decimate]. Импортирует геометрию (.ply/.obj), опционально децимирует и пишет .fbx. Версионно-устойчивые вызовы операторов (Blender 4.x/5.x). """ import sys import bpy argv = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else [] if len(argv) < 2: raise SystemExit("usage: blender ... -- <input_mesh> <output_fbx> [decimate_ratio]") inp, outp = argv[0], argv[1] decimate = float(argv[2]) if len(argv) > 2 else 0.0 # чистая сцена bpy.ops.wm.read_factory_settings(use_empty=True) low = inp.lower() if low.endswith(".ply"): try: bpy.ops.wm.ply_import(filepath=inp) except Exception: bpy.ops.import_mesh.ply(filepath=inp) elif low.endswith(".obj"): try: bpy.ops.wm.obj_import(filepath=inp) except Exception: bpy.ops.import_scene.obj(filepath=inp) else: raise SystemExit("unsupported input (need .ply/.obj): " + inp) meshes = [o for o in bpy.context.scene.objects if o.type == "MESH"] if not meshes: raise SystemExit("no mesh imported from: " + inp) if decimate > 0: for ob in meshes: bpy.context.view_layer.objects.active = ob mod = ob.modifiers.new("dec", "DECIMATE") mod.ratio = decimate bpy.ops.object.modifier_apply(modifier=mod.name) _fbx_kwargs = dict( filepath=outp, use_selection=False, path_mode="COPY", apply_unit_scale=True, use_mesh_modifiers=True, ) # экспорт vertex-цвета (Blender 4+/5: colors_type), если параметр поддерживается try: bpy.ops.export_scene.fbx(colors_type="SRGB", **_fbx_kwargs) except TypeError: bpy.ops.export_scene.fbx(**_fbx_kwargs) print("FBX written:", outp)