Added dev test tools and CLAUDE.md
dev/: test asset files, a fake Libreflow IPC server and an end-to-end Scene Manager test (excluded from the extension build). CLAUDE.md: notes for working on the add-on (conventions, testing, design findings, open points). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c238f4db7c
commit
017bdfc2fd
4 files changed
+513
No files matched your search
@@ -0,0 +1,53 @@
|
||||
"""Write the asset files used by fake_libreflow.py into <workdir>/lib.
|
||||
|
||||
blender -b --factory-startup --python dev/make_test_assets.py -- <workdir>
|
||||
|
||||
bob: a rig (COL_bob: armature + meshes), v001 has 1 mesh, v002 has 2.
|
||||
tree: COL_tree, plus an unrelated top-level collection.
|
||||
rock: a single top-level collection not named after the asset (fallback case).
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
import bpy
|
||||
|
||||
WORKDIR = sys.argv[sys.argv.index("--") + 1]
|
||||
|
||||
|
||||
def mesh_object(name):
|
||||
mesh = bpy.data.meshes.new(name)
|
||||
mesh.from_pydata([(0, 0, 0), (1, 0, 0), (0, 1, 0)], [], [(0, 1, 2)])
|
||||
return bpy.data.objects.new(name, mesh)
|
||||
|
||||
|
||||
def write(path, collection_name, meshes=1, rig=False, extra=False):
|
||||
bpy.ops.wm.read_homefile(use_empty=True)
|
||||
scene = bpy.context.scene
|
||||
collection = bpy.data.collections.new(collection_name)
|
||||
scene.collection.children.link(collection)
|
||||
parent = None
|
||||
if rig:
|
||||
parent = bpy.data.objects.new("RIG_" + collection_name, bpy.data.armatures.new("RIG_" + collection_name))
|
||||
collection.objects.link(parent)
|
||||
bpy.context.view_layer.objects.active = parent
|
||||
bpy.ops.object.mode_set(mode="EDIT")
|
||||
bone = parent.data.edit_bones.new("root")
|
||||
bone.tail = (0, 0, 1)
|
||||
bpy.ops.object.mode_set(mode="OBJECT")
|
||||
for index in range(meshes):
|
||||
ob = mesh_object(f"GEO_{collection_name}_{index}")
|
||||
ob.parent = parent
|
||||
collection.objects.link(ob)
|
||||
if extra:
|
||||
scene.collection.children.link(bpy.data.collections.new("WIP_other"))
|
||||
os.makedirs(os.path.dirname(path), exist_ok=True)
|
||||
bpy.ops.wm.save_as_mainfile(filepath=path)
|
||||
|
||||
|
||||
lib = os.path.join(WORKDIR, "lib")
|
||||
write(os.path.join(lib, "bob", "v001", "rig.blend"), "COL_bob", meshes=1, rig=True, extra=True)
|
||||
write(os.path.join(lib, "bob", "v002", "rig.blend"), "COL_bob", meshes=2, rig=True, extra=True)
|
||||
write(os.path.join(lib, "tree", "v001", "model.blend"), "COL_tree", extra=True)
|
||||
write(os.path.join(lib, "rock", "v001", "rock.blend"), "rock_geo")
|
||||
print("Test assets written in", lib)
|
||||
Reference in new issue
Block a user