初始化项目,由ModelHub XC社区提供模型
Model: megamindbrian/josiefied-qwen-spatial-engine Source: Original Platform
This commit is contained in:
148
model-convert.py
Normal file
148
model-convert.py
Normal file
@@ -0,0 +1,148 @@
|
||||
import bpy
|
||||
# from import_bsp import MD3
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# bpy.context.window.cursor_warp(10, 10)
|
||||
# current_file_name = bpy.path.basename(file_path)
|
||||
bpy.ops.object.select_all(action="SELECT")
|
||||
bpy.ops.object.delete()
|
||||
# bpy.ops.render.view_show('INVOKE_DEFAULT')
|
||||
|
||||
# usage:
|
||||
|
||||
print(f'Starting {sys.argv[4]}...')
|
||||
|
||||
extname = '.map'
|
||||
if ".map" in sys.argv[4]:
|
||||
bpy.ops.import_scene.id_map(filepath=sys.argv[4])
|
||||
elif ".bsp" in sys.argv[4]:
|
||||
extname = '.bsp'
|
||||
bpy.ops.import_scene.id3_bsp(
|
||||
filepath=sys.argv[4],
|
||||
preset="BRUSHES",
|
||||
vert_map_packing="Keep"
|
||||
)
|
||||
elif ".obj" in sys.argv[4]:
|
||||
extname = '.obj'
|
||||
bpy.ops.wm.obj_import(filepath=sys.argv[4])
|
||||
|
||||
|
||||
bpy.context.view_layer.update()
|
||||
|
||||
# https://github.com/SomaZ/Blender_BSP_Importer/blob/main/import_bsp/UI.py#L362
|
||||
# bpy.ops.export_scene.id3_md3(
|
||||
# filepath = file,
|
||||
# preset = "MATERIALS",
|
||||
# only_selected = True,
|
||||
# limits = "LEGACY",
|
||||
# start_frame = 0,
|
||||
# end_frame = 0,
|
||||
# individual = False # use model space coordinates instead of world space
|
||||
# )
|
||||
|
||||
try:
|
||||
bpy.ops.export_scene.id3_md3(
|
||||
filepath = sys.argv[4].replace(extname, '.md3'),
|
||||
preset = "MATERIALS",
|
||||
only_selected = False,
|
||||
limits = "STUPID",
|
||||
start_frame = 0,
|
||||
end_frame = 0,
|
||||
individual = False # use model space coordinates instead of world space
|
||||
)
|
||||
except RuntimeError as err:
|
||||
if not "Model exceeds MD3 bounds" in str(err):
|
||||
raise RuntimeError
|
||||
except Exception as err:
|
||||
if not "BSP format not supported" in str(err):
|
||||
raise err
|
||||
|
||||
for ob in bpy.data.objects:
|
||||
ob.scale = (0.5,0.5,0.5)
|
||||
bpy.ops.object.transform_apply(scale=True)
|
||||
|
||||
bpy.context.view_layer.update()
|
||||
|
||||
try:
|
||||
bpy.ops.export_scene.id3_md3(
|
||||
filepath = sys.argv[4].replace(extname, '-half.md3'),
|
||||
preset = "MATERIALS",
|
||||
only_selected = False,
|
||||
limits = "STUPID",
|
||||
start_frame = 0,
|
||||
end_frame = 0,
|
||||
individual = False # use model space coordinates instead of world space
|
||||
)
|
||||
except RuntimeError as err:
|
||||
if not "Model exceeds MD3 bounds" in str(err):
|
||||
raise err
|
||||
except Exception as err:
|
||||
if not "BSP format not supported" in str(err):
|
||||
raise err
|
||||
|
||||
for ob in bpy.data.objects:
|
||||
ob.scale = (0.25,0.25,0.25)
|
||||
bpy.ops.object.transform_apply(scale=True)
|
||||
|
||||
bpy.context.view_layer.update()
|
||||
|
||||
# MD3.ExportMD3(
|
||||
# sys.argv[4].replace(extname, '-quarter.md3'),
|
||||
# bpy.data.objects,
|
||||
# range(0, 1),
|
||||
# False,
|
||||
# True,
|
||||
# 100000,
|
||||
# 1024)
|
||||
|
||||
try:
|
||||
bpy.ops.export_scene.id3_md3(
|
||||
filepath = sys.argv[4].replace(extname, '-quarter.md3'),
|
||||
preset = "MATERIALS",
|
||||
only_selected = False,
|
||||
limits = "STUPID",
|
||||
start_frame = 0,
|
||||
end_frame = 0,
|
||||
individual = False # use model space coordinates instead of world space
|
||||
)
|
||||
except RuntimeError as err:
|
||||
if not "Model exceeds MD3 bounds" in str(err):
|
||||
raise err
|
||||
except Exception as err:
|
||||
if not "BSP format not supported" in str(err):
|
||||
raise err
|
||||
|
||||
|
||||
for ob in bpy.data.objects:
|
||||
ob.scale = (0.125,0.125,0.125)
|
||||
bpy.ops.object.transform_apply(scale=True)
|
||||
|
||||
bpy.context.view_layer.update()
|
||||
|
||||
try:
|
||||
bpy.ops.export_scene.id3_md3(
|
||||
filepath = sys.argv[4].replace(extname, '-eigth.md3'),
|
||||
preset = "MATERIALS",
|
||||
only_selected = False,
|
||||
limits = "STUPID",
|
||||
start_frame = 0,
|
||||
end_frame = 0,
|
||||
individual = False # use model space coordinates instead of world space
|
||||
)
|
||||
except RuntimeError as err:
|
||||
if not "Model exceeds MD3 bounds" in str(err):
|
||||
raise err
|
||||
except Exception as err:
|
||||
if not "BSP format not supported" in str(err):
|
||||
raise err
|
||||
|
||||
|
||||
# bpy.ops.wm.revert_mainfile()
|
||||
|
||||
print(f'Done {sys.argv[4]}...')
|
||||
# bpy.ops.wm.call_menu(name="FILE_quit")
|
||||
# bpy.ops.file.reset_recent()
|
||||
bpy.ops.wm.window_close()
|
||||
bpy.ops.wm.quit_blender()
|
||||
sys.exit()
|
||||
Reference in New Issue
Block a user