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>
This commit is contained in:
@@ -284,6 +284,8 @@ def bake_action_iter(
|
||||
*,
|
||||
action,
|
||||
bake_options,
|
||||
pose_bone_names=None,
|
||||
depsgraph=None,
|
||||
):
|
||||
"""
|
||||
A coroutine that bakes action for a single object.
|
||||
@@ -295,6 +297,8 @@ def bake_action_iter(
|
||||
:type action: :class:`bpy.types.Action` | None
|
||||
:param bake_options: Options for baking.
|
||||
:type bake_options: :class:`anim_utils.BakeOptions`
|
||||
:param pose_bone_names: Optional explicit pose channel subset, independent of selection.
|
||||
:param depsgraph: Optional caller's evaluated dependency graph for visual sampling.
|
||||
:return: an action or None
|
||||
:rtype: :class:`bpy.types.Action` | None
|
||||
"""
|
||||
@@ -384,11 +388,15 @@ def bake_action_iter(
|
||||
# itself cannot be animated.
|
||||
continue
|
||||
|
||||
bone_names = None if pose_bone_names is None else frozenset(pose_bone_names)
|
||||
|
||||
def pose_frame_info(obj):
|
||||
matrix = {}
|
||||
bbones = {}
|
||||
custom_props = {}
|
||||
for name, pbone in obj.pose.bones.items():
|
||||
if bone_names is not None and name not in bone_names:
|
||||
continue
|
||||
if bake_options.do_visual_keying:
|
||||
# Get the final transform of the bone in its own local space...
|
||||
matrix[name] = obj.convert_space(
|
||||
@@ -461,7 +469,8 @@ def bake_action_iter(
|
||||
if frame is None:
|
||||
break
|
||||
if bake_options.do_pose:
|
||||
pose_info.append((frame, *pose_frame_info(obj)))
|
||||
sample_obj = obj.evaluated_get(depsgraph) if depsgraph is not None else obj
|
||||
pose_info.append((frame, *pose_frame_info(sample_obj)))
|
||||
armature_info.append((frame, armature_frame_info(obj)))
|
||||
if bake_options.do_object:
|
||||
obj_info.append((frame, *obj_frame_info(obj)))
|
||||
@@ -521,6 +530,8 @@ def bake_action_iter(
|
||||
)
|
||||
|
||||
for name, pbone in obj.pose.bones.items():
|
||||
if bone_names is not None and name not in bone_names:
|
||||
continue
|
||||
if bake_options.only_selected and not pbone.select:
|
||||
continue
|
||||
|
||||
|
||||
Reference in New Issue
Block a user