advanced example
This commit is contained in:
1 parent
8c0a639fba
commit
6fe57915e8
99 files changed
+1329
-56
No files matched your search
@@ -0,0 +1,38 @@
|
||||
"""Run in Blender: edit a copy of the Mixamo fighter and save an animated .blend."""
|
||||
from pathlib import Path
|
||||
|
||||
import bpy
|
||||
|
||||
root = Path(__file__).resolve().parents[1]
|
||||
bpy.ops.object.select_all(action="SELECT")
|
||||
bpy.ops.object.delete(use_global=False)
|
||||
bpy.ops.import_scene.fbx(filepath=str(root / "build/SkeletalFixture/fighter.fbx"))
|
||||
meshes = [obj for obj in bpy.context.scene.objects if obj.type == "MESH"]
|
||||
rig = next(obj for obj in bpy.context.scene.objects if obj.type == "ARMATURE")
|
||||
original_objects = set(bpy.context.scene.objects)
|
||||
bpy.ops.import_scene.fbx(filepath=str(root / "build/SkeletalFixture/walk.fbx"))
|
||||
animation_rig = next(obj for obj in bpy.context.scene.objects
|
||||
if obj not in original_objects and obj.type == "ARMATURE")
|
||||
rig.animation_data_create()
|
||||
rig.animation_data.action = animation_rig.animation_data.action
|
||||
if hasattr(animation_rig.animation_data, "action_slot"):
|
||||
rig.animation_data.action_slot = animation_rig.animation_data.action_slot
|
||||
for obj in list(bpy.context.scene.objects):
|
||||
if obj not in original_objects:
|
||||
bpy.data.objects.remove(obj, do_unlink=True)
|
||||
collection = bpy.data.collections.new("Character")
|
||||
bpy.context.scene.collection.children.link(collection)
|
||||
for obj in [*meshes, rig]:
|
||||
if obj.name not in collection.objects:
|
||||
collection.objects.link(obj)
|
||||
# A small mesh edit while retaining the imported weights/armature modifier.
|
||||
for vertex in meshes[0].data.vertices:
|
||||
vertex.co.x *= 1.02
|
||||
action = rig.animation_data.action
|
||||
bpy.context.scene.frame_start = int(action.frame_range[0])
|
||||
bpy.context.scene.frame_end = int(action.frame_range[1])
|
||||
bpy.context.scene.frame_set(bpy.context.scene.frame_start)
|
||||
output = root / "build/SkeletalFixture/edited_fighter.blend"
|
||||
output.parent.mkdir(parents=True, exist_ok=True)
|
||||
bpy.ops.wm.save_as_mainfile(filepath=str(output))
|
||||
print("WORKSHOP_SKELETAL_FIXTURE=" + str(output))
|
||||
Reference in new issue
Block a user