Files
workinf_Blender_Wasm/web/tests/fixtures/object-editor-main-snapshots.py
mes123456 f3e21c6b98
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled
chore: checkpoint web Blender migration source, tools and docs
Accumulated uncommitted work: GHOST Web backend, WebGL/GPU web layer,
web workflow engine and protocol, tooling, docs and task records.
Large generated evidence, user-testing archives, build snapshots and
imported test assets remain untracked.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-11-10 11:18:01 +08:00

49 lines
1.9 KiB
Python

import json
import pathlib
import sys
import bpy
def vector(value):
return [round(float(component), 6) for component in value]
directory = pathlib.Path(sys.argv[sys.argv.index("--") + 1])
states = {}
for blend in sorted(directory.glob("*.blend")):
bpy.ops.wm.open_mainfile(filepath=str(blend))
bpy.context.view_layer.update()
states[blend.stem] = {
"objects": sorted(({
"name": obj.name,
"type": obj.type,
"dataType": obj.data.bl_rna.identifier if obj.data else None,
"dataName": obj.data.name if obj.data else None,
"location": vector(obj.location),
"rotation": vector(obj.rotation_euler),
"scale": vector(obj.scale),
"selected": obj.select_get(),
"hideViewport": obj.hide_viewport,
"hideRender": obj.hide_render,
"visible": obj.visible_get(),
"collections": sorted(collection.name for collection in obj.users_collection),
} for obj in bpy.data.objects), key=lambda obj: obj["name"]),
"collections": sorted(({
"name": collection.name,
"hideViewport": collection.hide_viewport,
"hideRender": collection.hide_render,
"objects": sorted(obj.name for obj in collection.objects),
} for collection in bpy.data.collections), key=lambda collection: collection["name"]),
"active": bpy.context.view_layer.objects.active.name
if bpy.context.view_layer.objects.active else None,
"dataBlocks": {
"cameras": sorted(data.name for data in bpy.data.cameras),
"lights": sorted(data.name for data in bpy.data.lights),
"armatures": sorted(data.name for data in bpy.data.armatures),
"meshes": sorted(data.name for data in bpy.data.meshes),
},
}
(directory / "native-object-editor-snapshots.json").write_text(
json.dumps(states, indent=2, sort_keys=True) + "\n")