Add TownSquare scene assets, resource production docs, and model pipeline updates.
Bring in plaza props/prefabs, ZhaoYun source GLB, design originals, and Hunyuan/Blender tooling used to produce them. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
"""把游戏 FBX 整理成混元 GLB 轴向(Y-up)且原点在底面中点。可重复执行。
|
||||
调用:blender -b --factory-startup --python bl_restore_yup.py -- <fbx> [fbx...]
|
||||
"""
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from bl_decimate import ( # noqa: E402
|
||||
export_fbx_source_yup,
|
||||
import_model_objects,
|
||||
prepare_game_export,
|
||||
)
|
||||
|
||||
|
||||
def restore_file(path):
|
||||
import bpy
|
||||
|
||||
bpy.ops.wm.read_factory_settings(use_empty=True)
|
||||
imported = import_model_objects(path)
|
||||
meshes = [o for o in imported if o.type == "MESH"]
|
||||
if not meshes:
|
||||
return {"path": path, "error": "no mesh"}
|
||||
for obj in meshes:
|
||||
prepare_game_export(obj)
|
||||
bpy.ops.object.select_all(action="DESELECT")
|
||||
for obj in meshes:
|
||||
obj.select_set(True)
|
||||
bpy.context.view_layer.objects.active = meshes[0]
|
||||
export_fbx_source_yup(path)
|
||||
verts = meshes[0].data.vertices
|
||||
xs = [v.co.x for v in verts]
|
||||
ys = [v.co.y for v in verts]
|
||||
zs = [v.co.z for v in verts]
|
||||
return {
|
||||
"path": os.path.basename(path),
|
||||
"meshes": len(meshes),
|
||||
"min_y": round(min(ys), 6),
|
||||
"mid_x": round((min(xs) + max(xs)) * 0.5, 6),
|
||||
"mid_z": round((min(zs) + max(zs)) * 0.5, 6),
|
||||
}
|
||||
|
||||
|
||||
def main():
|
||||
argv = sys.argv[sys.argv.index("--") + 1 :]
|
||||
results = []
|
||||
for raw in argv:
|
||||
path = os.path.abspath(raw)
|
||||
if not os.path.isfile(path):
|
||||
results.append({"path": raw, "error": "missing"})
|
||||
continue
|
||||
results.append(restore_file(path))
|
||||
print("MT_SUMMARY " + json.dumps(results, ensure_ascii=False))
|
||||
|
||||
|
||||
if __name__ == "__main__" and "--" in sys.argv:
|
||||
main()
|
||||
Reference in New Issue
Block a user