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>
49 lines
1.9 KiB
Python
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")
|