Animation¶
256 tools. Back to the index.
add_anim_bone_track¶
Destructive, idempotent.
Add the animation track of one skeleton bone to a UAnimSequence through its data controller, filled with num_keys identity keys (zero translation, identity rotation, unit scale), as one undo step, then save the package. An existing track stays but its keys are replaced (idempotent). A bone_name the sequence's skeleton does not have is an error and nothing is written; an omitted bone_name targets the root bone. A missing sequence or skeleton is an error and a failed save makes success false, with saved=false and save_error. Real poses: set_anim_bone_track_keys; inverse: remove_anim_bone_track.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Asset path of the UAnimSequence. |
bone_name |
string | no | Name of a bone of the skeleton of the sequence; omitted or empty means the root bone. |
num_keys |
number | no | Number of identity keys to write, rounded, minimum 1 (default 2); not checked against the frame count of the sequence. |
Returns: { anim_sequence_path, bone_name, num_bone_tracks, num_keys, success, saved, save_error, message }
add_anim_composite_segment¶
Additive.
Append an FAnimSegment referencing a real UAnimSequence to a UAnimComposite's AnimationTrack, then recompute its length. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
composite_path |
string | yes | Object path of the UAnimComposite (e.g. "/Game/Animation/AC_Example"). |
animation_path |
string | yes | Object path of the UAnimSequence to reference. |
start_pos |
number | no | Segment start position; ignored after auto-stacking (default 0) |
play_rate |
number | no | Segment play rate (default 1.0) |
loop_count |
number | no | Segment loop count, minimum 1 (default 1) |
Returns: { composite_path, animation_path, num_segments, composite_length, segments, success, saved, save_error }
add_anim_conduit¶
Additive, idempotent.
Add a conduit node named conduit_name to an existing state machine of an Animation Blueprint (a missing blueprint or machine is an error; create the machine with add_anim_state_machine), then mark the blueprint structurally modified and save it without compiling. Idempotent by name: an existing conduit is returned unchanged (already_existed true). The conduit is placed unconnected: link it to states with add_anim_transition; remove_anim_conduit undoes it. Refused while PIE runs unless force=true; a failed save is an error, the change kept in memory.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path to the UAnimBlueprint asset |
machine_name |
string | yes | Name of the target state machine |
conduit_name |
string | yes | Name for the new conduit |
Returns: { anim_blueprint_path: string, machine_name: string, conduit_name: string, node_class: string, conduit_created: bool, already_existed: bool, saved: bool, conduit_count: int, save_error?: string }
add_anim_curve_name¶
Additive, idempotent.
Register a curve name as curve metadata on a USkeleton (USkeleton::AddCurveMetaData) in an undo transaction, then save the skeleton package. Idempotent: a name already registered is a success with added=false, already_existed=true and saved=false, and the skeleton is neither modified nor saved. It adds no keys -- to put a keyed float curve on a UAnimSequence use add_anim_float_curve; remove_anim_curve_name is the inverse. An unknown skeleton is an error and a failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
curve_name |
string | yes | The curve name to add (e.g. 'Curve_Example'). |
skeleton_path |
string | no | Asset path of the USkeleton to edit (/Game/...); when omitted or empty the engine asset /Engine/EngineMeshes/SkeletalCube_Skeleton is edited and saved. |
Returns: { skeleton_path, curve_name, present, added, already_existed, curve_count, saved, save_error, message }
add_anim_float_curve¶
Destructive, idempotent.
Add a float curve (Editable flag) to a UAnimSequence through its data controller and set its keys from [time, value] pairs as linear keys with auto tangents, in one undo step, then save the package. An existing float curve of that name is kept and its keys are replaced (idempotent); one that already holds exactly those keys is a success with changed=false and saved=false, and nothing is written or saved. curve_found confirms the curve and num_keys counts the keys sent. A missing sequence is an error and a failed save makes success false, with saved=false and save_error. Rekey: set_anim_curve_keys; transform curves: add_anim_transform_curve; a skeleton-only name: add_anim_curve_name; read back: get_anim_curve_data.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Asset path of the UAnimSequence. |
curve_name |
string | yes | Float curve name to add. |
keys |
array | no | JSON array of [time, value] pairs (default [[0,0],[1,1]]) |
Returns: { anim_sequence_path, curve_name, num_float_curves, num_keys, curve_found, changed, success, saved, save_error, message }
add_anim_graph_node¶
Additive.
Place a UAnimGraphNode_* (by class name) into an AnimGraph or a state's inner graph. Saves the ABP but does NOT recompile it -- run compile_anim_blueprint after your edits for runtime effect.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path or name of the UAnimBlueprint. |
node_class |
string | yes | AnimGraphNode class: short name (e.g. "AnimGraphNode_Slot", "AnimGraphNode_PoseSearchHistoryCollector") or full path. |
graph_name |
string | no | Target graph; omit/"AnimGraph" for the top-level AnimGraph, or a nested name like "MainSM > Idle". |
x |
number | no | Node X position (optional, default 0). |
y |
number | no | Node Y position (optional, default 0). |
Returns: { node_id, node_class, graph_name, pins[], saved } (NodeToJson of the created node)
add_anim_notify¶
Additive.
Add an instance of a UAnimNotify class at a time on a UAnimSequence notify track (created when missing) and save the sequence; each call adds another event, and an unknown class is an error. Returns time and success. For montages use add_montage_notify; for durations add_anim_notify_state. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
animation_path |
string | yes | Full asset path to the UAnimSequence. |
notify_name |
string | yes | Class name of a loaded UAnimNotify subclass, tried as given and then with the AnimNotify_ prefix (e.g. 'AN_Footstep', or "PlaySound" for AnimNotify_PlaySound); a Blueprint notify goes by its generated name ending in _C. |
time |
number | no | Notify trigger time in seconds (default 0) |
track_name |
string | no | Notify track name (default 'Default') |
Returns: { animation_path, notify_name, time, success, saved, save_error, message }
add_anim_notify_name¶
Additive.
Register a notify name in the AnimationNotifies list of a USkeleton inside an undo transaction and save the skeleton package; returns present, notify_count and saved. A name already registered is a success with added=false, already_existed=true and saved=false, and the skeleton is neither modified nor saved. Without skeleton_path it edits /Engine/EngineMeshes/SkeletalCube_Skeleton. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
notify_name |
string | yes | The notify name to register (e.g. 'Footstep'). |
skeleton_path |
string | no | Asset path of the USkeleton to edit (/Game/...); when omitted or empty the engine asset /Engine/EngineMeshes/SkeletalCube_Skeleton is edited and saved. |
Returns: { skeleton_path, notify_name, present, added, already_existed, notify_count, saved, save_error, message }
add_anim_notify_state¶
Additive.
Add an instance of a UAnimNotifyState class with a start time and duration to a UAnimSequence notify track (created when missing) and save the sequence; each call adds another event, and unknown classes are refused. Returns start_time, duration and success. For instant notifies use add_anim_notify. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
animation_path |
string | yes | Full asset path to the UAnimSequence. |
notify_state_name |
string | yes | Class name of a loaded UAnimNotifyState subclass, tried as given and then with the AnimNotifyState_ prefix (e.g. "Trail" for AnimNotifyState_Trail); a Blueprint notify state goes by its generated name ending in _C. |
start_time |
number | no | Notify state start time in seconds (default 0) |
duration |
number | no | Notify state duration in seconds (default 1.0) |
track_name |
string | no | Notify track name (default 'Default') |
Returns: { animation_path, notify_state_name, start_time, duration, success, saved, save_error, message }
add_anim_slot_group¶
Additive, idempotent.
Add an animation slot group (the groups montage slots belong to) to a USkeleton asset and save it. Idempotent: an existing group returns added false and changes nothing, but the skeleton is still saved; a failed save returns success false. Returns added and slot_group_count.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | USkeleton asset path, e.g. "/Game/Characters/SK_Hero_Skeleton". |
group_name |
string | yes | Name of the slot group to add, e.g. "WeaponGroup". |
Returns: { asset_path: string, group_name: string, added: bool, slot_group_count: int, saved: bool }
add_anim_state¶
Additive.
Add a state node to a state machine inside an Animation Blueprint.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path to the UAnimBlueprint asset |
machine_name |
string | yes | Name of the target state machine |
state_name |
string | yes | Name for the new state |
Returns: { anim_blueprint_path: string, machine_name: string, state_name: string, node_class: string, state_created: bool, already_existed: bool, saved: bool, state_count: int, save_error?: string }
add_anim_state_machine¶
Additive, idempotent.
Add a state machine node named machine_name to the top-level AnimGraph of an Animation Blueprint, then mark the blueprint structurally modified and save it without compiling (compile_anim_blueprint gives runtime effect). Idempotent by name: an existing machine is returned unchanged (already_existed true). The node starts with only its entry and is not connected to the Output Pose: wire it with connect_anim_graph_pins, fill it with add_anim_state, add_anim_conduit and add_anim_transition, or build it in one call with build_animation_state_machine. Refused while PIE runs unless force=true; a failed save is an error, the change kept in memory.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path to the UAnimBlueprint asset |
machine_name |
string | yes | Name for the new state machine |
Returns: { anim_blueprint_path: string, machine_name: string, node_class: string, state_machine_graph: string, state_machine_created: bool, already_existed: bool, saved: bool, state_machine_count: int, save_error?: string }
add_anim_sync_marker¶
Destructive.
Append an authored sync marker (name and time, on marker track 0) to a UAnimSequence in an undo transaction and save it; duplicates are not checked, nor is the time checked against the sequence length. Returns num_sync_markers. Remove with remove_anim_sync_marker. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Asset path of the UAnimSequence. |
marker_name |
string | yes | Name of the sync marker (e.g. "LeftFootDown"); sequences in one sync group line up markers that share a name. |
time |
number | no | Sync marker time in seconds (default 0.5) |
Returns: { anim_sequence_path, marker_name, time, num_sync_markers, success, saved, save_error, message }
add_anim_transform_curve¶
Additive.
Add a transform curve (RCT_Transform) to a UAnimSequence via the data controller. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Object path of the UAnimSequence. |
curve_name |
string | yes | Name of the transform curve to add. |
keys |
array | no | JSON array of {time, location:[x,y,z], rotation:[pitch,yaw,roll], scale:[x,y,z]} objects |
Returns: { anim_sequence_path, curve_name, num_transform_curves, num_keys, keys_set, success, saved, save_error }
add_anim_transition¶
Additive.
Create a source->target transition in an anim state machine.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path to the UAnimBlueprint asset |
machine_name |
string | yes | Name of the state machine that owns both states |
source_state |
string | yes | Name of the source state (transition origin) |
target_state |
string | yes | Name of the target state (transition destination) |
crossfade_duration |
number | no | Optional blend duration in seconds (default 0.2) |
blend_mode |
string | no | Optional EAlphaBlendOption name, e.g. Linear, Cubic, HermiteCubic |
bidirectional |
boolean | no | Optional; also allow the reverse target->source transition |
priority_order |
number | no | Optional evaluation priority (higher wins) |
Returns: { anim_blueprint_path: string, machine_name: string, source_state: string, target_state: string, transition_created: bool, already_existed: bool, crossfade_duration: number, blend_mode: string, bidirectional: bool, priority_order: int, transition_count: int, saved: bool, save_error?: string }
add_animation_asset_to_pose_search_database¶
Additive.
Append an animation asset to a UPoseSearchDatabase as an enabled entry over its full range, then save the database; an asset already in it is left alone (already_existed=true). The asset type is not checked, and the search index is not rebuilt: run build_pose_search_database_index afterwards.
| Parameter | Type | Required | Description |
|---|---|---|---|
database_path |
string | yes | Asset path of the UPoseSearchDatabase (required). |
animation_asset_path |
string | yes | Asset path of a UAnimSequenceBase / UAnimComposite / UAnimMontage / UBlendSpace (required). |
Returns: { database_path, animation_asset_path, animation_asset_count, added, already_existed, saved, message }
add_blendspace_sample¶
Additive.
Add a blend sample (animation + blend position) to a BlendSpace. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
blendspace_path |
string | yes | Full asset path to the UBlendSpace (e.g. |
animation_path |
string | yes | Full asset path to the UAnimSequence to use as sample. |
blend_value |
any | no | Blend position: single number (1D) or array of up to 3 numbers (default 0) |
Returns: { blendspace_path, sample_index, num_samples, success, saved, save_error, message }
add_bone¶
Additive, idempotent.
Add a bone named bone_name to the reference skeleton of a USkeleton asset under parent_name (omitted or empty: an extra root bone), with local_transform relative to the parent (a zero or missing scale becomes 1), then save the skeleton. Idempotent by name: an existing bone is returned (added false, already_existed true) without checking its parent or saving. An unknown parent is an error, and so is a failed save. Only the skeleton changes: skeletal meshes using it get no new bone, and there is no undo entry. No commit_bone_changes is needed; set_bone_parent and set_bone_transform edit bones, add_virtual_bone adds virtual ones.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | Path to the USkeleton asset |
bone_name |
string | yes | Name for the new bone; when a bone of that name already exists nothing changes (added false) |
parent_name |
string | no | Parent bone name, or empty/null for a new root bone |
local_transform |
object | no | Optional {location:[x,y,z], rotation:[p,y,r], scale:[x,y,z]}, defaults to identity |
Returns: { asset_path, bone_name, bone_index, parent_index, bone_count, added, already_existed, saved, op: "add_bone" }
add_ik_goal¶
Additive, idempotent.
Add an IK goal to an IK Rig, associated with a bone, through the IK Rig controller (one undo transaction), then save the asset. If bone_name is omitted, a leaf bone of the rig's skeletal mesh is picked automatically. Idempotent: a goal of that name on the same bone is not re-created but returned with already_exists=true, saved=false and a note, and nothing is saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Path to the UIKRigDefinition asset |
goal_name |
string | yes | Unique name for the new goal |
bone_name |
string | no | Optional bone name to attach the goal to |
Returns: { asset_path: string, goal_name: string, bone_name: string, goal_count: int, saved: bool, already_exists?: bool, save_error?: string, note?: string }
add_ik_retarget_chain¶
Additive.
Add a retarget bone chain from start_bone to end_bone, optionally tied to an IK goal, to an IK Rig asset and save it. Both bones must exist in the skeleton of the rig; the chain name is made unique, so read chain_name back. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | IK Rig (UIKRigDefinition) asset path, e.g. "/Game/Retarget/IK_Hero". |
chain_name |
string | yes | Name for the new retarget chain (uniquified by the engine) |
start_bone |
string | yes | First bone of the chain; must exist in the skeleton of the rig. |
end_bone |
string | yes | Last bone of the chain; must exist in the skeleton of the rig. |
goal_name |
string | no | IK goal to attach the chain to (default none); not checked against the goals of the rig. |
Returns: { asset_path: string, chain_name: string, start_bone: string, end_bone: string, goal_name: string, chain_count: int, saved: bool, save_error?: string }
add_ik_solver¶
Additive.
Add an IK solver to the bottom of an IK Rig's solver stack. Solver type is one of "FullBodyIK", "Limb", "Pole", "BodyMover", "SetTransform" or "StretchLimb" (default "FullBodyIK"). Unknown types are rejected with an honest error. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Path to the UIKRigDefinition asset |
solver_type |
string | no | Optional solver type: "FullBodyIK"|"Limb"|"Pole"|"BodyMover"|"SetTransform"|"StretchLimb"; defaults to "FullBodyIK" |
Returns: { asset_path: string, solver_index: int, solver_type: string, solver_struct: string, solver_count: int, saved: bool, save_error?: string }
add_montage_notify¶
Destructive.
Append a name-only notify event (no UAnimNotify class) to a UAnimMontage at an absolute trigger time on notify track 0 and save the montage; every call appends another event. Returns trigger_time, notify_count and the notifies name list. Remove with remove_montage_notify. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
notify_name |
string | yes | Name of the notify event (e.g. 'Footstep'). |
trigger_time |
number | no | Absolute notify trigger time in seconds (default 0) |
Returns: { montage_path, notify_name, trigger_time, notify_count, notifies, added, saved, save_error, message }
add_montage_section¶
Additive.
Add a composite section to a UAnimMontage at an absolute start time, or move the existing section of that name there; it does not link sections (use link_montage_sections). Saves the montage in an undo transaction and returns start_time, section_count, sections, already_existed and added (true only for a new section). A section of that name already at that start time is a success with changed=false and saved=false, and the montage is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
section_name |
string | yes | Name of the section to add (e.g. 'Loop'). |
start_time |
number | no | Absolute section start time in seconds (default 0) |
Returns: { montage_path, section_name, start_time, section_count, sections, already_existed, added, changed, saved, save_error, message }
add_montage_segment¶
Additive.
Append an animation segment referencing a real UAnimSequence to a montage slot. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Object path of the UAnimMontage (e.g. "/Game/MyGame/AM_Example"). |
anim_sequence_path |
string | yes | Object path of the UAnimSequence to reference. |
slot_name |
string | no | Montage slot name (e.g. DefaultSlot) |
play_rate |
number | no | Segment play rate (default 1.0) |
loop_count |
number | no | Segment loop count, minimum 1 (default 1) |
Returns: { montage_path, anim_sequence_path, slot_name, segment_count, montage_length, play_rate, loop_count, success, saved, save_error }
add_montage_slot¶
Additive.
Add an empty slot animation track with the given slot name to a UAnimMontage in an undo transaction and save it; an existing slot of that name is a success with added=false, already_existed=true and saved=false, and the montage is neither modified nor saved. Returns slot_count, the slots list and present. Fill it with add_montage_segment; inverse: remove_montage_slot. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
slot_name |
string | yes | Name of the slot track to add (e.g. 'UpperBody'). |
Returns: { montage_path, slot_name, slot_count, slots, present, already_existed, added, saved, save_error, message }
add_motion_warping_component¶
Additive, idempotent.
Attach a UMotionWarpingComponent to an actor in the editor world. Idempotent: if the actor already has one, returns the existing instance with already_existed:true instead of creating a duplicate. The component is NewObject<UMotionWarpingComponent>(Actor, FName("MotionWarping")) followed by RegisterComponent() so it shows up in GetComponents() immediately. The owning world's level is marked dirty so the editor persists the change on save; no explicit SavePackage call (avoids the noise of saving a transient actor out of an editor world).
| Parameter | Type | Required | Description |
|---|---|---|---|
actor_path |
string | yes | Full editor path (e.g. "/Game/Maps/Test.Test:PersistentLevel.ActorName") or short name of the actor. |
Returns: { actor_path: string, component_path: string, already_existed: bool }
add_notify_track¶
Additive.
Add a named notify TRACK to a UAnimSequence (the track itself, not events on it) in an undo transaction and save it. A track of that name already there is a success with already_existed=true and nothing saved; a failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
animation_path |
string | yes | Full asset path to the UAnimSequence. |
track_name |
string | yes | Notify track name to add. |
color |
string | no | Optional track color as an [r,g,b] or [r,g,b,a] float array (default white). |
Returns: { animation_path, track_name, track_names, track_count, already_existed, saved, save_error, message }
add_pose_search_channel_to_schema¶
Destructive.
Add a feature channel of channel_type to a UPoseSearchSchema asset or, when a channel of that class is already there, overwrite its Weight instead (already_existed=true); then finalize via PostEditChange and save. Returns schema_cardinality and channel_count; success stays true if the save fails: read saved.
| Parameter | Type | Required | Description |
|---|---|---|---|
schema_path |
string | yes | Asset path of the UPoseSearchSchema (required). |
channel_type |
string | yes | One of 'Pose', 'Trajectory', 'Position', 'Velocity', 'Heading' (required). |
weight |
number | no | Channel weight (float); default 1.0, which also resets the weight of an existing channel when omitted |
Returns: { schema_path, channel_type, channel_class, weight, schema_cardinality, channel_count, added, already_existed, weight_updated, saved, message }
add_pose_search_roled_skeleton¶
Destructive, idempotent.
Append a roled FPoseSearchRoledSkeleton (Skeleton + optional MirrorDataTable under a Role) to a UPoseSearchSchema for multi-character search. Idempotent on role: if an entry already exists under that role it no-ops (added=false, already_existed=true) instead of pushing a duplicate -- use set_pose_search_schema_skeleton if you actually want to REPLACE the skeleton bound to a role.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | yes | Asset path of the target UPoseSearchSchema (required). |
skeleton_path |
string | yes | Asset path of the USkeleton to bind under the role (required). |
role |
string | yes | Role name (FName) identifying the entry within a multi-character schema (required; empty = default/None role). |
mirror_data_table_path |
string | no | Asset path of a UMirrorDataTable to bind under the role (optional; empty = none). |
Returns: { asset_path, role, skeleton_path, mirror_data_table_path, roled_skeleton_count, added, already_existed, saved }
add_pose_to_pose_asset¶
Destructive.
Add a pose copied from the skeleton reference pose to a UPoseAsset under the given name (a pose of that name is replaced) and save it; refused when the asset has no skeleton. Returns num_poses, num_tracks and already_existed. For poses from animation frames use create_pose_asset_from_anim_sequence. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
pose_asset_path |
string | yes | Path to the UPoseAsset (e.g. '/Game/MyGame/Pose_Example'). |
pose_name |
string | yes | Name of the pose to add (e.g. 'RefPose_A'). |
Returns: { pose_asset_path, pose_name, num_poses, num_tracks, present, added, already_existed, saved, save_error, message }
add_retargeter_op¶
Additive.
Add a retarget op to the op stack of an IK Retargeter asset through its controller (one undo transaction), then save the asset; op_index and op_name are where and how the engine placed it. Default type: FK Chains op. An unknown op type, or a singleton op type the stack already has, is an error. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_retargeter_path |
string | yes | Path to the UIKRetargeter asset |
op_type |
string | no | Optional op class path (default "/Script/IKRig.IKRetargetFKChainsOp") |
Returns: { asset_path: string, op_index: int, op_name: string, op_type: string, op_count: int, saved: bool, save_error?: string }
add_rig_bone¶
Additive.
Add a bone to the hierarchy of a Control Rig Blueprint, under parent_name or at the root, then compile and save the blueprint. The engine keeps names unique, so element_key is the name the bone really got. Refused while PIE runs unless force is set.
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Control Rig Blueprint asset path, e.g. "/Game/Rigs/CR_Hero" |
bone_name |
string | yes | Name of the new bone |
parent_name |
string | no | Existing BONE to parent the new bone under; omitted or empty puts it at the root |
location |
array | no | Optional [x, y, z] world location for the new bone. |
rotation |
array | no | Optional [pitch, yaw, roll] world rotation for the new bone. |
scale |
array | no | Optional [x, y, z] scale for the new bone. |
Returns: { asset_path: string, element_key: string, element_type: string, parent: string, bone_count: int, null_count: int, control_count: int, curve_count: int, other_count: int, total: int, saved: bool, save_error: string }
add_rig_control¶
Additive.
Add a control to a Control Rig's hierarchy. Control types: Bool, Float, ScaleFloat, Integer, Vector2D, Position, Scale, Rotator, Transform, EulerTransform (defaults to Float).
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Path to the UControlRigBlueprint asset |
control_name |
string | yes | Name of the new control |
control_type |
string | no | One of: "bool", "float", "scalefloat", "integer", "int", "vector2d", "position", "scale", "rotator", "transform", "eulertransform" (default "float"). |
parent_name |
string | no | Optional existing element name to parent the new control under. |
parent_type |
string | no | Element type of the parent (default "Null"). |
Returns: { asset_path: string, element_key: string, element_type: string, control_type: string, control_type_recognized: bool, parent: string, bone_count: int, null_count: int, control_count: int, curve_count: int, other_count: int, total: int, saved: bool, save_error: string }
add_rig_null¶
Additive.
Add a null (space) to a Control Rig's hierarchy.
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Path to the UControlRigBlueprint asset |
null_name |
string | yes | Name of the new null |
parent_name |
string | no | Optional existing element name to parent the new null under. |
parent_type |
string | no | Element type of the parent ("Bone" default, "Null"/"Control"/etc). |
location |
array | no | Optional [x, y, z] world location for the new null. |
Returns: { asset_path: string, element_key: string, element_type: string, parent: string, bone_count: int, null_count: int, control_count: int, curve_count: int, other_count: int, total: int, saved: bool, save_error: string }
add_rigvm_link¶
Destructive.
Link an output pin to an input pin in the main RigVM graph of a Control Rig Blueprint (URigVMController::AddLink, no undo entry); a link already into that input pin, or out of an execute output pin, is replaced. Pins are NodeName.PinName paths as get_rigvm_graph lists them. A new link is then compiled and saved; a failed link (pins missing, incompatible or already linked) is an error with linked and saved false, and nothing is compiled or saved. Refused during PIE unless force. Add nodes with add_rigvm_node and set unlinked inputs with set_rigvm_pin_default; Blueprint graphs use connect_pins.
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Path to the UControlRigBlueprint asset |
source_pin |
string | yes | Output pin path NodeA.PinName |
target_pin |
string | yes | Input pin path NodeB.PinName |
Returns: { asset_path: string, source_pin: string, target_pin: string, linked: bool, link_count: int, saved: bool, save_error: string }
add_rigvm_node¶
Additive.
Add a rig-unit node to a Control Rig's RigVM solver graph
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Path to the UControlRigBlueprint asset |
node_type |
string | yes | BeginExecution, PrepareForExecution, GetTransform, SetTransform, AimBone, or TwoBoneIKSimple |
node_name |
string | no | Optional explicit node name |
position |
array | no | Optional [x, y] editor graph position |
Returns: { asset_path: string, node_name: string, node_title: string, node_type: string, pin_count: int, node_count: int, saved: bool, already_exists: bool, save_error: string }
add_skeletal_mesh_lod¶
Additive.
Append a new LOD entry to a skeletal mesh (clone of LOD 0 build settings).
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
screen_size |
number | no | Optional override for ScreenSize.Default of the new LOD (default 0.5) |
Returns: { skeletal_mesh_path: string, lod_index: int, lod_count: int, screen_size: float, added: bool, note: string }
add_skeletal_mesh_socket¶
Additive.
Add a socket on a named bone of a skeletal mesh asset (undoable) and save the mesh. A copy also goes to the mesh's skeleton, which is then saved too; when the skeleton already has a socket of that name, the mesh has no skeleton, or the skeleton is engine content or under a read-only root, no copy is made (added_to_skeleton false) and skeleton_note says why. Errors, writing nothing, when the mesh does not load, the mesh already has a socket of that name, or the bone is missing from the mesh or its skeleton. success is false when a changed package fails to save. Edit existing sockets with set_skeletal_mesh_socket_transform or rename_skeletal_mesh_socket; skeleton-only sockets with add_socket_to_skeleton_asset.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
socket_name |
string | yes | Name for the new socket; leading and trailing spaces are trimmed, and a name the mesh already has is an error. |
bone_name |
string | yes | Name of the bone to attach the socket to; it must exist in the mesh and, when the copy goes to the skeleton, in the skeleton too. |
location |
array | no | Optional [x, y, z] relative location |
rotation |
array | no | Optional [pitch, yaw, roll] relative rotation |
Returns: { socket_name: string, bone_name: string, socket_count: int, location_x: float, location_y: float, location_z: float, added_to_skeleton: bool, skeleton_path: string, skeleton_note: string?, saved: bool, save_error: string?, skeleton_saved: bool?, skeleton_save_error: string? }
add_socket_to_skeleton_asset¶
Additive.
Add a socket to a USkeleton asset on a bone (the root by default) at a bone-relative location and rotation, then save; an existing socket of that name is updated in place (already_existed true). A failed save makes success false, with saved=false and save_error. A socket on a skeletal mesh asset (copied to its skeleton when that skeleton is project content): add_skeletal_mesh_socket.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | USkeleton asset path, e.g. "/Game/Characters/SK_Hero_Skeleton". |
socket_name |
string | yes | Name of the socket; an existing socket with this name is updated instead of duplicated. |
bone_name |
string | no | Bone to attach the socket to; must exist in the skeleton (default the root bone). |
location |
array | no | Socket location relative to its bone as [x, y, z] (default 0,0,0) |
rotation |
array | no | Socket rotation relative to its bone as [pitch, yaw, roll] (default 0,0,0) |
Returns: { asset_path: string, socket_name: string, bone_name: string, socket_count: int, added: bool, already_existed: bool, saved: bool, save_error: string? }
add_virtual_bone¶
Additive.
Add a virtual bone from a source bone to a target bone of a USkeleton asset, named "VB <source>_<target>" by the engine, then save. Bone names are not checked against the skeleton; an existing pair returns that bone with already_exists true. Returns virtual_bone_name and virtual_bone_count.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | USkeleton asset path, e.g. "/Game/Characters/SK_Hero_Skeleton". |
source_bone |
string | no | Bone the virtual bone starts from (default the first bone, usually the root); not validated. |
target_bone |
string | no | Bone the virtual bone points to (default the first bone that differs from source_bone); not validated. |
Returns: { asset_path: string, virtual_bone_name: string, source_bone: string, target_bone: string, virtual_bone_count: int, saved: bool, already_exists: bool }
add_warp_target_to_component¶
Destructive, idempotent.
Add (or update in-place) a FMotionWarpingTarget on an existing UMotionWarpingComponent. Exactly one of three payload shapes must be supplied: (1) component_path -> AddOrUpdateWarpTargetFromComponent(name, comp, NAME_None, false, TargetsForwardVector, ZeroVector, ZeroRotator); (2) location + rotation -> AddOrUpdateWarpTargetFromLocationAndRotation; (3) location only -> AddOrUpdateWarpTargetFromLocation. The engine API is idempotent by WarpTargetName (replace-in-place). Marking the owning actor dirty so the editor persists the change.
| Parameter | Type | Required | Description |
|---|---|---|---|
actor_path |
string | yes | Full editor path or short name of the actor. |
target_name |
string | yes | FName identifier for the warp target. |
location |
array | no | Optional world [x, y, z] location for the target. |
rotation |
array | no | Optional world [pitch, yaw, roll] rotation in degrees for the target. |
component_path |
string | no | Optional name of a USceneComponent on the actor to drive the target transform. |
Returns: { actor_path: string, target_name: string, warp_target_count: int, source: string, already_existed: bool }
assign_skeletal_mesh_physics_asset¶
Destructive.
Assign a physics asset to a skeletal mesh (or pass null/empty to clear it).
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
physics_asset_path |
string | no | Content path to the physics asset (e.g. /Game/MyPhysAsset); empty string clears the assignment |
Returns: { skeletal_mesh_path: string, physics_asset_path: string, assigned: bool, cleared: bool, physics_asset_name: string }
bake_skeletal_mesh_lod¶
Destructive.
Run the editor's skeletal-mesh reduction pipeline via USkeletalMeshEditorSubsystem::RegenerateLOD.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
new_lod_count |
number | no | Target LOD count; <= 0 keeps current and re-runs reduction |
regenerate_even_if_imported |
boolean | no | bool, regenerate even when LODs are imported (default false) |
generate_base_lod |
boolean | no | bool, re-derive LOD 0 from source (default false) |
Returns: { skeletal_mesh_path: string, old_lod_count: int, new_lod_count: int, lod_count: int, baked: bool, regenerate_even_if_imported: bool, generate_base_lod: bool, bake_warning: string }
build_animation_state_machine¶
Destructive, idempotent.
Atomic JSON-spec builder for an Animation Blueprint state machine. Builds (or reuses) the state machine, then iterates states, transitions, and per-transition rules in one idempotent call. Replaces 8+ primitive cmds (add_anim_state_machine + add_anim_state + add_anim_transition + set_anim_transition_rule_*) with a single spec. Re-running with the same spec is a no-op (each primitive is internally idempotent: state-by-name, transition-by-source+target). For repeated invocations that change rule shape, the rule is re-applied on the existing transition.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path to the UAnimBlueprint asset |
state_machine_name |
string | yes | Target state machine name (created if missing via add_anim_state_machine) |
spec |
object | yes | JSON describing the graph shape. states: [{name: str, animation?: str (/Game/Anim/Foo — optional; load-bearing for the runtime state asset but NOT created here), loop?: bool, pos?: [x, y]}]. transitions: [{from: str, to: str, blend?: number (= crossfade_duration seconds), bidirectional?: bool, priority_order?: int, rule?: object}]. Each rule variant maps 1:1 to an existing primitive cmd: {type: "automatic", enabled?: bool = false, trigger_time?: number = 0.0} | {type: "bool", variable: str (must exist on the AnimBP), invert?: bool = false} | {type: "comparison", variable: str (must be float/double on the AnimBP), operator: "=="|"!="|">"|"<"|">="|"<=", comparison_value: number}. An absent rule leaves the transition inert (no rule wired). |
compile_after |
boolean | no | Optional, default false; if true runs compile_anim_blueprint at the end |
Returns: { success: bool, anim_blueprint_path: string, machine_name: string, machine_already_existed: bool, states_created: int, states_skipped: int, transitions_created: int, transitions_updated: int, transitions_skipped: int, errors: [string], compiled: bool, compiled_after: bool }
build_pose_search_database_index¶
Destructive.
Request an async build of the PoseSearch index for a database
| Parameter | Type | Required | Description |
|---|---|---|---|
database_path |
string | yes | Asset path of the UPoseSearchDatabase (required). |
wait_for_completion |
boolean | no | If true, block until the build completes (the engine's FTickableGameObject pumps during the wait). |
Returns: { database_path, schema_path, schema_cardinality, animation_asset_count, wait_for_completion, result, success, in_progress, failed, message }
clear_anim_graph_node_pin_binding¶
Destructive, idempotent.
Remove the property binding from one input pin of an AnimGraph node (inverse of set_anim_graph_node_pin_binding), dropping a stale binding without recreating the node. Returns was_bound, is_bound and cleared; an unbound pin gives cleared=false, not an error. Undoable; saves the AnimBP without recompiling (run compile_anim_blueprint).
| Parameter | Type | Required | Description |
|---|---|---|---|
node_id |
string | yes | NodeGuid of the target UAnimGraphNode_* (from get_graph_nodes). |
pin_name |
string | yes | The bound property/pin name whose binding to clear (e.g. "TransformTrajectory"). |
anim_blueprint_path |
string | no | Path or name of the UAnimBlueprint (aliases: anim_blueprint, blueprint_name). |
graph_name |
string | no | Target graph (optional; deep-resolved; default the top-level AnimGraph). |
anim_blueprint |
string | no | Alias of anim_blueprint_path, used only when anim_blueprint_path is absent or empty. |
blueprint_name |
string | no | Alias of anim_blueprint_path, used only when anim_blueprint_path and anim_blueprint are both absent or empty. |
Returns: { node_id, pin_name, was_bound, is_bound, cleared, saved }
clear_anim_transition_rule¶
Destructive, idempotent.
Remove every rule node from a transition's BoundGraph except the sink.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Asset path of the UAnimBlueprint |
machine_name |
string | yes | Name of the state machine that owns the transition |
source_state |
string | yes | Name of the source state (transition origin) |
target_state |
string | yes | Name of the target state (transition destination) |
Returns: { anim_blueprint_path, machine_name, source_state, target_state, rule_cleared, sink_present, removed_count, remaining_rule_nodes, saved, save_error? }
clear_motion_warping_targets¶
Destructive, idempotent.
Remove EVERY FMotionWarpingTarget from a UMotionWarpingComponent in one call (there is no bulk engine API; use remove_warp_target for a single named target). Reports previous + new count and the names it removed. Idempotent: clearing an already-empty component returns cleared:false + count:0, not an error.
| Parameter | Type | Required | Description |
|---|---|---|---|
actor_name |
string | yes | Engine name of the actor carrying the UMotionWarpingComponent |
Returns: { actor_name, cleared, previous_count, new_count, removed_names: [string] }
collapse_montage_segments¶
Destructive.
Collapse a montage slot track's segments end-to-end (no gaps, order preserved). A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
slot_name |
string | yes | Name of the slot track to collapse. |
Returns: { montage_path, slot_name, segment_count, applied, saved, save_error, message }
commit_bone_changes¶
Destructive.
Mark a skeleton dirty + save it. YOU DO NOT NEED THIS after add_bone / remove_bone / rename_bone / set_bone_transform: each of those already notifies the skeleton's listeners on its own. It exists for the cases those do not cover -- batched mutations made outside the modifier, or an asset import that never went through one (interop with other tools).
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | Path to the USkeleton asset |
force |
boolean | no | If true, mark dirty and save even when no-op (default true) |
Returns: { asset_path, committed, force, bone_count, saved, op: "commit_bone_changes" }
compile_anim_blueprint¶
Destructive.
Compile an Animation Blueprint synchronously and save its package, even when the compile fails; returns status (EBlueprintStatus name), is_up_to_date, has_error and the error and warning messages with their counts. Refused while PIE runs unless force=true. Use get_anim_blueprint_info to inspect without compiling.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path to the UAnimBlueprint asset |
Returns: { anim_blueprint_path: string, compiled: bool, status: string, is_up_to_date: bool, has_error: bool, error_count: int, warning_count: int, errors: [string], warnings: [string], saved: bool, save_error?: string }
configure_animation_events¶
Destructive, idempotent.
Switch the tick of a skeletal mesh component in the editor world (or the one the world param picks): despite the name, it only toggles component ticking and tick-when-paused. Returns the previous and current tick flags; nothing is marked dirty or saved.
| Parameter | Type | Required | Description |
|---|---|---|---|
component_name |
string | yes | Object name of the USkeletalMeshComponent, e.g. "CharacterMesh0", case-insensitive; the first actor in the world that has one with that name wins |
event_settings |
string | yes | Tick mode, any case: 'enable' (tick on, not while paused), 'disable' (tick off) or 'custom' (tick on, paused setting kept) |
world |
string | no | Optional world selector: absent/'editor' (default) | 'pie' (ambiguous: PlayWorld, else the first PIE context) | 'server' (the PIE world with authority) | 'client' | 'pie:N' | 'game' (alias of 'pie'). |
Returns: { component_name: string, requested_settings: string, events_configured: bool, previous_tick_enabled: bool, previous_tick_when_paused: bool, current_tick_enabled: bool, current_tick_when_paused: bool, component_valid: bool, component_class: string, anim_instance_class: string?, has_anim_instance: bool, world: string, world_name: string|null, world_package: string|null, world_type: string|null, net_mode: string|null, pie_instance: number }
connect_anim_graph_pins¶
Destructive.
Wire two AnimGraph pins (pose links AND data pins) using the graph's OWN schema. USE THIS INSTEAD OF connect_pins inside an AnimGraph: the generic connect_pins uses the K2 schema, which does not understand FPoseLink/FComponentSpacePoseLink pose pins, whereas this goes through UAnimationGraphSchema::TryCreateConnection so pose links connect correctly. Saves the ABP but does NOT recompile it -- run compile_anim_blueprint after your edits for runtime effect.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path/name of the UAnimBlueprint. |
source_node_id |
string | yes | NodeGuid of the source node. |
source_pin |
string | yes | Output pin name on the source node. |
target_node_id |
string | yes | NodeGuid of the target node. |
target_pin |
string | yes | Input pin name on the target node. |
graph_name |
string | no | Target graph (optional, default the top-level AnimGraph). |
Returns: { connected, source_node_id, target_node_id, saved }
connect_ik_goal_to_solver¶
Destructive, idempotent.
Connect an existing IK Rig goal to a solver, creating that solver's per-goal effector/settings, in one undo transaction, then save the asset. This is the step that makes get_/set_ik_goal_settings work: a goal added via add_ik_goal is not attached to any solver until connected. Idempotent: re-connecting an already-connected goal is a success with already_connected:true, saved:false and a note, and nothing is saved, avoiding the duplicate the raw engine call would create. An unknown goal or out-of-range solver_index is an error. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Content path to the IK Rig asset. |
goal_name |
string | yes | Name of an existing goal (created via add_ik_goal). |
solver_index |
number | yes | Index of the solver in the rig's solver stack. |
Returns: { ik_rig_path: string, goal_name: string, solver_index: int, connected: bool, already_connected: bool, saved: bool, save_error?: string, note?: string }
copy_anim_graph_nodes¶
Additive.
Copy a set of AnimGraph nodes (with internal FAnimNode settings + intra-selection wiring) between graphs. Equivalent to the editor's copy/paste: preserves each node's runtime struct properties and any links WITHIN the copied set (links to nodes outside the selection are dropped). Saves the destination ABP but does NOT recompile it -- run compile_anim_blueprint after your edits for runtime effect.
| Parameter | Type | Required | Description |
|---|---|---|---|
src_anim_blueprint_path |
string | yes | Source UAnimBlueprint path/name. |
node_ids |
array | yes | Array of source NodeGuid strings (from get_graph_nodes) to copy. |
dst_anim_blueprint_path |
string | yes | Destination UAnimBlueprint path/name. |
src_graph |
string | no | Source graph name (optional, default the top-level AnimGraph). |
dst_graph |
string | no | Destination graph name (optional, default the top-level AnimGraph). |
offset_x |
number | no | X offset added to every pasted node (optional, default 0). |
offset_y |
number | no | Y offset added to every pasted node (optional, default 0). |
Returns: { copied_count, id_map:{old->new}, imported_nodes[], missing_node_ids[], saved }
create_anim_blueprint¶
Additive.
Create an Animation Blueprint (parent UAnimInstance) for a skeleton at package_path/name with the editor factory, compile it and save it; an existing Animation Blueprint at that path is returned unchanged (already_existed=true). Refused while PIE runs unless force=true. Returns asset_path, generated_class and target_skeleton_set.
| Parameter | Type | Required | Description |
|---|---|---|---|
package_path |
string | yes | UE content folder, e.g. /Game/MyGame |
name |
string | yes | Asset name for the new Animation Blueprint |
skeleton_path |
string | no | Optional skeleton path; defaults to /Engine/EngineMeshes/SkeletalCube_Skeleton |
Returns: { asset_path: string, name: string, skeleton_path: string, generated_class: string, is_anim_instance: bool, target_skeleton_set: bool, created: bool, already_existed: bool, saved: bool, save_error?: string }
create_anim_composite¶
Additive, idempotent.
Create and save a UAnimComposite asset bound to a USkeleton, under /Game. Idempotent: a UAnimComposite already at that path is returned unchanged with already_existed=true and saved=false, and nothing is saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Asset name (e.g. 'AnimComp_Example'). |
package_path |
string | no | Target content package path where the asset is created (default /Game/Animation) |
skeleton_path |
string | no | Asset path of the target Skeleton |
Returns: { name, package_path, asset_path, composite_path, skeleton, num_segments, created, already_existed, saved, save_error, message }
create_anim_montage¶
Additive, idempotent.
Create and save an empty-but-valid UAnimMontage asset under /Game. Idempotent: a UAnimMontage already at that path is returned unchanged with already_existed=true and saved=false, and nothing is saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Asset name (e.g. 'AM_Example'). |
package_path |
string | no | Target content package path where the asset is created (default /Game/Animation) |
slot_name |
string | no | Montage slot name (e.g. DefaultSlot) |
skeleton_path |
string | no | Asset path of the target Skeleton |
Returns: { name, package_path, asset_path, montage_path, skeleton_path, slot_names, slot_name, slot_count, section_count, created, already_existed, saved, save_error, message }
create_anim_sequence¶
Additive, idempotent.
Create a UAnimSequence at package_path/anim_name bound to the USkeleton at skeleton_path (default the engine SkeletalCube_Skeleton) and save it; its data model gets frame_rate rounded to whole fps and round(length_seconds * fps) frames, but no bone tracks or curves. Idempotent: a UAnimSequence already at that path is returned unchanged (already_existed=true, saved=false, length and rate not applied) and nothing is saved; another asset class there or an unknown skeleton is an error. A failed save makes success false, with saved=false and save_error, and the new asset stays in memory only. Fill it with add_anim_bone_track or add_anim_float_curve; inspect it with get_anim_sequence_info.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_name |
string | yes | Asset name (no path). |
package_path |
string | no | Target content package path where the asset is created (default /Game/MCP) |
length_seconds |
number | no | Sequence length in seconds (default 1.0) |
frame_rate |
number | no | Sampling frame rate in fps (default 30) |
skeleton_path |
string | no | Asset path of the target Skeleton |
Returns: { anim_sequence_path, anim_name, skeleton, play_length, frame_rate, num_frames, success, saved, save_error, already_existed, message }
create_blend_space¶
Additive, idempotent.
Create and save a UBlendSpace (or UBlendSpace1D) asset under /Game. Idempotent: a UBlendSpace already at that path is returned unchanged with already_existed=true and saved=false, and nothing is saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Asset name (e.g. 'BS_Example'). |
package_path |
string | no | Target content package path where the asset is created (default /Game/Animation) |
is_1d |
boolean | no | If true create a 1D BlendSpace, else 2D (default false) |
axis_name |
string | no | X-axis display name (default 'Speed') |
axis_min |
number | no | X-axis minimum value (default 0) |
axis_max |
number | no | X-axis maximum value (default 100) |
skeleton_path |
string | no | Asset path of the target Skeleton |
Returns: { name, package_path, asset_path, blend_space_path, is_1d, skeleton_path, axis_name, axis_min, axis_max, axis_grid_num, sample_count, created, already_existed, saved, save_error, message }
create_control_rig_blueprint¶
Additive, idempotent.
Create a Control Rig Blueprint (non-modular) at package_path/name with UControlRigBlueprintFactory, compile it and save it. Idempotent: an existing Control Rig Blueprint there is returned unchanged (already_existed=true). Returns asset_path, generated_class, is_control_rig and saved; refused while PIE runs unless force is set.
| Parameter | Type | Required | Description |
|---|---|---|---|
package_path |
string | yes | Content folder starting with "/", e.g. "/Game/Rigs"; a trailing slash is ignored |
name |
string | yes | Asset name of the Control Rig Blueprint, e.g. "CR_Hero" |
Returns: { asset_path: string, name: string, generated_class: string, is_control_rig: bool, created: bool, already_existed: bool, saved: bool, save_error: string }
create_editable_skeletal_mesh¶
Additive, idempotent.
Duplicate a skeletal mesh (default /Engine/EngineMeshes/SkeletalCube) to package_path/skeletal_mesh_name in the project's content so it can be edited, creating the folder if needed. The copy keeps the source's skeleton (create_editable_skeleton makes a /Game skeleton) and is saved only when source control is enabled, otherwise follow with save_asset. Idempotent: a skeletal mesh already at that path is returned with created=false; any other asset there is an error. A source_mesh that is not a skeletal mesh is an error, and so is a destination that is engine content, under a read-only root or under no mounted root. duplicate_asset copies other asset types.
| Parameter | Type | Required | Description |
|---|---|---|---|
package_path |
string | yes | Destination folder: a long package path used as given (/Game, /Game/MyGame or a project plugin mount), or a relative folder taken under /Game. |
skeletal_mesh_name |
string | yes | Name for the new skeletal mesh asset |
source_mesh |
string | no | Content path to source mesh to duplicate (default /Engine/EngineMeshes/SkeletalCube) |
Returns: { asset_path: string, skeletal_mesh_name: string, source_mesh: string, created: bool }
create_editable_skeleton¶
Additive.
Create an editable /Game skeleton by duplicating an engine skeleton
| Parameter | Type | Required | Description |
|---|---|---|---|
package_path |
string | yes | UE content folder, e.g. /Game/MyGame |
name |
string | yes | Asset name for the new skeleton |
source_skeleton |
string | no | Engine skeleton to duplicate, defaults to SkeletalCube_Skeleton |
Returns: { asset_path: string, name: string, source: string, bone_count: int, created: bool, saved: bool, save_error: string }
create_ik_retargeter¶
Additive.
Create and save a UIKRetargeter asset wiring source + target IK Rigs. An existing retargeter at that path is rewired and saved when either rig differs; when it already uses both rigs nothing changes, nothing is saved (saved=false) and a note says so. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
package_path |
string | yes | UE content folder, e.g. /Game/MyGame |
name |
string | yes | Asset name for the new IK Retargeter |
source_ik_rig_path |
string | yes | Path to the source UIKRigDefinition (copy FROM) |
target_ik_rig_path |
string | yes | Path to the target UIKRigDefinition (copy TO) |
Returns: { asset_path: string, name: string, source_ik_rig: string, target_ik_rig: string, created: bool, already_existed: bool, saved: bool, save_error?: string, note?: string }
create_ik_rig¶
Additive, idempotent.
Create and save a UIKRigDefinition asset and set its source skeletal mesh. Idempotent: an existing rig is loaded and only given the mesh, then saved, when it has another one; when it already has that mesh, or the mesh does not load or the engine refuses it (skeletal_mesh_set false), nothing changes, nothing is saved and a note says why. The default skeletal_mesh_path is /Engine/EngineMeshes/SkeletalCube. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
package_path |
string | yes | UE content folder, e.g. /Game/MyGame |
name |
string | yes | Asset name for the new IK Rig |
skeletal_mesh_path |
string | no | Optional USkeletalMesh asset path; defaults to /Engine/EngineMeshes/SkeletalCube |
Returns: { asset_path: string, name: string, skeletal_mesh: string, skeletal_mesh_set: bool, created: bool, already_existed: bool, saved: bool, save_error?: string, note?: string }
create_pose_asset¶
Additive, idempotent.
Create an empty UPoseAsset (no poses) at package_path/name, bound to the USkeleton at skeleton_path (default the engine SkeletalCube_Skeleton), and save it; no undo transaction. Idempotent: a UPoseAsset already at that path is returned untouched with already_existed=true and saved=false, even when bound to another skeleton, and nothing is saved. A name taken by another asset class or an unknown skeleton is an error, and a failed save makes success false, with saved=false and save_error. Add poses with add_pose_to_pose_asset; to build one from animation frames use create_pose_asset_from_anim_sequence.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Asset name (e.g. 'Pose_Example'). |
package_path |
string | no | Target content package path where the asset is created (default /Game/Animation) |
skeleton_path |
string | no | Asset path of the target Skeleton |
Returns: { name, package_path, asset_path, pose_asset_path, skeleton, num_poses, created, already_existed, saved, save_error, message }
create_pose_asset_from_anim_sequence¶
Additive, idempotent.
Create a UPoseAsset built from a real UAnimSequence's frames and save it. Idempotent: a UPoseAsset already at that path is returned unchanged with already_existed=true and saved=false, and nothing is saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
pose_asset_name |
string | yes | Name for the new UPoseAsset. |
anim_sequence_path |
string | yes | Object path of the source UAnimSequence. |
package_path |
string | no | Target content package path where the asset is created (default /Game/Animation) |
Returns: { pose_asset_path, pose_asset_name, source_anim, skeleton_path, num_poses, created, success, already_existed, saved, save_error }
create_pose_search_database¶
Additive.
Create and save a UPoseSearchDatabase data asset bound to a UPoseSearchSchema
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Asset name (e.g. 'PoseSearchDatabase_Example'). |
schema_path |
string | yes | Asset path of an existing UPoseSearchSchema (required). |
package_path |
string | no | Target content package path (default /Game/MCP). |
Returns: { name, package_path, asset_path, database_path, schema_path, schema_cardinality, animation_asset_count, created, already_existed, saved, message }
create_pose_search_schema¶
Additive.
Create and save a UPoseSearchSchema data asset bound to a USkeleton
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Asset name (e.g. 'PoseSearchSchema_Example'). |
package_path |
string | no | Target content package path (default /Game/MCP). |
skeleton_path |
string | no | Asset path of the USkeleton (default /Engine/EngineMeshes/SkeletalCube_Skeleton). |
sample_rate |
number | no | Schema SampleRate (int, ClampMin=1, ClampMax=240; default 30). |
Returns: { name, package_path, asset_path, schema_path, skeleton_path, sample_rate, schema_cardinality, channel_count, created, already_existed, saved, message }
create_retarget_pose¶
Additive.
Create a new retarget pose for editing in an IK Retargeter through its controller, then save the asset. The engine makes the name unique, so read pose_name back. The pose is set as the current pose after creation, ready for bone rotation edits via set_retarget_pose_bone_rotation. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_retargeter_path |
string | yes | Content path to the IK Retargeter asset. |
pose_name |
string | yes | Name for the new retarget pose |
source_or_target |
string | no | Optional "Source" or "Target" scope; defaults to "Target" |
Returns: { ik_retargeter_path: string, pose_name: string, source_or_target: string, success: bool, saved: bool, save_error?: string }
create_skeletal_mesh_morph_target¶
Additive, idempotent.
Register a new morph target on a skeletal mesh asset in memory only, for the rest of the editor session: it is never saved (persisted_to_disk is always false), and a mesh rebuild or reload drops any morph the mesh's imported source data does not contain. Each LOD gets one tiny seed delta on vertex 0 so the morph counts as valid; write real deltas with set_morph_target_deltas. Marks the mesh dirty. Idempotent: an existing name returns created=false and already_exists=true.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset (e.g. /Game/MyGame/SKM_Example) |
morph_target_name |
string | yes | Name for the new morph target |
Returns: { morph_target_name: string, skeletal_mesh_path: string, created: bool, persisted_to_disk: bool, total_morph_targets: int, note: string }
delete_montage_section¶
Destructive.
Delete the first composite section with that name (FName match, case ignored) from a UAnimMontage and save it; a missing name is a success with removed=false and nothing saved. Links from other sections (NextSectionName) are not updated. Returns removed_index, section_count and the remaining sections. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
section_name |
string | yes | Name of the FCompositeSection to remove; compared as an FName, so case is ignored. |
Returns: { montage_path, section_name, removed_index?, already_existed, removed, section_count, sections[], saved, save_error, message }
disconnect_anim_graph_pins¶
Destructive.
Break AnimGraph pin links: a specific source->target link, or ALL links on the source pin. Use the specific form to insert a node into an existing chain (break A->B, then wire A->N and N->B). Saves the ABP but does NOT recompile it -- run compile_anim_blueprint after your edits for runtime effect.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path/name of the UAnimBlueprint. |
source_node_id |
string | yes | NodeGuid of the source node. |
source_pin |
string | yes | Pin name on the source node. |
target_node_id |
string | no | NodeGuid of the target node (optional; if omitted, breaks ALL links on source_pin). |
target_pin |
string | no | Pin name on the target node (optional; required if target_node_id is given). |
graph_name |
string | no | Target graph (optional, default the top-level AnimGraph). |
Returns: { disconnected, broke_all, source_node_id, source_pin, saved }
disconnect_ik_goal_from_solver¶
Destructive, idempotent.
Disconnect a goal from a solver, removing that solver's per-goal effector/settings, through the IK Rig controller (one undo transaction), then save the asset. Inverse of connect_ik_goal_to_solver. Idempotent: disconnecting a goal that isn't connected is a success with was_connected:false, saved:false and a note, and nothing is saved. An out-of-range solver_index is an error. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Content path to the IK Rig asset. |
goal_name |
string | yes | Name of the goal. |
solver_index |
number | yes | Index of the solver in the rig's solver stack. |
Returns: { ik_rig_path: string, goal_name: string, solver_index: int, connected: bool, was_connected: bool, saved: bool, save_error?: string, note?: string }
duplicate_anim_sequence¶
Additive.
Copy a UAnimSequence to a new asset package_path/new_name with the same skeleton (StaticDuplicateObject) and save it; a name already taken by any asset, in memory or on disk (the source included), is refused and nothing is touched. A failed save makes success false, with saved=false and save_error, and the copy stays in memory only. Returns duplicate_path and duplicate_class. For other asset types use duplicate_asset.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_path |
string | yes | Asset path of the source UAnimSequence. |
new_name |
string | yes | Name of the new duplicate. |
package_path |
string | no | Target content package path where the asset is created (default /Game/MCP) |
Returns: { source_path, duplicate_path, duplicate_class, saved, save_error }
edit_anim_notify¶
Destructive.
Edit an existing FAnimNotifyEvent on a UAnimSequence (identified by name + occurrence) in an undo transaction and save it. No editable field is an error before anything changes; edits that leave the event as it is are a success with applied=false, applied_count 0 and saved=false, and the sequence is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
animation_path |
string | yes | Full asset path to the UAnimSequence. |
notify_name |
string | yes | NotifyName of the event to edit (FName). Names are not unique; see occurrence_index. |
occurrence_index |
number | no | Zero-based index AMONG events sharing notify_name (default 0) |
time |
number | no | New trigger time in seconds (FAnimNotifyEvent::SetTime). Optional. |
duration |
number | no | New duration in seconds (FAnimNotifyEvent::SetDuration; meaningful for notify-state). Optional. |
trigger_chance |
number | no | New NotifyTriggerChance in [0,1]. Optional. |
trigger_weight_threshold |
number | no | New TriggerWeightThreshold. Optional. |
montage_tick_type |
string | no | New MontageTickType: 'Queued' or 'BranchingPoint'. Optional. |
track_index |
number | no | New TrackIndex (zero-based). Optional. |
Returns: { animation_path, notify_name, occurrence_index, matched_count, notify, applied_count, applied, saved, save_error, message }
edit_blendspace_sample¶
Destructive.
Edit a blend sample (by index): blend value and/or animation. At least one of blend_value / animation_path is required; both are individually optional so you can retime a sample without touching its animation, or swap the animation without moving it. A sample that already has those values is a success with value_edited=false, animation_replaced=false and saved=false, and the blend space is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
blendspace_path |
string | yes | Full asset path to the UBlendSpace. |
index |
number | yes | Index of the sample to edit. |
blend_value |
any | no | New blend position: single number (1D) or array of up to 3 numbers (optional). |
animation_path |
string | no | Full asset path to a UAnimSequence to replace the sample's animation (optional). |
Returns: { blendspace_path, index, value_edited, animation_replaced, num_samples, samples, saved, save_error, message }
evaluate_pose_search_query¶
Read-only.
Run a live motion-matching query on a PIE/Game actor against a loaded UPoseSearchDatabase (UPoseSearchLibrary::MotionMatch) and return the best-match asset + search cost, plus the query trajectory. Diagnoses why a chooser returns null. Best-effort: per-channel cost is not exposed by the BlueprintPure result.
| Parameter | Type | Required | Description |
|---|---|---|---|
database_path |
string | yes | UPoseSearchDatabase asset path to search (required). |
world |
string | no | Which world to resolve: absent (default) = prefer the live PIE/Game world | 'server' (the PIE world with authority) | 'client' | 'pie:N' | 'pie'/'game' force the live session (errors if none running) | 'editor' forces the editor world. |
actor_name |
string | no | Actor name or label whose AnimInstance drives the query. Omitted = the first player controller's pawn. |
pose_history_name |
string | no | Tag of the PoseSearchHistoryCollector anim-graph node used to build the query (default 'PoseHistory'). |
max_trajectory_samples |
number | no | Cap on emitted query trajectory samples (<=0 = all; default 0). |
Returns: { world_mode, actor_name, actor_resolved, anim_instance_class, pose_history_name, pose_history_found, database_path, query_trajectory_samples[], trajectory_sample_count, is_trajectory_empty, has_match, best_match_asset, best_match_database, best_cost, selected_time, is_continuing_pose_search, wanted_play_rate, is_mirrored, is_looping, per_channel_cost[], note, world_name, world_package, world_type, net_mode, pie_instance }
get_active_montages¶
Read-only.
Report the AnimMontage(s) currently playing on a live PIE actor's skeletal mesh (useful for blend-out debugging).
| Parameter | Type | Required | Description |
|---|---|---|---|
actor |
string | yes | Name, label, or full path of a live actor (resolved in the PIE world by default). |
component |
string | no | Optional skeletal mesh component name; defaults to the actor's primary USkeletalMeshComponent. |
world |
string | no | Which world to resolve the actor in: absent/'pie' (default, ambiguous: PlayWorld, else the first PIE context) | 'server' (the PIE world with authority) | 'client' | 'pie:N' | 'editor' | 'game' (alias of 'pie'). |
Returns: { actor, actor_name, component, world, anim_instance_class, montage_count, is_any_montage_playing, top_montage_id, enumeration, montages: [{ index, montage_path, montage_name, is_top, current_section, position, normalized_position, length, play_rate, blend_weight, desired_weight, blend_time, is_playing, is_active, instance_id, slots:[string] }], world_name: string|null, world_package: string|null, world_type: string|null, net_mode: string|null, pie_instance: number }
get_anim_asset_info¶
Read-only.
Load any animation asset and report its class, skeleton and asset_type (montage, composite, pose, sequence, blendspace or animation_asset) plus the counts of that type: sections/slots/notifies, segments, poses/tracks/curves, length, samples. Read-only; get_montage_info, get_anim_sequence_info and get_blendspace_samples give detail.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | yes | Path to the animation asset (UAnimMontage, UAnimComposite, UPoseAsset, UAnimSequence, or UBlendSpace) |
Returns: { asset_path, class, skeleton, num_segments, num_poses, section_count, slot_count, notify_count, sequence_length, rate_scale, num_tracks, num_curves, sample_count, asset_type }
get_anim_blueprint_info¶
Read-only.
Read an Animation Blueprint without compiling or changing it: target skeleton, parent and generated class, is_anim_instance, is_template, graph_count, and the state machines of its top-level AnimGraph with their state counts (conduits not counted). list_anim_state_machines scans every function graph.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path to the UAnimBlueprint asset |
Returns: { asset_path: string, target_skeleton: string, target_skeleton_set: bool, parent_class: string, generated_class: string, is_anim_instance: bool, is_template: bool, graph_count: int, state_machine_count: int, state_machines: [{ name: string, state_count: int }] }
get_anim_curve_data¶
Read-only.
Read one curve of a UAnimSequence without changing it: for a float curve its flags, num_keys and keys as time/value pairs; for a transform curve only flags and a summed num_keys. found=false (still a success) when the curve does not exist.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Full asset path to the UAnimSequence |
curve_name |
string | yes | Name of the curve to read |
curve_type |
string | no | Curve type to target: float (default) or transform |
Returns: { anim_sequence_path, curve_name, curve_type, found, num_keys, flags, time, value, keys }
get_anim_curve_names¶
Read-only.
List the bone tracks, float curves, and transform curves on a UAnimSequence
| Parameter | Type | Required | Description |
|---|---|---|---|
sequence_path |
string | yes | Asset path of the UAnimSequence. |
Returns: { sequence_path, bone_track_count, float_curve_count, transform_curve_count, bone_tracks, float_curves, transform_curves }
get_anim_graph_node_properties¶
Read-only.
Read the internal FAnimNode struct of an AnimGraphNode as typed JSON (the runtime settings, not the K2 pin surface get_graph_nodes reports). Use it to mirror a reference ABP's settings when grafting nodes: Pose History PoseCount/CollectorName, Slot SlotName, blend params...
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path/name of the UAnimBlueprint. |
node_id |
string | yes | NodeGuid of the target AnimGraphNode. |
graph_name |
string | no | Target graph (optional, default the top-level AnimGraph). |
Returns: { node_id, node_class, node_struct, node_properties:{...} }
get_anim_notifies¶
Read-only.
List the notify events of a UAnimSequence without changing it: name, trigger time, duration, track_index and the notify_class or notify_state_class of each, plus num_notifies. Use get_notify_track_names for track names and get_montage_info for the notifies of a montage.
| Parameter | Type | Required | Description |
|---|---|---|---|
animation_path |
string | yes | Full asset path to the UAnimSequence. |
Returns: { name, time, duration, track_index, notify_class, notify_state_class, animation_path, num_notifies, notifies }
get_anim_sequence_info¶
Read-only.
Read a UAnimSequence without changing it: skeleton, play_length, frame_rate, num_frames, bone track and float curve counts from its data model, num_sync_markers, enable_root_motion, retarget_source and ref_pose_seq. Use get_anim_curve_names for the track and curve names.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Asset path of the UAnimSequence. |
Returns: { anim_sequence_path, skeleton, play_length, frame_rate, num_frames, num_bone_tracks, num_float_curves, num_sync_markers, enable_root_motion, success }
get_anim_state_machine_info¶
Read-only.
Read the nodes of one state machine of an Animation Blueprint without compiling or changing it: state_count counts the states, conduit_count the conduits and transition_count the transitions; states lists every state, conduit and alias node with its kind (class name) and graph position, transitions excluded.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Asset path of the UAnimBlueprint |
state_machine_name |
string | yes | Name of the state machine |
Returns: { state_machine, state_count, conduit_count, transition_count, states:[{name,kind,x,y}] }
get_animation_blueprint_info¶
Read-only.
Find an Animation Blueprint in the Asset Registry and report its object path, class, package, is_loaded and the size and timestamp of its .uasset on disk. With load_full_data it also loads the asset and adds the target skeleton, its bone count, the generated class and is_abstract. Read-only. blueprint_name takes an object path, a package path or a short name searched under /Game (the first match when several share it); no match is an error. For parent class, graphs and state machines use get_anim_blueprint_info.
| Parameter | Type | Required | Description |
|---|---|---|---|
blueprint_name |
string | yes | Name or full path of the Animation Blueprint asset |
load_full_data |
boolean | no | When true, loads the asset and reports target skeleton, generated class, and bone count (optional, default false) |
Returns: { blueprint_name: string, blueprint_path: string, blueprint_class: string, package_name: string, is_loaded: bool, file_size_bytes: number, file_size_kb: number, file_size_mb: number, last_modified: string, loaded_successfully: bool?, is_valid: bool?, target_skeleton: string?, skeleton_bone_count: number?, has_target_skeleton: bool?, generated_class: string?, is_abstract: bool?, load_error: string? }
get_blendspace_samples¶
Read-only.
Read every sample of a UBlendSpace or UBlendSpace1D in index order (animation path, blend_x/blend_y/blend_z, rate_scale) plus num_samples and the per-axis input smoothing under interpolation. Read-only; change samples with add_blendspace_sample, edit_blendspace_sample or remove_blendspace_sample.
| Parameter | Type | Required | Description |
|---|---|---|---|
blendspace_path |
string | yes | Full asset path to the UBlendSpace. |
Returns: { animation, blend_x, blend_y, blend_z, rate_scale, blendspace_path, num_samples, samples }
get_bone_transform¶
Read-only.
Read the LOCAL reference-pose transform of a bone (parent-relative, not component space). Exact inverse of set_bone_transform: it reads the same raw ref-pose array that one writes, so a read-modify-write round trip is lossless.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | Path to the USkeleton asset |
bone_name |
string | yes | Bone to read |
Returns: { asset_path, bone_name, bone_index, found, location:[x,y,z], rotation:[p,y,r], scale:[x,y,z], bone_count, op: "get_bone_transform" }
get_ik_bone_settings¶
Read-only.
Get bone-specific settings for a bone within a solver. FullBodyIK returns snake_case keys (rotation/position stiffness, axis limits Free/Limited/Locked, min/max angles, preferred angles); StretchLimb (the only other solver with per-bone settings) is serialized generically (camelCase: squashDirection vector). Only FullBodyIK and StretchLimb support per-bone settings; others return a note.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Content path to the IK Rig asset. |
solver_index |
number | yes | Index of the solver. |
bone_name |
string | yes | Name of the bone to query settings for. |
Returns: { ik_rig_path: string, solver_index: int, bone_name: string, settings: object }
get_ik_goal_settings¶
Read-only.
Get goal-specific settings for a goal connected to a solver. FullBodyIK returns snake_case keys (chain_depth, strength_alpha, pull_chain_alpha, pin_rotation); BodyMover (the only other solver with per-goal settings) is serialized generically (camelCase: influenceMultiplier, boneName). The goal must be connected to the solver first (connect_ik_goal_to_solver), else a note explains that. Solvers without per-goal settings return a note.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Content path to the IK Rig asset. |
solver_index |
number | yes | Index of the solver. |
goal_name |
string | yes | Name of the goal to query settings for. |
Returns: { ik_rig_path: string, solver_index: int, goal_name: string, settings: object }
get_ik_retarget_chain_details¶
Read-only.
Get detailed info about a retarget chain: start/end bones, goal name.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Path to the UIKRigDefinition asset |
chain_name |
string | yes | Name of the retarget chain |
Returns: { asset_path: string, chain_name: string, found: bool, start_bone: string, end_bone: string, goal_name: string }
get_ik_retargeter_info¶
Read-only.
Read the global structure of an IK Retargeter via its controller: source/target IK Rigs, the op-stack, per-op chain mappings, and the current poses. Read-only. Chain mappings are per-op in 5.6+ (there is no global RootSettings on the UIKRetargeter in 5.8; detailed root/global settings live inside the ops themselves).
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_retargeter_path |
string | yes | Content path to the UIKRetargeter asset. |
Returns: { asset_path: string, source_ik_rig: string, target_ik_rig: string, op_count: int, ops: [{ op_index, op_name, enabled, parent_op, op_type }], chain_mappings: [{ op_name, target_chain, source_chain }], source: { current_pose, pelvis_bone, root_offset: {x,y,z} }, target: { current_pose, pelvis_bone, root_offset: {x,y,z} } }
get_ik_rig_info¶
Read-only.
Read an IK Rig asset: its skeletal mesh, the number of solvers, and every goal and retarget chain. Read-only; solvers are counted, not listed: get_ik_solver_details reads one by index.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Path to the UIKRigDefinition asset |
Returns: { asset_path: string, solver_count: int, goal_count: int, retarget_chain_count: int, skeletal_mesh: string, goals: [{ goal_name, bone_name }], chains: [{ chain_name, start_bone, end_bone, goal_name }] }
get_ik_solver_bones¶
Read-only.
Read the start and end bone of one solver in an IK Rig asset, chosen by its 0-based position in the solver stack. Read-only; an out-of-range solver_index or a rig that does not load is an error. A solver type without an end bone returns "None" as end_bone. get_ik_solver_details adds the type, enabled state and connected goals; set_ik_solver_bones writes the bones.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Path to the UIKRigDefinition asset |
solver_index |
number | yes | 0-based solver index |
Returns: { asset_path: string, solver_index: int, start_bone: string, end_bone: string }
get_ik_solver_details¶
Read-only.
Read one solver of an IK Rig asset by its 0-based stack index: solver_type (the solver struct name, e.g. "IKRigFullBodyIKSolver"), unique_name ("<index+1> - <display name>"), enabled, start and end bone, and the names of the goals connected to it. Read-only; an out-of-range solver_index or a rig that does not load is an error. Use get_ik_solver_bones for just the bones, get_ik_solver_settings for its tunables, get_ik_rig_info for the goals and chains of the whole rig.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Path to the UIKRigDefinition asset |
solver_index |
number | yes | 0-based solver index |
Returns: { asset_path: string, solver_index: int, solver_type: string, unique_name: string, enabled: bool, start_bone: string, end_bone: string, connected_goal_count: int, connected_goals: [string] }
get_ik_solver_settings¶
Read-only.
Get detailed solver-specific settings for a solver in an IK Rig. Returns all solver-level parameters for the specified solver. FullBodyIK uses curated snake_case keys; every other solver type (Limb/Pole/BodyMover/SetTransform/StretchLimb) is serialized generically from its live settings struct (camelCase property names).
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Content path to the IK Rig asset. |
solver_index |
number | yes | Index of the solver in the rig's solver stack. |
Returns: { ik_rig_path: string, solver_index: int, solver_type: string, settings: object }
get_montage_info¶
Read-only.
Read a UAnimMontage without changing it: skeleton_path, section, slot and notify counts with their name lists, blend_in/blend_out times, blend modes, enable_auto_blend_out, blend_out_trigger_time, sync_group and sync_slot_index. Change them with set_montage_blend_times or set_montage_properties.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
Returns: { montage_path, skeleton_path, section_count, slot_count, notify_count, sections, slots, notifies, blend_in, blend_out, blend_mode_in, blend_mode_out, enable_auto_blend_out, blend_out_trigger_time, sync_group, sync_slot_index }
get_morph_target_deltas¶
Read-only.
Read back the vertex deltas of a morph target on a specific LOD (inverse of set_morph_target_deltas).
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
morph_target_name |
string | yes | Name of the morph target to read |
lod_index |
number | no | LOD index to read (default 0) |
max_deltas |
number | no | Optional cap on how many deltas to return (default 5000); the response is honestly marked truncated if the LOD has more |
Returns: { morph_target_name: string, lod_index: int, total_deltas: int, returned_deltas: int, truncated: bool, deltas: [{vertex_index, position_delta:{x,y,z}, normal_delta:{x,y,z}}] }
get_notify_track_names¶
Read-only.
List the notify track names of a UAnimSequence in track order (UAnimationBlueprintLibrary::GetAnimationNotifyTrackNames) without changing it; returns track_names and track_count. Use get_anim_notifies for the events and add_notify_track or remove_notify_track to edit tracks.
| Parameter | Type | Required | Description |
|---|---|---|---|
animation_path |
string | yes | Full asset path to the UAnimSequence. |
Returns: { animation_path, track_names, track_count }
get_pose_search_runtime_state¶
Read-only.
Read-only report of the live motion-matching state on a PIE/Game actor (why a chooser returns null): its AnimInstance, its MotionTrajectory samples, whether a PoseSearchHistoryCollector node named pose_history_name exists, and (optionally) the target database's schema/channels.
| Parameter | Type | Required | Description |
|---|---|---|---|
world |
string | no | Which world to resolve: absent (default) = prefer the live PIE/Game world, else the editor world | 'server' (the PIE world with authority -- what a server-driven character lives in) | 'client' | 'pie:N' | 'pie'/'game' force the live session (errors if none running) | 'editor' forces the editor world. |
actor_name |
string | no | Actor name or label to inspect. Omitted = the first player controller's pawn (the locally-controlled character). |
pose_history_name |
string | no | Tag of the PoseSearchHistoryCollector anim-graph node to look up on the AnimInstance (default 'PoseHistory'). A missing node is the usual reason a query builds an empty pose portion. |
database_path |
string | no | Optional UPoseSearchDatabase asset path; when given, its schema_path/schema_cardinality/channels/animation_asset_count are included. |
max_trajectory_samples |
number | no | Cap on emitted trajectory samples (<=0 = all; default 0). |
Returns: { world_mode, actor_name, actor_resolved, actor_resolved_by, skeletal_mesh_component, anim_instance_class, pose_history_name, pose_history_found, trajectory:{found,component,property,sample_count,is_trajectory_empty,samples[]}, is_trajectory_empty, database?:{database_path,schema_path,schema_cardinality,channel_count,channels[],animation_asset_count}, note, world_name, world_package, world_type, net_mode, pie_instance }
get_retarget_poses¶
Read-only.
List every retarget pose (source and target) of an IK Retargeter with its root translation delta and per-bone rotation deltas. Read-only. Bone rotation deltas use the same quat keys as set_retarget_pose_bone_rotation (quat_x, quat_y, quat_z, quat_w).
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_retargeter_path |
string | yes | Content path to the UIKRetargeter asset. |
Returns: { asset_path: string, source: [{ name, is_current, root_translation_offset: {x,y,z}, bone_rotations: [{ bone, quat_x, quat_y, quat_z, quat_w }] }], target: [ ... same shape ... ] }
get_retargeter_op_info¶
Read-only.
Read one retarget op's live settings struct from an IK Retargeter by op index. Read-only (no save). The settings keys are the op settings UPROPERTY names with only the first character lower-cased (FJsonObjectConverter convention), e.g. FK Chains op exposes lODThreshold, bEnabled, bDebugDraw, chainDrawSize, bDrawChainLines. op_type is the settings struct name (e.g. IKRetargetFKChainsOpSettings), which differs from get_ik_retargeter_info.ops[].op_type (the op struct name).
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_retargeter_path |
string | yes | Content path to the UIKRetargeter asset. |
op_index |
number | yes | 0-based index of the op in the retargeter's op stack. |
Returns: { asset_path: string, op_index: int, op_name: string, op_type: string, enabled: bool, settings: object }
get_rig_control_value¶
Read-only.
Read a Control Rig control's current value (typed per ERigControlType) and its limit min/max. Round-trips set_rig_control_value / set_rig_control_limits.
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Path to the UControlRigBlueprint asset. |
control_name |
string | yes | Name of an existing control element. |
Returns: { asset_path: string, control_name: string, control_type: string, value: any, limit_enabled: bool, min: number?, max: number? }
get_rig_hierarchy¶
Read-only.
Read every element of a Control Rig Blueprint hierarchy in traversal order as elements [{name, type}], plus bone_count, null_count, control_count, curve_count, other_count (sockets, connectors and the rest) and total. Read-only: nothing is compiled or saved.
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Control Rig Blueprint asset path, e.g. "/Game/Rigs/CR_Hero" |
Returns: { asset_path: string, bone_count: int, null_count: int, control_count: int, curve_count: int, other_count: int, total: int, elements: [{name, type}] }
get_rigvm_graph¶
Read-only.
Read a Control Rig's RigVM solver graph nodes pins and links
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Path to the UControlRigBlueprint asset |
Returns: { asset_path: string, nodes: [object], node_count: int, link_count: int }
get_skeletal_mesh_info¶
Read-only.
Get detailed info about a skeletal mesh: LODs, materials, morph targets, sockets, bones.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset (e.g. /Game/MyMesh) |
Returns: { skeletal_mesh_path: string, num_lods: int, num_materials: int, num_morph_targets: int, num_sockets: int, num_bones: int, bone_names: [string], lod_info: [{lod_index, num_verts, num_sections}] }
get_skeletal_mesh_lod_info¶
Read-only.
Get per-LOD build settings and screen size for a skeletal mesh.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
lod_index |
number | no | LOD index to query (default 0) |
Returns: { lod_index: int, screen_size: float, num_material_map_entries: int, allow_cpu_access: bool, build_settings: {...} }
get_skeletal_mesh_material_slots¶
Read-only.
Get all material slot info for a skeletal mesh: slot names, material paths.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
Returns: { skeletal_mesh_path: string, num_material_slots: int, material_slots: [{slot_index, slot_name, material_path, overlay_material_path}] }
get_skeletal_mesh_morph_targets¶
Read-only.
Get all morph targets on a skeletal mesh with delta counts.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
Returns: { skeletal_mesh_path: string, count: int, morph_targets: [{name, has_valid_data, num_deltas_lod0}] }
get_skeletal_mesh_section_info¶
Read-only.
Get section data for a LOD: material index, triangle count, vertex count, flags.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
lod_index |
number | no | LOD index to query (default 0) |
Returns: { skeletal_mesh_path: string, lod_index: int, num_sections: int, lod_num_vertices: int, sections: [{section_index, material_index, num_triangles, num_vertices, recompute_tangent, cast_shadow, visible_in_ray_tracing, disabled, bone_map_count}] }
get_skeleton_asset_info¶
Read-only.
Read a summary of a USkeleton asset: bone_count, the first 10 bone names only, every virtual bone with its source and target, slot_group_count and socket_count. Read-only; for up to 100 bone names use get_skeleton_info with load_full_data true.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | USkeleton asset path, e.g. "/Game/Characters/SK_Hero_Skeleton". |
Returns: { asset_path: string, bone_count: int, bones: [string], virtual_bone_count: int, virtual_bone_names: [string], virtual_bones: [{ name: string, source_bone: string, target_bone: string }], slot_group_count: int, socket_count: int }
get_skeleton_info¶
Read-only.
Retrieve metadata and optional full bone/socket/slot data for a Skeleton asset
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_name |
string | yes | Object path, package path, or bare short name of the Skeleton asset (resolved via mcp_common::ResolveAssetFlexible; an ambiguous short name errors out listing every candidate instead of picking one silently) |
load_full_data |
boolean | no | When true, loads the asset and reports bone list (capped at 100), sockets, and slot groups (optional, default false) |
Returns: { skeleton_name: string, skeleton_path: string, skeleton_class: string, package_name: string, is_loaded: bool, file_size_bytes: number, file_size_kb: number, file_size_mb: number, last_modified: string, loaded_successfully: bool?, is_valid: bool?, bone_count: number?, bones: [object]?, bones_truncated: bool?, socket_count: number?, slot_group_count: number?, load_error: string? }
inspect_motion_warping_component¶
Read-only.
Read the full data-layer state of a UMotionWarpingComponent: the b_search_for_windows_in_anims_within_montages flag, the warp target array (via GetWarpTargets()), the modifier count (via GetModifiers()), the runtime adapter class (GetOwnerAdapter()->GetClass()), and the protected switch-off-conditions array count (via reflection — FindFProperty<FArrayProperty> + FScriptArrayHelper). Read-only, idempotent.
| Parameter | Type | Required | Description |
|---|---|---|---|
actor_path |
string | yes | Full editor path or short name of the actor. |
Returns: { actor_path: string, b_search_for_windows_in_anims_within_montages: bool, warp_target_count: int, modifier_count: int, owner_adapter_class: string, switch_off_condition_count: int, warp_targets: array }
inspect_pose_search_database¶
Read-only.
Read-only walk of Schema, DatabaseAnimationAssets and Channels on a UPoseSearchDatabase
| Parameter | Type | Required | Description |
|---|---|---|---|
database_path |
string | yes | Asset path of the UPoseSearchDatabase (required). |
Returns: { database_path, schema_path, pose_search_mode, kd_tree_query_num_neighbors, number_of_principal_components, base_cost_bias, tags, schema_cardinality, animation_asset_count, animation_assets[], channel_count, channels[] }
inspect_pose_search_schema¶
Read-only.
Read-only walk of a UPoseSearchSchema's public fields + FinalizedChannels. An empty finalized_channels / is_finalized:false is NOT a bug in this tool: the schema only gets finalized by AddDefaultChannels() or by a PostEditChange() on it, so a freshly authored schema reports none until something triggers that.
| Parameter | Type | Required | Description |
|---|---|---|---|
schema_path |
string | yes | Asset path of the UPoseSearchSchema (required). |
Returns: { schema_path, sample_rate, schema_cardinality, number_of_permutations, permutations_sample_rate, permutations_time_offset, add_data_padding: bool, inject_additional_debug_channels: bool, draw_inject_additional_debug_channels: bool, roled_skeletons: [{ role_name, skeleton_path, mirror_table_path }], roled_skeleton_count, is_finalized: bool, channel_count, finalized_channels: [{ class, channel_name, weight }], note?: string } -- note only when is_finalized is false.
is_skeleton_shared¶
Read-only.
Find the skeletal mesh assets bound to a USkeleton asset through an Asset Registry query on their Skeleton tag, returning mesh_count, mesh_paths and shared (true when more than one mesh uses it). Read-only; only the skeleton itself is loaded.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | USkeleton asset path, e.g. "/Game/Characters/SK_Hero_Skeleton". |
Returns: { asset_path, mesh_count, shared, mesh_paths }
link_montage_sections¶
Destructive, idempotent.
Chain one montage section to the next by setting its NextSectionName. add_montage_section creates sections but never links them; this writes FCompositeSection::NextSectionName so playback flows section -> next. Pass next_section_name "" or "None" to clear the link. Done in an undo transaction, then saved. Idempotent: the link the section already has is a success with changed=false and saved=false, and the montage is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
section_name |
string | yes | Name of the existing section whose link to set. |
next_section_name |
string | yes | Name of the existing section to play next (or "" / "None" to clear). |
Returns: { montage_path, section_name, next_section_name, linked, changed, section_count, sections, saved, save_error, message }
list_anim_state_machines¶
Read-only.
List the state machine nodes at the top level of every function graph of an Animation Blueprint (the AnimGraph included), read-only and without compiling: count and state_machines [{name, graph_name}]. Machines nested inside states are not listed.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Asset path of the UAnimBlueprint |
Returns: { count, state_machines: [{name, graph_name}] }
list_warp_targets_on_component¶
Read-only.
List every FMotionWarpingTarget on an actor's UMotionWarpingComponent. Read-only: wraps GetWarpTargets() (TConstArrayView<FMotionWarpingTarget>). Each entry reports the FName, the static location/rotation, the optional component reference (via path or null), the optional bone name, the b_follow_component flag, the location/rotation offsets, and the location_offset_direction enum integer.
| Parameter | Type | Required | Description |
|---|---|---|---|
actor_path |
string | yes | Full editor path or short name of the actor. |
Returns: { actor_path: string, warp_target_count: int, warp_targets: array }
move_ik_solver_in_stack¶
Destructive.
Move the solver at from_index so that it ends up at to_index (both 0-based positions in the solver stack) of an IK Rig asset through the IK Rig controller (one undo transaction), then save the asset. An index outside the stack is an error and nothing moves; from_index equal to to_index is not an error but moved false, saved false and a note, with nothing saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Path to the UIKRigDefinition asset |
from_index |
number | yes | Source 0-based solver index |
to_index |
number | yes | Target 0-based solver index, below the solver count |
Returns: { asset_path: string, from_index: int, to_index: int, moved: bool, solver_count: int, saved: bool, save_error?: string, note?: string }
play_animation¶
Destructive.
Play an AnimMontage on a skeletal mesh component with UAnimInstance::Montage_Play at play_rate, then jump to start_section if playback started. Editor world unless the world param says otherwise; the component needs an anim instance. playing/success mean Montage_Play returned a length above 0.
| Parameter | Type | Required | Description |
|---|---|---|---|
component_name |
string | yes | Object name of the USkeletalMeshComponent, e.g. "CharacterMesh0", case-insensitive; the first actor in the world that has one with that name wins |
montage_path |
string | yes | Full asset path to the AnimMontage (e.g. '/Game/Animations/MyMontage.MyMontage') |
play_rate |
number | no | Playback rate multiplier (optional, default 1.0) |
start_section |
string | no | Name of the section to jump to after play starts (optional) |
world |
string | no | Optional world selector: absent/'editor' (default) | 'pie' (ambiguous: PlayWorld, else the first PIE context) | 'server' (the PIE world with authority) | 'client' | 'pie:N' | 'game' (alias of 'pie'). |
Returns: { component_name: string, montage_path: string, montage_name: string, playing: bool, play_rate: number, montage_length: number, return_value: number, success: bool, start_section: string?, world: string, world_name: string|null, world_package: string|null, world_type: string|null, net_mode: string|null, pie_instance: number }
refresh_anim_montage_cache¶
Destructive, idempotent.
Refresh derived cache data on a UAnimMontage (NotifyTracks / SequenceLength / bone-cache). Idempotent. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
Returns: { montage_path, refreshed, sequence_length, slot_count, section_count, saved, save_error, message }
reimport_anim_sequence¶
Destructive.
Reimport a UAnimSequence, or any reimportable asset (the class is not checked), from source_file_path or its first recorded source via FReimportManager, automated (no dialogs) and unsaved. A missing source is refused before the reimport, which would crash the editor on it, and a reimport the handler reports as failed is a failure too: both make success false with reimported=false, and the missing source a note.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Full asset path to the UAnimSequence |
source_file_path |
string | no | Absolute path of the file to reimport from on disk (e.g. "D:/Art/Walk.fbx"); defaults to the first source file recorded in the asset import data. |
Returns: { anim_sequence_path, source_file_path, reimported, source_validated, note? }
remove_anim_blueprint¶
Destructive.
Delete a UAnimBlueprint asset after verifying the asset is a UAnimBlueprint.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | no | Long path of the UAnimBlueprint (e.g. /Game/Anim/ABP_Foo). |
Returns: { asset_path, asset_class, package_name, deleted, already_existed, note? }
remove_anim_bone_track¶
Destructive.
Remove the animation track of one bone from a UAnimSequence through its data controller (IAnimationDataController::RemoveBoneTrack, one undo step) and save the package. No track with that bone name is a success with removed=false and nothing saved; a failed save makes success false, with saved=false and save_error. List tracks with get_anim_curve_names.
| Parameter | Type | Required | Description |
|---|---|---|---|
sequence_path |
string | yes | Asset path of the UAnimSequence. |
bone_name |
string | yes | Name of the bone track to remove; a name no track has removes nothing. |
Returns: { sequence_path, bone_name, removed, saved, save_error }
remove_anim_composite¶
Destructive.
Delete a UAnimComposite asset after verifying the asset is a UAnimComposite.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | no | Long path of the UAnimComposite. |
Returns: { asset_path, asset_class, package_name, deleted, already_existed, note? }
remove_anim_composite_segment¶
Destructive.
Remove an FAnimSegment by index from a UAnimComposite's AnimationTrack, then recompute its length. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
composite_path |
string | yes | Object path of the UAnimComposite (e.g. "/Game/Animation/AC_Example"). |
index |
number | yes | Zero-based index of the segment to remove, in [0, num_segments). |
Returns: { composite_path, index, num_segments, composite_length, segments, success, saved, save_error }
remove_anim_conduit¶
Destructive.
Remove a conduit node (and its bound rule subgraph) from a state machine.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path to the UAnimBlueprint asset |
machine_name |
string | yes | Name of the state machine that owns the conduit |
conduit_name |
string | yes | Name of the conduit to remove |
Returns: { anim_blueprint_path: string, machine_name: string, conduit_name: string, removed: bool, already_absent: bool, conduit_count: int, transition_count: int, cascaded_transitions_removed: int, saved: bool, save_error?: string }
remove_anim_curve¶
Destructive.
Remove a float or transform curve by name from a UAnimSequence through its data controller (one undo step) and save the package. No such curve is a success with removed=false and nothing saved; a failed save makes success false, with saved=false and save_error. Any curve_type other than transform targets float curves.
| Parameter | Type | Required | Description |
|---|---|---|---|
sequence_path |
string | yes | Asset path of the UAnimSequence. |
curve_name |
string | yes | Name of the curve to remove. |
curve_type |
string | no | Curve type to target: float (default) or transform |
Returns: { sequence_path, curve_name, curve_type, removed, saved, save_error }
remove_anim_curve_name¶
Destructive, idempotent.
Remove a curve metadata entry (curve name) from a USkeleton (idempotent).
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | Path to the USkeleton asset |
curve_name |
string | yes | The curve name to remove (e.g. 'Curve_Example'). |
Returns: { asset_path, curve_name, removed, already_absent, present, curve_count, curve_names, saved }
remove_anim_montage¶
Destructive.
Delete a UAnimMontage asset after verifying the asset is a UAnimMontage.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | no | Long path of the UAnimMontage. |
Returns: { asset_path, asset_class, package_name, deleted, already_existed, note? }
remove_anim_notify¶
Destructive.
Remove every notify event whose NotifyName matches notify_name from a UAnimSequence (UAnimationBlueprintLibrary::RemoveAnimationNotifyEventsByName) in an undo transaction and save it. A name no event has is a success with removed=false, already_absent=true and saved=false, and the sequence is neither dirtied nor saved; a failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
animation_path |
string | yes | Full asset path to the UAnimSequence. |
notify_name |
string | yes | Name of the notify to remove (matches FAnimNotifyEvent.NotifyName). |
Returns: { animation_path, notify_name, removed, removed_count, already_absent, saved, save_error }
remove_anim_sequence¶
Destructive.
Delete a UAnimSequence asset after verifying the asset is a UAnimSequence.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | no | Long path of the UAnimSequence. |
Returns: { asset_path, asset_class, package_name, deleted, already_existed, note? }
remove_anim_slot_group¶
Destructive, idempotent.
Remove an animation slot group from a skeleton (idempotent; guarded against missing group).
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | Path to the USkeleton asset. |
group_name |
string | yes | Name of the slot group to remove. |
Returns: { asset_path: string, group_name: string, removed: bool, already_absent: bool, slot_group_count: int, slot_group_names: [string], saved: bool }
remove_anim_state¶
Destructive.
Remove a state node (and its bound animation subgraph) from a state machine.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path to the UAnimBlueprint asset |
machine_name |
string | yes | Name of the state machine that owns the state |
state_name |
string | yes | Name of the state to remove |
Returns: { anim_blueprint_path: string, machine_name: string, state_name: string, removed: bool, already_absent: bool, state_count: int, transition_count: int, cascaded_transitions_removed: int, saved: bool, save_error?: string }
remove_anim_sync_marker¶
Destructive.
Remove every authored sync marker with the given name from a UAnimSequence in an undo transaction and save the package. Returns markers_before, markers_after and removed; no marker with that name is a success with removed=false and nothing saved, and a failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
sequence_path |
string | yes | Asset path of the UAnimSequence. |
marker_name |
string | yes | Name of the marker to remove. |
Returns: { sequence_path, marker_name, markers_before, markers_after, removed, saved, save_error }
remove_anim_transition¶
Destructive.
Remove a source->target transition (and its rule subgraph) from a state machine.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path to the UAnimBlueprint asset |
machine_name |
string | yes | Name of the state machine that owns the transition |
source_state |
string | yes | Name of the source state (transition origin) |
target_state |
string | yes | Name of the target state (transition destination) |
Returns: { anim_blueprint_path: string, machine_name: string, source_state: string, target_state: string, removed: bool, already_absent: bool, transition_count: int, saved: bool, save_error?: string }
remove_animation_asset_from_pose_search_database¶
Destructive, idempotent.
Remove one FPoseSearchDatabaseAnimationAsset entry from a UPoseSearchDatabase by 0-based index (inverse of add_animation_asset_to_pose_search_database). Idempotent: an out-of-range index returns removed:false + note, not an error. The database index is NOT rebuilt here -- run build_pose_search_database_index afterwards.
| Parameter | Type | Required | Description |
|---|---|---|---|
database_path |
string | yes | Full /Game/... asset path of the database. |
animation_asset_index |
number | yes | 0-based index into DatabaseAnimationAssets[]. |
Returns: { database_path, animation_asset_index, removed, previous_count, new_count }
remove_blend_profile¶
Destructive, idempotent.
Remove a WHOLE UBlendProfile from a skeleton (idempotent). Inverse of set_blend_profile_bone, which is what implicitly CREATES a profile -- there is no separate create_blend_profile to undo.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | Path to the USkeleton asset |
profile_name |
string | yes | Name of the UBlendProfile to remove |
Returns: { asset_path, profile_name, removed, already_absent, profile_count, profile_names, saved }
remove_blend_space¶
Destructive.
Delete a UBlendSpace asset after verifying the asset is a UBlendSpace.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | no | Long path of the UBlendSpace. |
Returns: { asset_path, asset_class, package_name, deleted, already_existed, note? }
remove_blendspace_1d¶
Destructive.
Delete a UBlendSpace1D asset after verifying the asset is a UBlendSpace1D.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | no | Long path of the UBlendSpace1D. |
Returns: { asset_path, asset_class, package_name, deleted, already_existed, note? }
remove_blendspace_sample¶
Destructive.
Remove a blend sample (by index) from a BlendSpace. WARNING: the remaining indices REORDER -- the engine removes with a swap, so the LAST sample lands in the deleted slot. Never remove a batch by descending index and assume the rest held still: the full post-op sample list is returned so the caller can re-sync before the next call. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
blendspace_path |
string | yes | Full asset path to the UBlendSpace. |
index |
number | yes | Index of the sample to remove. |
Returns: { blendspace_path, removed, num_samples, samples, saved, save_error, message }
remove_bone¶
Destructive, idempotent.
Remove a bone from a skeleton's reference skeleton (idempotent).
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | Path to the USkeleton asset |
bone_name |
string | yes | Name of the bone to remove |
remove_children |
boolean | no | If true, recursively remove all descendant bones (default false) |
Returns: { asset_path, bone_name, removed, already_absent, remove_children, bone_count, saved, op: "remove_bone" }
remove_ik_goal¶
Destructive, idempotent.
Remove an IK goal from an IK Rig by name through the IK Rig controller (one undo transaction), then save the asset. Inverse of add_ik_goal: also detaches the goal from every solver's effector and clears it from any retarget chain that referenced it. Idempotent: removing a goal that isn't present is a success with removed:false, already_absent:true, saved:false and a note, and nothing is saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Path to the UIKRigDefinition asset |
goal_name |
string | yes | Name of the goal to remove |
Returns: { asset_path: string, goal_name: string, removed: bool, already_absent: bool, goal_count: int, saved: bool, save_error?: string, note?: string }
remove_ik_retarget_chain¶
Destructive.
Remove the retarget chain with that name from an IK Rig asset through the IK Rig controller (one undo transaction), then save the asset. A name no chain has is not an error but removed false, saved false and a note, with nothing saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Path to the UIKRigDefinition asset |
chain_name |
string | yes | Name of the retarget chain to remove |
Returns: { asset_path: string, chain_name: string, removed: bool, chain_count: int, saved: bool, save_error?: string, note?: string }
remove_ik_solver¶
Destructive.
Remove the solver at a 0-based index from the solver stack of an IK Rig asset through the IK Rig controller (one undo transaction), then save the asset. An out-of-range index is an error. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Path to the UIKRigDefinition asset |
solver_index |
number | yes | 0-based index of the solver to remove |
Returns: { asset_path: string, removed_solver_index: int, solver_count: int, removed: bool, saved: bool, save_error?: string }
remove_montage_notify¶
Destructive.
Remove the notify event at a zero-based index from the Notifies array of a UAnimMontage and save it; an index past the end changes nothing and still returns success with removed=false. Returns removed_notify_name, notify_count_before, notify_count and the remaining notify names. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
notify_index |
number | yes | Zero-based index into the montage's Notifies array. Use get_montage_info first to list notifies. |
Returns: { montage_path, notify_index, removed_notify_name?, notify_count_before, notify_count, notifies[], removed, saved, save_error, message }
remove_montage_slot¶
Destructive.
Remove a slot animation track from a UAnimMontage by name or index. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
slot_name |
string | no | Name of the FSlotAnimationTrack to remove (FName). Either this or slot_index is required. |
slot_index |
number | no | Zero-based index into SlotAnimTracks (alternative to slot_name). Use get_montage_info first to list slots. |
Returns: { montage_path, slot_name?, slot_index?, removed_index?, removed_slot_name?, slot_count, slots[], already_existed, removed, saved, save_error, message }
remove_motion_warping_component¶
Destructive, idempotent.
Detach the UMotionWarpingComponent from an actor (mirror of add_motion_warping_component). Idempotent: an actor that has no such component returns already_existed:false + removed:false + note, not an error.
| Parameter | Type | Required | Description |
|---|---|---|---|
actor_path |
string | yes | Full editor path or short name of the actor. |
Returns: { actor_path: string, component_path?: string, removed: bool, already_existed: bool, note?: string }
remove_notify_track¶
Destructive.
Remove a named notify TRACK from an AnimSequence (deletes events on it + reindexes the rest). A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
animation_path |
string | yes | Full asset path to the UAnimSequence. |
track_name |
string | yes | Notify track name to remove. |
Returns: { animation_path, track_name, track_names, track_count, already_absent, saved, save_error, message }
remove_pose_asset¶
Destructive, idempotent.
Permanently delete one UPoseAsset after checking that the path loads as one: a force delete with no confirmation and no undo that nulls references to it. Idempotent: a path that no longer loads gives deleted=false with a note, not an error, and so does an asset of another class; during PIE the delete fails with deleted=false. Check get_asset_referencers first. To drop one pose or curve inside the asset use remove_pose_from_pose_asset or remove_pose_curve; delete_asset removes an asset of any type.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | no | Long path of the UPoseAsset. |
Returns: { asset_path, asset_class, package_name, deleted, already_existed, note? }
remove_pose_curve¶
Destructive.
Delete the named curve from a UPoseAsset (UPoseAsset::DeleteCurves) in an undo transaction and save the asset; an absent curve is a success with removed=false, removed_count 0 and saved=false, and the asset is neither modified nor saved. Returns removed_count, removed and num_curves. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
pose_asset_path |
string | yes | Path to the UPoseAsset. |
curve_name |
string | yes | Name of the curve to remove. |
Returns: { pose_asset_path, curve_name, removed_count, removed, num_curves, saved, save_error, message }
remove_pose_from_pose_asset¶
Destructive.
Delete the named pose from a UPoseAsset (UPoseAsset::DeletePoses, which also fixes the base pose index) in an undo transaction and save the asset. An absent name is a success with removed=false and saved=false, and the asset is neither modified nor saved. Returns was_present, removed_count, contains_after, num_poses and the remaining pose_names. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
pose_asset_path |
string | yes | Path to the UPoseAsset (e.g. '/Game/MyGame/Pose_Example'). |
pose_name |
string | yes | Name of the pose to remove. |
Returns: { pose_asset_path, pose_name, was_present, removed_count, removed, contains_after, num_poses, pose_names, saved, save_error, message }
remove_pose_search_channel_from_schema¶
Destructive.
Remove a UPoseSearchFeatureChannel_* from a UPoseSearchSchema by index or type (inverse of add_pose_search_channel_to_schema)
| Parameter | Type | Required | Description |
|---|---|---|---|
schema_path |
string | yes | Asset path of the UPoseSearchSchema (required). |
channel_index |
number | no | 0-based index into the schema's source Channels array (optional; takes precedence over channel_type). |
channel_type |
string | no | One of 'Pose', 'Trajectory', 'Position', 'Velocity', 'Heading'; removes the first channel of that class (optional; used only when channel_index is absent). |
Returns: { schema_path, channel_index, channel_type, channel_class, schema_cardinality, channel_count, previous_count, removed, already_absent, saved, message }
remove_pose_search_database¶
Destructive, idempotent.
Destroy a UPoseSearchDatabase asset (mirror of create_pose_search_database). Typed-delete: it loads the asset and REFUSES to delete it if it is not a UPoseSearchDatabase, so it cannot wipe the wrong asset the way the generic delete_asset can. Idempotent on missing assets.
| Parameter | Type | Required | Description |
|---|---|---|---|
database_path |
string | yes | Full /Game/... asset path of the database. |
Returns: { database_path, deleted, already_existed, asset_class?, note? }
remove_pose_search_roled_skeleton¶
Destructive, idempotent.
Remove a roled FPoseSearchRoledSkeleton entry from a UPoseSearchSchema by role or by index (inverse of add_pose_search_roled_skeleton). Idempotent: no match = no write, reported as already_absent. The schema is re-finalized after the removal, so finalized_channels changes with it.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | yes | Asset path of the target UPoseSearchSchema (required). |
role |
string | no | Role name (FName) of the FPoseSearchRoledSkeleton entry to remove (provide this OR skeleton_index; empty = default/None role). |
skeleton_index |
number | no | 0-based index into the roled-skeleton list of the entry to remove (provide this OR role). |
Returns: { asset_path, role, skeleton_index, removed_skeleton_path, roled_skeleton_count, previous_count, removed, already_absent, saved }
remove_pose_search_schema¶
Destructive, idempotent.
Destroy a UPoseSearchSchema asset (mirror of create_pose_search_schema). Typed-delete: it loads the asset and REFUSES to delete it if it is not a UPoseSearchSchema, so it cannot wipe the wrong asset the way the generic delete_asset can. Idempotent on missing assets.
| Parameter | Type | Required | Description |
|---|---|---|---|
schema_path |
string | yes | Full /Game/... asset path of the schema. |
Returns: { schema_path, deleted, already_existed, asset_class?, note? }
remove_retarget_pose¶
Destructive, idempotent.
Remove a retarget pose from an IK Retargeter by name through its controller, then save the asset. Inverse of create_retarget_pose. If the removed pose was the current one, the retargeter falls back to the default pose. Idempotent: removing a pose that isn't present is a success with removed:false, already_absent:true, saved:false and a note, and nothing is saved. The engine's built-in default pose cannot be removed (honest error). A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_retargeter_path |
string | yes | Content path to the IK Retargeter asset. |
pose_name |
string | yes | Name of the retarget pose to remove |
source_or_target |
string | no | Optional "Source" or "Target" scope; defaults to "Target" |
Returns: { ik_retargeter_path: string, pose_name: string, source_or_target: string, removed: bool, already_absent: bool, success: bool, saved: bool, save_error?: string, note?: string }
remove_retargeter_op¶
Destructive.
Remove the op at a 0-based index, with any child ops, from the op stack of an IK Retargeter asset through its controller (one undo transaction), then save the asset. An out-of-range index is an error. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_retargeter_path |
string | yes | Path to the UIKRetargeter asset |
op_index |
number | yes | 0-based op index |
Returns: { asset_path: string, removed_op_index: int, removed: bool, op_count: int, saved: bool, save_error?: string }
remove_rig_element¶
Destructive.
Remove one element (by name and type) from a Control Rig Blueprint hierarchy with RemoveElement, then compile and save the blueprint. Errors on an unknown type or a missing element. Returns the per-type counts afterwards; refused while PIE runs unless force is set.
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Control Rig Blueprint asset path, e.g. "/Game/Rigs/CR_Hero" |
element_name |
string | yes | Name of the element to remove |
element_type |
string | yes | Element type, any case: "Bone", "Null" (or "Space"), "Control", "Curve", "Socket" or "Connector" |
Returns: { asset_path: string, element_key: string, element_type: string, removed: bool, bone_count: int, null_count: int, control_count: int, curve_count: int, other_count: int, total: int, saved: bool, save_error: string }
remove_rigvm_node¶
Destructive.
Remove a node from a Control Rig's RigVM solver graph, then compile and save the rig. A node that is not found, or that the controller fails to remove, is an error and nothing is compiled or saved.
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Path to the UControlRigBlueprint asset |
node_name |
string | yes | Graph node name to remove, as reported by add_rigvm_node |
Returns: { asset_path: string, node_name: string, removed: bool, node_count: int, saved: bool, save_error: string }
remove_skeletal_mesh_lod¶
Destructive.
Remove one LOD from a skeletal mesh asset, with its source model and cached reduction data; higher LODs shift down one index. lod_index must be 1 or more and below the LOD count, otherwise an error (LOD 0 is never removed). Marks the mesh dirty without saving or rebuilding render data, so follow with save_asset. Use add_skeletal_mesh_lod to append a LOD, get_skeletal_mesh_lod_info to inspect them, set_skeletal_mesh_min_lod to skip the most detailed LODs while keeping them.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
lod_index |
number | yes | Index of the LOD to remove (must be > 0) |
Returns: { skeletal_mesh_path: string, lod_index: int, lod_count: int, removed: bool }
remove_skeletal_mesh_morph_target¶
Destructive.
Remove a morph target from a skeletal mesh by name.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
morph_target_name |
string | yes | Name of the morph target to remove |
Returns: { morph_target_name: string, skeletal_mesh_path: string, removed: bool, remaining_morph_targets: int }
remove_skeletal_mesh_socket¶
Destructive, idempotent.
Remove a socket from a skeletal mesh (and its skeleton twin). Idempotent: re-running with an absent socket returns already_removed=true without mutating the asset.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
socket_name |
string | yes | Name of the socket to remove |
Returns: { socket_name: string, skeletal_mesh_path: string, removed: bool, already_removed: bool, socket_count: int }
remove_socket_from_skeleton_asset¶
Destructive, idempotent.
Remove a socket from the socket list of a USkeleton asset and save it. Idempotent: a missing socket returns removed false and already_absent true without saving. Returns socket_count and the remaining socket_names; sockets that exist only on a skeletal mesh are untouched (use remove_skeletal_mesh_socket).
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | USkeleton asset path, e.g. "/Game/Characters/SK_Hero_Skeleton". |
socket_name |
string | yes | Name of the socket to remove (case-insensitive). |
Returns: { asset_path: string, socket_name: string, removed: bool, already_absent: bool, socket_count: int, socket_names: [string], saved: bool }
remove_virtual_bone¶
Destructive, idempotent.
Remove a virtual bone from a USkeleton asset, named directly or found by its source and target bones, then save. Idempotent: no match returns removed false and already_absent true without saving. Returns the remaining virtual_bone_names; a failed save returns success false.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | USkeleton asset path, e.g. "/Game/Characters/SK_Hero_Skeleton". |
virtual_bone_name |
string | no | Full virtual bone name with its "VB " prefix, e.g. "VB pelvis_hand_r"; when given, source_bone and target_bone are ignored. |
source_bone |
string | no | Source bone name; used with target_bone to resolve the virtual bone when virtual_bone_name is omitted. |
target_bone |
string | no | Target bone name; used with source_bone to resolve the virtual bone when virtual_bone_name is omitted. |
Returns: { asset_path: string, virtual_bone_name: string, removed: bool, already_absent: bool, virtual_bone_count: int, virtual_bone_names: [string], saved: bool }
remove_warp_target¶
Destructive, idempotent.
Remove a FMotionWarpingTarget from a UMotionWarpingComponent by FName. Wraps UMotionWarpingComponent::RemoveWarpTarget(name) which returns the count of entries removed (0 or 1; the array is keyed by FName). Idempotent: removing a non-existent target returns count:0 without raising an error.
| Parameter | Type | Required | Description |
|---|---|---|---|
actor_path |
string | yes | Full editor path or short name of the actor. |
target_name |
string | yes | FName identifier of the warp target to remove. |
Returns: { actor_path: string, target_name: string, removed_count: int, warp_target_count: int }
rename_anim_curve¶
Destructive.
Rename a float or transform curve on a UAnimSequence through its data controller (one undo step) and save it; errors when the source curve does not exist or the rename is refused. The same name for both is a success with renamed=false, saved=false and a note, and nothing is written or saved. Any curve_type other than transform means float. Returns renamed and saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Full asset path to the UAnimSequence |
old_curve_name |
string | yes | Name of the existing curve to rename, as listed by get_anim_curve_names. |
new_curve_name |
string | yes | Name the curve gets after the rename. |
curve_type |
string | no | Curve type to target: float (default) or transform |
Returns: { anim_sequence_path, old_curve_name, new_curve_name, renamed, saved, save_error, note? }
rename_bone¶
Destructive.
Rename a bone in the reference skeleton of a USkeleton asset and save it. Fails with an error when old_name is not a bone or new_name is already taken; skeletal meshes and animations that use the old name are not updated. A failed save returns success false.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | USkeleton asset path, e.g. "/Game/Characters/SK_Hero_Skeleton". |
old_name |
string | yes | Current bone name; must exist in the reference skeleton. |
new_name |
string | yes | Desired new bone name (must not already exist) |
Returns: { asset_path, old_name, new_name, renamed: true, not_found: false, already_used: false, bone_count, saved, save_error?, op: "rename_bone" }
rename_ik_retarget_chain¶
Destructive.
Rename a retarget chain of an IK Rig asset through the IK Rig controller (one undo transaction) and save it. The engine makes the new name unique, so read new_name back; an unknown chain_name is not an error but returns renamed false, saved false and a note, with nothing saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | IK Rig (UIKRigDefinition) asset path, e.g. "/Game/Retarget/IK_Hero". |
chain_name |
string | yes | Current name of the retarget chain, as get_ik_rig_info lists it. |
new_name |
string | yes | Requested new name; the engine may add a suffix to keep it unique. |
Returns: { asset_path: string, old_name: string, new_name: string, renamed: bool, saved: bool, save_error?: string, note?: string }
rename_montage_section¶
Destructive.
Rename an existing FCompositeSection on a UAnimMontage by zero-based section_index, in an undo transaction, and save it. The name the section already has (FName match, case ignored) is a success with applied=false and saved=false, and the montage is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
section_index |
number | yes | Zero-based index into CompositeSections (use get_montage_info first to list). |
new_name |
string | yes | New FName for the section. |
Returns: { montage_path, section_index, old_name, new_name, section_count, sections, applied, saved, save_error, message }
rename_pose_in_pose_asset¶
Destructive.
Rename an existing named pose in a UPoseAsset (UPoseAsset::ModifyPoseName) in an undo transaction and save it; renamed is measured by reading the pose names back. An unknown old_pose_name, a new_pose_name another pose already has, or a rename the engine does not take is an error with nothing saved; the same name for both is a success with renamed=false and saved=false, and nothing is modified or saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
pose_asset_path |
string | yes | Path to the UPoseAsset. |
old_pose_name |
string | yes | Current name of the pose to rename. |
new_pose_name |
string | yes | New name for the pose. |
Returns: { pose_asset_path, old_pose_name, new_pose_name, renamed, contains_new, contains_old, num_poses, pose_names, saved, save_error, message }
rename_rig_element¶
Destructive, idempotent.
Rename an element in a Control Rig's hierarchy. Idempotent: renaming to the current name is a no-op ({ renamed:false, already_named:true }). The engine disambiguates name collisions with a numeric suffix rather than failing, reported honestly via name_adjusted.
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Path to the UControlRigBlueprint asset |
element_type |
string | yes | Element type ("Bone"/"Null"/"Control"/"Curve"/"Socket"/"Connector") |
element_name |
string | yes | Current name of the element to rename |
new_name |
string | yes | Desired new name for the element |
Returns: { asset_path: string, old_name: string, element_key: string, element_type: string, renamed: bool, already_named: bool, name_adjusted: bool, bone_count: int, null_count: int, control_count: int, curve_count: int, other_count: int, total: int, saved: bool, save_error: string }
rename_skeletal_mesh_morph_target¶
Destructive.
Rename a morph target on a skeletal mesh asset and save the mesh. Fails if old_name is not a morph target of the mesh or new_name already exists; a failed save also returns an error although the rename stays in memory. Returns old_name, new_name and renamed.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Skeletal mesh asset path, e.g. "/Game/Characters/SKM_Hero". |
old_name |
string | yes | Current morph target name, as get_skeletal_mesh_morph_targets lists it. |
new_name |
string | yes | New morph target name; must not already exist on the mesh. |
Returns: { old_name: string, new_name: string, skeletal_mesh_path: string, renamed: bool }
rename_skeletal_mesh_socket¶
Destructive.
Rename a socket on a skeletal mesh (and its skeleton twin).
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
old_name |
string | yes | Current name of the socket |
new_name |
string | yes | New name for the socket |
Returns: { old_name: string, new_name: string, skeletal_mesh_path: string, renamed: bool, already_renamed: bool, socket_count: int }
scaffold_aim_offset_blend_space¶
Additive.
Create a UAimOffsetBlendSpace for a skeleton at package_path/asset_name and save it, or re-save the one already there (already_existed=true); a failed save still succeeds with saved=false. Yaw/pitch ranges and grid counts are only echoed, not written: set axes with set_blendspace_properties.
| Parameter | Type | Required | Description |
|---|---|---|---|
package_path |
string | yes | Content folder for the new asset, e.g. /Game/Animation/AimOffsets (a trailing slash is ignored). |
asset_name |
string | yes | Name of the aim offset asset (e.g. "AO_Rifle"); the object path becomes package_path/asset_name.asset_name. |
skeleton_path |
string | yes | Asset path of the USkeleton the new aim offset targets (e.g. "/Game/Characters/Mannequin/SK_Mannequin_Skeleton"); a reused asset keeps its own skeleton. |
yaw_min |
number | no | Yaw lower bound echoed in the reply (default -90.0 degrees); not written to the asset. |
yaw_max |
number | no | Yaw upper bound echoed in the reply (default 90.0); not written to the asset. |
pitch_min |
number | no | Pitch lower bound echoed in the reply (default -90.0); not written to the asset. |
pitch_max |
number | no | Pitch upper bound echoed in the reply (default 90.0); not written to the asset. |
num_grid_points_yaw |
number | no | Yaw grid divisions echoed in the reply (default 4); not written to the asset. |
num_grid_points_pitch |
number | no | Pitch grid divisions echoed in the reply (default 4); not written to the asset. |
Returns: { asset_path, skeleton_path, yaw_min, yaw_max, pitch_min, pitch_max, num_grid_points_yaw, num_grid_points_pitch, already_existed, saved, note? }
scaffold_blend_space_2d¶
Additive, idempotent.
Create a UBlendSpace (2D) asset for parameter-driven animation blending (e.g. Speed x Direction). Idempotent on re-run; axis metadata left at engine defaults (set the protected axis fields afterwards with set_blendspace_properties).
| Parameter | Type | Required | Description |
|---|---|---|---|
package_path |
string | yes | /Game/... folder for the new asset (required) |
asset_name |
string | yes | Display name (required) |
skeleton_path |
string | yes | USkeleton the BS targets (required) |
axis_x_label |
string | no | Optional X-axis display name (default "X"); engine field is protected so visible only after editor opens the asset. |
axis_y_label |
string | no | Optional Y-axis display name (default "Y"); same engine protection caveat. |
min_x |
number | no | Optional X axis lower bound (default 0); recorded in response but not written to asset. |
max_x |
number | no | Optional X axis upper bound (default 100); same caveat as above. |
min_y |
number | no | Optional Y axis lower bound (default 0) |
max_y |
number | no | Optional Y axis upper bound (default 100) |
num_grid_points_x |
number | no | Optional X grid density (default 4) |
num_grid_points_y |
number | no | Optional Y grid density (default 4) |
Returns: { asset_path, skeleton_path, axis_x_label, axis_y_label, x_axis_range, y_axis_range, num_grid_points_x, num_grid_points_y, already_existed, saved, note? }
scaffold_locomotion_animbp¶
Additive, idempotent.
Create or update a character Animation Blueprint with a "Locomotion" state machine + Idle/Walk/Run states + bidirectional transitions between them. Idempotent: re-running on an existing AnimBP returns the existing scaffold.
| Parameter | Type | Required | Description |
|---|---|---|---|
package_path |
string | yes | UE content folder, e.g. "/Game/MyGame". |
asset_name |
string | yes | Blueprint asset name, e.g. "ABP_PlayerLocomotion". |
skeleton_path |
string | yes | Path to the target USkeleton. |
machine_name |
string | no | Optional state machine name (default "Locomotion"). |
states |
array | no | Optional list of state names to add (default ["Idle", "Walk", "Run"]). |
add_transitions |
boolean | no | Optional bool (default true). Add Idle<->Walk and Walk<->Run transitions. |
Returns: { anim_blueprint_path, package_path, skeleton_path, machine_name, state_count, transition_count, already_existed, saved }
scale_anim_curve¶
Destructive.
Retime a FLOAT curve on a UAnimSequence through its data controller (one undo step), then save the package: every key TIME becomes (t - origin) * factor + origin, and the key VALUES are left untouched -- this stretches/compresses a curve in time, it does not scale its amplitude. FLOAT-CURVE ONLY: a name that is not a float curve of the sequence, a transform curve included, is an error and nothing is written. A retime that moves no key (factor 1, no keys, or every key at the origin) is a success with applied=false and saved=false, and nothing is written or saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Asset path of the UAnimSequence. |
curve_name |
string | yes | Name of the float curve. |
factor |
number | no | Scale factor applied to each key TIME (default 1.0). |
origin |
number | no | Time origin the key times are scaled about (default 0.0). |
Returns: { anim_sequence_path, curve_name, origin, factor, num_keys, applied, saved, save_error, message }
set_anim_additive_settings¶
Destructive, idempotent.
Set the additive-animation type and base pose on a UAnimSequence in an undo transaction and save it. Settings the sequence already has are a success with changed=false and saved=false, and the sequence is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Object path of the UAnimSequence. |
additive_anim_type |
string | no | Additive type: LocalSpaceBase|RotationOffsetMeshSpace|None (default LocalSpaceBase) |
ref_pose_type |
string | no | Base pose type: RefPose|AnimScaled|AnimFrame|LocalAnimFrame|None (default RefPose) |
ref_frame_index |
number | no | Frame index used for the base pose (default 0) |
ref_pose_anim_path |
string | no | Object path of the reference UAnimSequence for the base pose (optional) |
Returns: { anim_sequence_path, additive_anim_type, ref_pose_type, ref_frame_index, ref_pose_anim_set, changed, success, saved, save_error, message? }
set_anim_bone_track_keys¶
Destructive, idempotent.
Replace the keys of one bone track of a UAnimSequence with the given per-key transforms (translation, rotation, scale: real pose data, not identity), adding the track when it is missing, through its data controller as one undo step, then save the package; num_keys_readback and first_key are read back from the data model. A bone_name the sequence's skeleton does not have is an error and nothing is written; an omitted bone_name targets the root bone. A failed save makes success false, with saved=false and save_error. Identity keys: add_anim_bone_track.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Asset path of the UAnimSequence. |
keys |
array | yes | Array of per-key transforms: { translation:[x,y,z], rotation:[pitch,yaw,roll] (deg), scale:[x,y,z] }. translation default [0,0,0], rotation default [0,0,0], scale default [1,1,1]. |
bone_name |
string | no | Name of a bone of the skeleton of the sequence; omitted or empty means the root bone. |
Returns: { anim_sequence_path, bone_name, num_keys, num_keys_readback, num_bone_tracks, first_key:{translation,rotation_euler}, success, saved, save_error, message }
set_anim_curve_color¶
Destructive, idempotent.
Set the editor display color of a FLOAT curve on a UAnimSequence through its data controller (one undo step), then save the package (cosmetic: it tints the curve in the editor, it does not affect evaluation). FLOAT-CURVE ONLY: a name that is not a float curve of the sequence, a transform curve included, is an error and nothing is written. The color the curve already has is a success with applied=false and saved=false, and nothing is written or saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Asset path of the UAnimSequence. |
curve_name |
string | yes | Name of the float curve. |
color |
array | no | RGBA color as [r, g, b, a] in 0..1 (default [1,1,1,1]). |
Returns: { anim_sequence_path, curve_name, color, applied, saved, save_error, message }
set_anim_curve_comment¶
Destructive, idempotent.
Set the author comment of a FLOAT curve on a UAnimSequence through its data controller (one undo step), then save the package (metadata only; it does not affect evaluation). FLOAT-CURVE ONLY: a name that is not a float curve of the sequence, a transform curve included, is an error and nothing is written. The comment the curve already has (case-sensitive) is a success with applied=false and saved=false, and nothing is written or saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Asset path of the UAnimSequence. |
curve_name |
string | yes | Name of the float curve. |
comment |
string | no | Comment string to set (default empty). |
Returns: { anim_sequence_path, curve_name, comment, applied, saved, save_error, message }
set_anim_curve_interp_mode¶
Destructive, idempotent.
Replace the curve flags (the EAnimAssetCurveFlags bitmask) of an existing float or transform curve on a UAnimSequence with one flag, in an undo transaction, then save the package. Despite the name it changes no key interpolation or tangents: linear and editable both set Editable; metadata, drive_track and disabled set those flags. interp_mode is required; an unknown mode, curve or sequence is an error, and any curve_type other than transform means float. old_flags and new_flags are the bitmasks before and after; flags the curve already has are a success with applied=false, saved=false and a note, and nothing is written or saved; a failed save makes success false, with saved=false and save_error. get_anim_curve_data reads the flags.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Full asset path to the UAnimSequence |
curve_name |
string | yes | Name of the curve |
interp_mode |
string | yes | One of "linear|editable|metadata|drive_track|disabled" |
curve_type |
string | no | Curve type to target: float (default) or transform |
Returns: { anim_sequence_path, curve_name, interp_mode, old_flags, new_flags, applied, saved, save_error, note? }
set_anim_curve_keys¶
Destructive, idempotent.
Replace every key of an existing float curve on a UAnimSequence with the given [time, value] pairs as linear keys with auto tangents, through its data controller in an undo transaction, then save the package; num_keys is read back. The curve must exist (add_anim_float_curve first) and keys needs at least one valid pair. A transform curve is refused, since its keys are transforms, not [time, value] pairs: rekey it with add_anim_transform_curve. Any other curve_type is an error, and so is a rekey the data controller rejects, with nothing saved. A curve that already holds exactly those keys is a success with applied=false, saved=false and a note, and nothing is written or saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Full asset path to the UAnimSequence |
curve_name |
string | yes | Name of the float curve (e.g. "MyCurve") |
keys |
array | no | JSON array of [time, value] pairs, time in seconds, at least one; entries that are not such a pair are skipped, and tangents or interpolation cannot be given. |
curve_type |
string | no | Curve type to target: float (default) or transform; transform is refused with an error pointing at add_anim_transform_curve. |
Returns: { anim_sequence_path, curve_name, curve_type, num_keys, applied, saved, save_error, note? }
set_anim_frame_rate¶
Destructive, idempotent.
Set the frame rate of the data model of a UAnimSequence (IAnimationDataController::SetFrameRate, one undo step) to fps rounded to whole frames per second, then save the package; fps, numerator and denominator are read back from the data model. The data controller only takes a rate that is a multiple or a factor of the current one, and the frame count must stay whole at the new rate: any other rate is an error and nothing changes. The rate the data model already has is a success with changed=false, saved=false and a note, and nothing is written or saved. A failed save makes success false, with saved=false and save_error. get_anim_sequence_info reads the rate.
| Parameter | Type | Required | Description |
|---|---|---|---|
sequence_path |
string | yes | Asset path of the UAnimSequence. |
fps |
number | yes | New frame rate in frames per second, rounded to a whole number that must be at least 1. |
Returns: { sequence_path, fps, numerator, denominator, changed, saved, save_error, note? }
set_anim_graph_node_pin_binding¶
Destructive, idempotent.
Bind an AnimGraph node input pin to a variable or property path in the node property-binding map (the Details-panel bind chip), e.g. "TransformTrajectory" to "Trajectory"; set_anim_graph_node_property edits the FAnimNode struct instead. Returns applied and the stored binding; saves the AnimBP without recompiling (run compile_anim_blueprint).
| Parameter | Type | Required | Description |
|---|---|---|---|
node_id |
string | yes | NodeGuid of the target UAnimGraphNode_* (from get_graph_nodes). |
pin_name |
string | yes | The bound property/pin name (e.g. "TransformTrajectory"). |
binding_path |
string | yes | The variable/property path to bind the pin to (e.g. "Trajectory", or nested "MyStruct.Member"). This tool does not check that the path resolves. |
anim_blueprint_path |
string | no | Path or name of the UAnimBlueprint (aliases: anim_blueprint, blueprint_name). |
graph_name |
string | no | Target graph (optional; deep-resolved; default the top-level AnimGraph). |
anim_blueprint |
string | no | Alias of anim_blueprint_path, used only when anim_blueprint_path is absent or empty. |
blueprint_name |
string | no | Alias of anim_blueprint_path, used only when anim_blueprint_path and anim_blueprint are both absent or empty. |
Returns: { node_id, pin_name, binding_path, applied, binding:{property_name, property_path[], path_as_text, is_bound, is_promotion, binding_type, pin_category}, saved }
set_anim_graph_node_property¶
Destructive, idempotent.
Write a property of an AnimGraphNode's internal FAnimNode struct by (dotted) name. Saves the ABP but does NOT recompile it -- run compile_anim_blueprint after your edits for runtime effect.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path/name of the UAnimBlueprint. |
node_id |
string | yes | NodeGuid of the target AnimGraphNode. |
property |
string | yes | Property path inside the FAnimNode (e.g. "PoseCount", "SlotName"). A leading "Node." is tolerated. Nested structs use dots ("A.B"). |
value |
string | no | Text value (UE ImportText form: number, "EnumName", "(X=1,Y=2)"...). Use for scalars/enums/simple structs. |
value_json |
any | no | JSON value applied via JsonValueToUProperty. Use for complex/nested types. Takes precedence over value. |
graph_name |
string | no | Target graph (optional, default the top-level AnimGraph). |
Returns: { node_id, property, applied, new_value, saved }
set_anim_montage_preview_mesh¶
Destructive, idempotent.
Set the editor preview USkeletalMesh of a UAnimMontage (SetPreviewMesh, one undo step) and save the montage; it only changes what the asset editor shows, and the mesh skeleton is not checked against the montage. Returns mesh_path, prev_mesh_path and applied; the preview mesh the montage already has is a success with applied=false and saved=false, and the montage is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
mesh_path |
string | yes | Asset path of the preview USkeletalMesh (e.g. '/Engine/EngineMeshes/SkeletalCube'). |
Returns: { montage_path, mesh_path, prev_mesh_path, applied, saved, save_error, message }
set_anim_montage_rate_scale¶
Destructive, idempotent.
Set the global RateScale (and optionally BlendOutTriggerTime) on a UAnimMontage in an undo transaction and save it. Values the montage already has, or none given, are a success with applied=false and saved=false, and the montage is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Path to the UAnimMontage (e.g. '/Game/MyGame/AM_Example'). |
name |
string | no | Alias of montage_path |
rate_scale |
number | no | Global play rate scale (defaults to current value) |
blend_out_trigger_time |
number | no | Blend-out trigger time in seconds (defaults to current value) |
Returns: { montage_path, rate_scale, blend_out_trigger_time, applied, saved, save_error, message }
set_anim_montage_skeleton¶
Destructive, idempotent.
Rebind a UAnimMontage to a different USkeleton (clears existing source link + recomputes bone caches) in an undo transaction and save it. The skeleton the montage already uses is a success with applied=false and saved=false, and the montage is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
skeleton_path |
string | yes | Asset path of the new Skeleton (e.g. '/Engine/EngineMeshes/SkeletalCube_Skeleton'). |
Returns: { montage_path, skeleton_path, prev_skeleton_path, applied, saved, save_error, message }
set_anim_number_of_frames¶
Destructive, idempotent.
Set the number of frames of the data model of a UAnimSequence (IAnimationDataController::SetNumberOfFrames, one undo step), then save the package; frame_count is read back from the data model. When the data model rate differs from the sequence sampling rate (as after set_anim_frame_rate), a count that is not a whole number of frames at the sampling rate is an error naming the multiple to use, with nothing changed (only the default sampling rate is checked, not per-platform overrides of it). The current count gives saved=false and a note, with nothing saved. A count the data controller rejects is an error with nothing saved, and a failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
sequence_path |
string | yes | Asset path of the UAnimSequence. |
frame_count |
number | yes | New number of frames (integer > 0). |
Returns: { sequence_path, frame_count, saved, save_error, note? }
set_anim_retarget_source¶
Destructive, idempotent.
Set a UAnimSequence's retarget source (and optionally its retarget reference-pose sequence) in an undo transaction and save it. A ref_pose_seq_path that does not load is an error before anything changes; values the sequence already has are a success with changed=false, applied_count 0, saved=false and a note, and nothing is modified or saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Object path of the UAnimSequence to mutate. |
retarget_source |
string | no | Retarget-source name (FName). Must name an entry in the owning skeleton's retarget-source map to RESOLVE at runtime, but the property write persists regardless. Use 'None' (or empty) to clear. |
ref_pose_seq_path |
string | no | Optional object path of a UAnimSequence used as the additive retarget reference pose (RefPoseSeq). Pass empty/'None' to clear it. |
Returns: { anim_sequence_path, retarget_source, ref_pose_seq, ref_pose_seq_set, ref_pose_seq_cleared, applied_count, notes, changed, success, saved, save_error, note? }
set_anim_root_motion¶
Destructive, idempotent.
Write the three root motion settings of a UAnimSequence (bEnableRootMotion, RootMotionRootLock, bForceRootLock) and save it. All three are written on every call, so an omitted one is reset to its default; an unknown root lock name applies RefPose while the reply echoes the given text. Settings the sequence already has are a success with changed=false and saved=false, and the sequence is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_sequence_path |
string | yes | Asset path of the UAnimSequence. |
enable_root_motion |
boolean | no | Whether to enable root motion extraction (default true) |
root_motion_root_lock |
string | no | Root lock mode: RefPose|AnimFirstFrame|Zero (default RefPose) |
force_root_lock |
boolean | no | Whether to force the root lock (default false) |
Returns: { anim_sequence_path, enable_root_motion, root_motion_root_lock, force_root_lock, changed, success, saved, save_error, message }
set_anim_transition_rule_automatic¶
Destructive, idempotent.
Set the automatic rule of one transition (source_state to target_state) in a state machine of an Animation Blueprint: bAutomaticRuleBasedOnSequencePlayerInState and AutomaticRuleTriggerTime, both written every call (omitted means false and 0). Marks it structurally modified and saves without compiling; refused while PIE runs unless force=true.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Asset path of the UAnimBlueprint |
machine_name |
string | yes | Name of the state machine that owns the transition |
source_state |
string | yes | Name of the source state (transition origin) |
target_state |
string | yes | Name of the target state (transition destination) |
enabled |
boolean | no | True lets the transition fire on its own when the sequence player of the source state nears its end (bAutomaticRuleBasedOnSequencePlayerInState); omitted writes false. |
trigger_time |
number | no | AutomaticRuleTriggerTime in seconds (default 0.0; negative = blend lead) |
Returns: { anim_blueprint_path, machine_name, source_state, target_state, enabled, trigger_time, rule_graph_has_result_node, saved, save_error? }
set_anim_transition_rule_from_bool¶
Destructive, idempotent.
Wire a bool variable's getter as the rule of a transition.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Asset path of the UAnimBlueprint |
machine_name |
string | yes | Name of the state machine that owns the transition |
source_state |
string | yes | Name of the source state (transition origin) |
target_state |
string | yes | Name of the target state (transition destination) |
variable_name |
string | yes | Name of an existing bool variable on the AnimBP (or its parent C++ class) |
Returns: { anim_blueprint_path, machine_name, source_state, target_state, variable_name, variable_kind, rule_set, sink_present, contributor_count, contributor_node_class, saved, save_error? }
set_anim_transition_rule_from_comparison¶
Destructive, idempotent.
Wire a float comparison as the rule of a transition.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Asset path of the UAnimBlueprint |
machine_name |
string | yes | Name of the state machine that owns the transition |
source_state |
string | yes | Name of the source state (transition origin) |
target_state |
string | yes | Name of the target state (transition destination) |
variable_name |
string | yes | Name of an existing float variable on the AnimBP (or its parent C++ class) |
operator |
string | yes | One of "==", "!=", ">", "<", ">=", "<=" (compared against comparison_value) |
comparison_value |
number | no | Float literal on the right-hand side of the comparison |
Returns: { anim_blueprint_path, machine_name, source_state, target_state, variable_name, operator, comparison_value, variable_kind, rule_set, sink_present, contributor_count, contributor_node_classes, saved, save_error? }
set_animation_speed¶
Destructive, idempotent.
Set the play rate of a skeletal mesh component, found by object name in the editor world (or the world the world param selects), and switch its component tick on. Only a component in Use Animation Asset (single node) mode takes it: in Animation Blueprint mode nothing changes and actual_speed reads 0, so check speed_set_successfully. Transient: nothing is saved or undoable. A speed outside 0-10 or no such component is an error. For montages use play_animation with play_rate, or set_anim_montage_rate_scale on the asset.
| Parameter | Type | Required | Description |
|---|---|---|---|
component_name |
string | yes | Object name of the USkeletalMeshComponent, e.g. "CharacterMesh0", case-insensitive; the first actor in the world that has one with that name wins |
speed |
number | yes | Playback speed multiplier; must be between 0.0 and 10.0 |
world |
string | no | Optional world selector: absent/'editor' (default) | 'pie' (ambiguous: PlayWorld, else the first PIE context) | 'server' (the PIE world with authority) | 'client' | 'pie:N' | 'game' (alias of 'pie'). |
Returns: { component_name: string, requested_speed: number, previous_speed: number, actual_speed: number, speed_set_successfully: bool, previous_tick_enabled: bool, current_tick_enabled: bool, component_valid: bool, component_class: string, anim_instance_class: string?, has_anim_instance: bool, anim_instance_valid: bool?, warning: string?, world: string, world_name: string|null, world_package: string|null, world_type: string|null, net_mode: string|null, pie_instance: number }
set_blend_profile_bone¶
Destructive, idempotent.
Set a bone's blend scale on a UBlendProfile (creates profile if missing).
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | Path to the USkeleton asset |
profile_name |
string | yes | Name of the UBlendProfile (created if absent when create_if_missing=true) |
bone_name |
string | yes | Bone to scale |
scale |
number | yes | Blend scale value (clamped to [0, 1] by UBlendProfile) |
create_if_missing |
boolean | no | If true, create the profile when not present (default true) |
Returns: { asset_path, profile_name, bone_name, scale, updated, created_profile, profile_count, saved, op: "set_blend_profile_bone" }
set_blendspace_interpolation¶
Destructive, idempotent.
Set a blend space's INPUT-SMOOTHING (interpolation) per axis: smoothing time, damping ratio, max speed, smoothing type. Distinct from set_blendspace_properties (which only sets the BlendParameters axis name/min/max/grid). Writes UBlendSpace::InterpolationParam[axis] via reflection. 1D smooths axis 0 only; 2D smooths X (axis 0) and Y (axis 1). Only the supplied fields change, in one undo transaction, then the blend space is saved; an unknown smoothing type is an error before anything changes, and values the axes already have are a success with changed=false, applied_count 0, saved=false and a note, with nothing modified or saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
blend_space_path |
string | yes | Full asset path of the UBlendSpace / UBlendSpace1D. |
x_interpolation_time |
number | no | Optional X-axis smoothing time in seconds (>= 0; 0 disables smoothing). |
x_damping_ratio |
number | no | Optional X-axis damping ratio (>= 0; only used when type is SpringDamper). |
x_max_speed |
number | no | Optional X-axis maximum speed in real units (>= 0; only used when type is SpringDamper or Exponential). |
x_interpolation_type |
string | no | Optional X-axis smoothing type: Averaged|Linear|Cubic|EaseInOut|Exponential|SpringDamper. |
y_interpolation_time |
number | no | Optional Y-axis smoothing time in seconds (2D only, >= 0). |
y_damping_ratio |
number | no | Optional Y-axis damping ratio (2D only, >= 0). |
y_max_speed |
number | no | Optional Y-axis maximum speed (2D only, >= 0). |
y_interpolation_type |
string | no | Optional Y-axis smoothing type (2D only): Averaged|Linear|Cubic|EaseInOut|Exponential|SpringDamper. |
Returns: { blend_space_path, is_1d, x_axis: {interpolation_time, damping_ratio, max_speed, interpolation_type}, y_axis: {...}, applied_count, notes, changed, saved, save_error, note? }
set_blendspace_properties¶
Destructive, idempotent.
Configure an existing blend space's X and (for 2D) Y axis: name, min, max, grid divisions. create_blend_space only sets X; this sets the Y axis too (and can change X after creation). On a 1D blend space the y_axis_* params are reported as an honest note and ignored. Only the supplied fields change, in one undo transaction, then the blend space is saved; values the axes already have are a success with changed=false, applied_count 0, saved=false and a note, and nothing is modified or saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
blend_space_path |
string | yes | Full asset path of the UBlendSpace / UBlendSpace1D. |
x_axis_name |
string | no | Optional X axis display name. |
x_axis_min |
number | no | Optional X axis minimum value. |
x_axis_max |
number | no | Optional X axis maximum value. |
x_axis_grid |
integer | no | Optional X axis grid divisions (>= 1). |
y_axis_name |
string | no | Optional Y axis display name (2D only). |
y_axis_min |
number | no | Optional Y axis minimum value (2D only). |
y_axis_max |
number | no | Optional Y axis maximum value (2D only). |
y_axis_grid |
integer | no | Optional Y axis grid divisions (2D only, >= 1). |
Returns: { blend_space_path, is_1d, x_axis: {name, min, max, grid}, y_axis: {name, min, max, grid}, applied_count, notes, changed, saved, save_error, note? }
set_bone_parent¶
Destructive, idempotent.
Re-parent a bone (pass empty parent_name to make it a new root).
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | Path to the USkeleton asset |
bone_name |
string | yes | Bone to re-parent |
parent_name |
string | no | New parent bone name, or empty/null to detach to root |
Returns: { asset_path, bone_name, parent_name, bone_index, parent_index, updated, not_found, bone_count, saved, op: "set_bone_parent" }
set_bone_transform¶
Destructive, idempotent.
Update the local reference-pose transform of an existing bone
| Parameter | Type | Required | Description |
|---|---|---|---|
skeleton_path |
string | yes | Path to the USkeleton asset |
bone_name |
string | yes | Bone to update |
local_transform |
object | yes | {location:[x,y,z], rotation:[p,y,r], scale:[x,y,z]} — all three required |
Returns: { asset_path, bone_name, bone_index, updated, not_found, bone_count, saved, op: "set_bone_transform" }
set_ik_bone_settings¶
Destructive, idempotent.
Set bone-specific settings for a bone within a solver, as one undo transaction, then save the IK Rig asset; a failed save makes success false, with saved=false and save_error. Partial update (idempotent): only fields present in settings are applied; bone settings are auto-created if absent (a bone the rig skeleton lacks is an error, with nothing changed), and existing settings that already have those values give changed false, saved false and a note, with nothing saved. FullBodyIK snake_case keys: rotation_stiffness (0-1), position_stiffness (0-1), limit_x/limit_y/limit_z ("Free"/"Limited"/"Locked"), min_x, max_x, min_y, max_y, min_z, max_z, use_preferred_angles (bool), preferred_x, preferred_y, preferred_z. StretchLimb uses its live bone struct's camelCase keys (squashDirection: {x,y,z}). Only FullBodyIK and StretchLimb support per-bone settings; others return an honest error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Content path to the IK Rig asset. |
solver_index |
number | yes | Index of the solver. |
bone_name |
string | yes | Name of the bone to modify. |
settings |
object | yes | Object with bone-specific fields to set. |
Returns: { ik_rig_path: string, solver_index: int, bone_name: string, success: bool, changed: bool, saved: bool, save_error?: string, note?: string }
set_ik_goal_settings¶
Destructive, idempotent.
Set goal-specific settings for a goal connected to a solver, as one undo transaction, then save the IK Rig asset. Partial update (idempotent): only fields present in settings are applied. FullBodyIK uses snake_case keys: bone_name, chain_depth (0+), strength_alpha (0-1), pull_chain_alpha (0-1), pin_rotation (0-1). BodyMover uses its live goal struct's camelCase keys (influenceMultiplier 0-10, clamped server-side). Connect the goal first with connect_ik_goal_to_solver. Solvers without per-goal settings return an honest error. Settings that already have those values give changed false, saved false and a note, with nothing saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Content path to the IK Rig asset. |
solver_index |
number | yes | Index of the solver. |
goal_name |
string | yes | Name of the goal to modify. |
settings |
object | yes | Object with goal-specific fields to set. |
Returns: { ik_rig_path: string, solver_index: int, goal_name: string, success: bool, changed: bool, saved: bool, save_error?: string, note?: string }
set_ik_retarget_chain_bones¶
Destructive, idempotent.
Change the start bone, end bone and/or IK goal of an existing retarget chain in an IK Rig asset through the IK Rig controller (each change an undo transaction), then save the asset. Pass at least one of the three, else an error. A missing chain, a bone not in the rig skeleton or a goal_name the rig has no goal for is not an error but start_bone_set, end_bone_set or goal_set false, and that field is left unchanged. A value the chain already has is left alone; when nothing changes, changed is false, saved is false, a note says why and nothing is saved. A failed save makes success false, with saved=false and save_error. Siblings: add_ik_retarget_chain, rename_ik_retarget_chain.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Path to the UIKRigDefinition asset |
chain_name |
string | yes | Name of the retarget chain to mutate |
start_bone |
string | no | Optional new start bone |
end_bone |
string | no | Optional new end bone |
goal_name |
string | no | Optional new associated IK goal, which must be a goal of the rig; None clears the goal of the chain. |
Returns: { asset_path: string, chain_name: string, start_bone: string, end_bone: string, goal_name: string, start_bone_set: bool, end_bone_set: bool, goal_set: bool, changed: bool, saved: bool, save_error?: string, note?: string }
set_ik_solver_bones¶
Destructive, idempotent.
Set the start bone and/or end bone of one solver in an IK Rig asset (0-based stack index) through the IK Rig controller, which records each change as an undo transaction, then save the asset. Pass at least one bone, else an error. An out-of-range index, a bone missing from the rig skeleton, or a start or end bone on a solver type without one is not an error: start_bone_set or end_bone_set comes back false, next to the bones read back, and nothing is stored for it. A bone the solver already has is left alone; when nothing changes, changed is false, saved is false, a note says why and nothing is saved. A failed save makes success false, with saved=false and save_error. get_ik_solver_bones reads them.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Path to the UIKRigDefinition asset |
solver_index |
number | yes | 0-based solver index |
start_bone |
string | no | Optional start bone name |
end_bone |
string | no | Optional end bone name |
Returns: { asset_path: string, solver_index: int, start_bone: string, end_bone: string, start_bone_set: bool, end_bone_set: bool, changed: bool, saved: bool, save_error?: string, note?: string }
set_ik_solver_enabled¶
Destructive, idempotent.
Enable or disable the solver at a 0-based index of an IK Rig asset through the IK Rig controller (one undo transaction), then save the asset; enabled is read back. An out-of-range index is not an error but set_ok false, and a solver already in the requested state gives changed false: in both cases saved is false, a note says why and nothing is saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Path to the UIKRigDefinition asset |
solver_index |
number | yes | 0-based solver index |
enabled |
boolean | no | Optional bool; defaults to true |
Returns: { asset_path: string, solver_index: int, enabled: bool, set_ok: bool, changed: bool, saved: bool, save_error?: string, note?: string }
set_ik_solver_settings¶
Destructive, idempotent.
Set detailed solver-specific settings on a solver in an IK Rig, as one undo transaction, then save the asset. Partial update: only fields present in settings are applied (idempotent). FullBodyIK uses snake_case keys: root_bone, iterations (0-1000), sub_iterations (0-1000), mass_multiplier (0-10), allow_stretch (bool), root_behavior (enum string), global_pull_chain_alpha (0-1), max_angle (0-45), over_relaxation (1-2). Other solver types (Limb/Pole/BodyMover/SetTransform/StretchLimb) accept the camelCase names of their live settings struct; ClampMin/ClampMax bounds are enforced server-side. Settings that already have those values give changed false, saved false and a note, with nothing saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_rig_path |
string | yes | Content path to the IK Rig asset. |
solver_index |
number | yes | Index of the solver in the rig's solver stack. |
settings |
object | yes | Object with solver-type-specific fields to set. |
Returns: { ik_rig_path: string, solver_index: int, solver_type: string, success: bool, changed: bool, saved: bool, save_error?: string, note?: string }
set_montage_blend_times¶
Destructive, idempotent.
Set the blend-in / blend-out times (clamped to >= 0) on a UAnimMontage in an undo transaction and save it. Times the montage already has, or none given, are a success with applied=false and saved=false, and the montage is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
blend_in |
number | no | Blend-in time in seconds (defaults to current value) |
blend_out |
number | no | Blend-out time in seconds (defaults to current value) |
Returns: { montage_path, blend_in, blend_out, applied, saved, save_error, message }
set_montage_properties¶
Destructive, idempotent.
Set only the supplied blend modes, auto blend out, trigger time, sync group/slot and deprecated root motion fields of a UAnimMontage in one undo step and save it; bad enum names, or no field, are refused before any change, and supplied values the montage already has are a success with changed=false, applied_count 0 and saved=false, with nothing modified or saved. For blend times use set_montage_blend_times. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
blend_mode_in |
string | no | BlendModeIn: 'Standard' or 'Inertialization' (EMontageBlendMode). Optional. |
blend_mode_out |
string | no | BlendModeOut: 'Standard' or 'Inertialization' (EMontageBlendMode). Optional. |
enable_auto_blend_out |
boolean | no | When true the montage blends out by itself near its end (bEnableAutoBlendOut); omitted keeps the current value. |
blend_out_trigger_time |
number | no | BlendOutTriggerTime in seconds (<0 = auto from BlendOut time). Optional. |
sync_group |
string | no | Sync group name (SyncGroup) the montage joins for marker-based sync; an empty string sets None, omitted keeps the current value. |
sync_slot_index |
number | no | Zero-based index of the slot track whose animation drives the sync group (SyncSlotIndex); omitted keeps the current value. |
enable_root_motion_translation |
boolean | no | bEnableRootMotionTranslation (bool, DEPRECATED since 4.5). Optional. |
enable_root_motion_rotation |
boolean | no | bEnableRootMotionRotation (bool, DEPRECATED since 4.5). Optional. |
root_motion_root_lock |
string | no | RootMotionRootLock: 'RefPose'|'AnimFirstFrame'|'Zero' (DEPRECATED since 4.5). Optional. |
Returns: { montage_path, blend_mode_in, blend_mode_out, enable_auto_blend_out, blend_out_trigger_time, sync_group, sync_slot_index, root_motion: {...}, applied_count, notes, changed, saved, save_error, message }
set_montage_section_start_time¶
Destructive, idempotent.
Set the StartTime on an existing FCompositeSection by zero-based section_index, in an undo transaction, and save it. The start time the section already has is a success with applied=false and saved=false, and the montage is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
section_index |
number | yes | Zero-based index into CompositeSections. |
start_time |
number | yes | Absolute section start time in seconds. |
Returns: { montage_path, section_index, start_time, applied, saved, save_error, message }
set_montage_segment_anim_sequence¶
Destructive, idempotent.
Rebind an existing FAnimSegment on a slot track to a different UAnimSequence (resets segment start/end times to the new sequence's range, play rate and loop count to 1 and its start position to 0) in an undo transaction and save the montage. A segment that already references that sequence with those values is a success with applied=false and saved=false, and the montage is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
slot_name |
string | yes | Name of the slot track containing the segment (e.g. 'DefaultSlot'). |
segment_index |
number | yes | Zero-based index into the slot track's AnimSegments. |
anim_sequence_path |
string | yes | Object path of the UAnimSequence to reference (must share the montage's skeleton). |
Returns: { montage_path, slot_name, segment_index, anim_sequence_path, anim_start_time, anim_end_time, applied, saved, save_error, message }
set_montage_segment_start_time¶
Destructive, idempotent.
Set the AnimStartTime on an existing FAnimSegment by (slot_name, segment_index), clamped to [0, AnimEndTime], in an undo transaction, and save the montage. AnimEndTime is left untouched. The (clamped) start time the segment already has is a success with applied=false and saved=false, and the montage is neither modified nor saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
slot_name |
string | yes | Name of the slot track containing the segment. |
segment_index |
number | yes | Zero-based index into the slot track's AnimSegments. |
start_time |
number | yes | New AnimStartTime in seconds (clamped to [0, AnimEndTime]). |
Returns: { montage_path, slot_name, segment_index, start_time, anim_end_time, applied, saved, save_error, message, note? }
set_morph_target_deltas¶
Destructive, idempotent.
Set vertex deltas for a morph target on a specific LOD. Each delta is a dict with keys: vertex_index (int), position_delta ({x,y,z}), normal_delta ({x,y,z}).
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
morph_target_name |
string | yes | Name of the morph target to modify |
deltas |
array | yes | List of delta dicts, e.g. [{"vertex_index": 0, "position_delta": {"x": 1.0, "y": 0, "z": 0}, "normal_delta": {"x": 0, "y": 0, "z": 0}}] |
lod_index |
number | no | LOD index to populate (default 0) |
Returns: { morph_target_name: string, lod_index: int, deltas_set: int, total_deltas_lod0: int, saved: bool }
set_morph_target_generated_by_engine¶
Destructive, idempotent.
Flag morph targets of a skeletal mesh asset as generated by engine tools rather than imported from a source file, on every LOD, then save the mesh (a failed save is an error). The flag is only ever set, never cleared; names not on the mesh are ignored, and an empty or missing list flags every morph. When any flag changes the engine runs PreEditChange/PostEditChange on the mesh, which rebuilds it. modified says whether anything changed; flagged lists every morph now marked on LOD 0. Names come from get_skeletal_mesh_morph_targets.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
morph_target_names |
array | no | List of morph target names to flag; empty list = flag every morph on the mesh |
Returns: { skeletal_mesh_path: string, requested_count: int, named_list: bool, modified: bool, flagged: [string], note: string }
set_motion_warping_component_search_in_anims¶
Destructive, idempotent.
Set bSearchForWindowsInAnimsWithinMontages on the UMotionWarpingComponent of an editor-world actor found by internal name (not label): when true, warping windows are also searched in animations inside montages. Marks the level dirty, not saved; returns previous and new values and changed.
| Parameter | Type | Required | Description |
|---|---|---|---|
actor_name |
string | yes | Internal object name of the actor with the UMotionWarpingComponent, e.g. "BP_Hero_C_0"; the outliner label does not match. |
enabled |
boolean | yes | Sets bSearchForWindowsInAnimsWithinMontages: when true, motion-warping windows are also searched in animations nested inside montages (required, no default) |
Returns: { actor_name, previous_search_in_anims: bool, new_search_in_anims: bool, changed: bool }
set_motion_warping_target_bone_name¶
Destructive, idempotent.
Set the BoneName on an existing FMotionWarpingTarget (resolves the existing Component ref).
| Parameter | Type | Required | Description |
|---|---|---|---|
actor_name |
string | yes | Engine name of the actor carrying the UMotionWarpingComponent |
warp_target_name |
string | yes | FName of the existing warp target on the component |
bone_name |
string | yes | Skeletal bone on the target's Component to anchor to; NAME_None follows the component root |
Returns: { actor_name, warp_target_name, previous_bone_name: string, new_bone_name: string, changed: bool }
set_motion_warping_target_follow_component¶
Destructive, idempotent.
Set bFollowComponent on an existing component-based warp target of an editor-world actor found by internal name, keeping its Component, BoneName and offsets. A missing target, or one without a Component, is an error. WarpTargets is Transient, so the change is not saved with the level.
| Parameter | Type | Required | Description |
|---|---|---|---|
actor_name |
string | yes | Internal object name of the actor with the UMotionWarpingComponent, e.g. "BP_Hero_C_0"; the outliner label does not match. |
warp_target_name |
string | yes | FName of the existing warp target on the component |
follow |
boolean | yes | When true the target tracks the Component's live transform each frame; when false it snapshots the current transform (required, no default) |
Returns: { actor_name, warp_target_name, previous_follow: bool, new_follow: bool, changed: bool }
set_motion_warping_target_location¶
Destructive, idempotent.
Update an existing FMotionWarpingTarget's location (and optionally rotation) by FName -- an idempotent replace-in-place. Choose this over add_warp_target_to_component when the target already exists and you only want to nudge where it points; add_warp_target_to_component is the one that CREATES a target.
| Parameter | Type | Required | Description |
|---|---|---|---|
actor_name |
string | yes | Engine name of the actor carrying the UMotionWarpingComponent |
warp_target_name |
string | yes | FName of the existing target |
location |
array | no | [x, y, z] world location |
rotation |
array | no | Optional [pitch, yaw, roll] rotation; defaults to ZeroRotator |
Returns: { actor_name, warp_target_name, location_set, previous_count, new_count }
set_motion_warping_target_location_offset¶
Destructive, idempotent.
Set LocationOffset (FVector) on an existing FMotionWarpingTarget (keeps BoneName/follow/rotation-offset).
| Parameter | Type | Required | Description |
|---|---|---|---|
actor_name |
string | yes | Engine name of the actor carrying the UMotionWarpingComponent |
warp_target_name |
string | yes | FName of the existing warp target on the component |
location_offset |
array | no | [x, y, z] offset applied to the target relative to its LocationOffsetDirection |
Returns: { actor_name, warp_target_name, previous_x, previous_y, previous_z, new_x, new_y, new_z, changed: bool }
set_motion_warping_target_rotation¶
Destructive, idempotent.
Set the rotation of an existing warp target of an editor-world actor (found by internal name), keeping its Location. The target is rebuilt as a plain transform target, so a component-based one loses its Component, BoneName, follow flag and offsets. WarpTargets is Transient: not saved.
| Parameter | Type | Required | Description |
|---|---|---|---|
actor_name |
string | yes | Internal object name of the actor with the UMotionWarpingComponent, e.g. "BP_Hero_C_0"; the outliner label does not match. |
warp_target_name |
string | yes | FName of the existing warp target on the component |
rotation |
array | no | New world rotation in degrees as [pitch, yaw, roll]; omitted means [0, 0, 0]. |
Returns: { actor_name, warp_target_name, previous_pitch, previous_yaw, previous_roll, new_pitch, new_yaw, new_roll, changed: bool }
set_pose_asset_base_pose¶
Destructive, idempotent.
Set which named pose of a UPoseAsset is its base pose (UPoseAsset::SetBasePoseName) in an undo transaction, then save the asset; an empty or None base_pose_name goes back to the skeleton reference pose. A name the asset does not contain is an error before anything changes, and so is a base pose the engine does not take (read back from the asset), with nothing saved. The base pose the asset already has is a success with applied=false and saved=false, and nothing is modified or saved. A failed save makes success false, with saved=false and save_error. The base pose only drives evaluation of an additive pose asset, which additive and note report. Edit poses with add_pose_to_pose_asset, rename_pose_in_pose_asset and remove_pose_from_pose_asset.
| Parameter | Type | Required | Description |
|---|---|---|---|
pose_asset_path |
string | yes | Path to the UPoseAsset. |
base_pose_name |
string | no | Name of the pose to use as the base; empty/None resets to the reference pose. |
Returns: { pose_asset_path, base_pose_name, requested_name, applied, base_pose_index, is_reference_pose, additive, note, saved, save_error, message }
set_pose_search_database_schema¶
Destructive, idempotent.
Bind a UPoseSearchSchema to a UPoseSearchDatabase (assigns the Schema field). Use it right after creating a database with no schema, or to rebind an existing one; a database without a schema cannot be indexed.
| Parameter | Type | Required | Description |
|---|---|---|---|
database_path |
string | yes | Asset path of the UPoseSearchDatabase (required). |
schema_path |
string | yes | Asset path of the UPoseSearchSchema to bind (required). |
Returns: { database_path, previous_schema_path, new_schema_path, changed: bool, saved: bool }
set_pose_search_schema_mirror_data_table¶
Destructive, idempotent.
Bind (or rebind) the UMirrorDataTable of the schema's FPoseSearchRoledSkeleton entry under role (default role when omitted). Refused when no entry has that role.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | yes | Asset path of the UPoseSearchSchema to edit (required). |
mirror_data_table_path |
string | yes | Asset path of the UMirrorDataTable to bind under the given role (required). |
role |
string | no | Role name (FName) identifying the FPoseSearchRoledSkeleton entry within a multi-character schema (optional; empty = default role). |
Returns: { asset_path, role, previous_mirror_data_table_path, new_mirror_data_table_path, changed, saved }
set_pose_search_schema_properties¶
Destructive, idempotent.
Author UPoseSearchSchema scalar tunables via reflection (partial merge + clamp). Replaces the 8 former per-field set_pose_search_schema_* setters.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | yes | Asset path of the target UPoseSearchSchema (required). |
properties |
object | yes | Object of UPoseSearchSchema UPROPERTY fields to merge; keys are the C++ property NAMES (case-insensitive), absent keys untouched. Covers: SampleRate(int, ClampMin=1 ClampMax=240), bAddDataPadding(bool), bInjectAdditionalDebugChannels(bool), bDrawInjectAdditionalDebugChannels(bool), NumberOfPermutations(int, ClampMin=1), PermutationsSampleRate(int, ClampMin=1 ClampMax=240), PermutationsTimeOffset(float), DataPreprocessor(enum name: None/Normalize/NormalizeOnlyByDeviation/NormalizeWithCommonSchema). Object-refs (skeleton, mirror_data_table) and the role tag are set via their dedicated commands, not here. |
Returns: { asset_path, asset_class, settings, applied_keys, changed, saved }
set_pose_search_schema_role¶
Destructive, idempotent.
Rename the role (FName) of the schema's FPoseSearchRoledSkeleton entry under role_from (default role when omitted). Refused when new_role is already taken by another entry.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | yes | Asset path of the UPoseSearchSchema to edit (required). |
new_role |
string | yes | New role name (FName) to assign to the entry, identifying it within a multi-character schema (required). |
role_from |
string | no | Existing role name (FName) of the FPoseSearchRoledSkeleton entry to rename (optional; empty = default role). |
Returns: { asset_path, previous_role, new_role, changed, saved }
set_pose_search_schema_skeleton¶
Destructive, idempotent.
Bind (or rebind) the USkeleton of the schema's FPoseSearchRoledSkeleton entry under role. Idempotent by role: if a skeleton is already bound under that role it is REPLACED; if no roled entry exists for that role yet, one is created. Use add_pose_search_roled_skeleton instead when you want to ADD a second character's role without disturbing the first.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset_path |
string | yes | Asset path of the UPoseSearchSchema to edit (required). |
skeleton_path |
string | yes | Asset path of the USkeleton to bind under the given role (required). |
role |
string | no | Role name (FName) identifying the FPoseSearchRoledSkeleton entry within a multi-character schema (optional; empty = default role). |
Returns: { asset_path, role, previous_skeleton_path, new_skeleton_path, changed, saved }
set_retarget_pose_bone_rotation¶
Destructive, idempotent.
Set a bone's rotation offset in the current retarget pose (euler degrees) of an IK Retargeter asset, as one undo transaction, then save the asset; the offset is read back as quat_x..quat_w. Creates a default pose if none is current. bone_name is stored as given, not checked against the skeleton. When the pose to edit is already current and already holds exactly that offset for the bone, changed is false, saved is false, a note says so and nothing is saved. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_retargeter_path |
string | yes | Path to the UIKRetargeter asset |
bone_name |
string | yes | Name of the bone to update |
source_or_target |
string | no | Optional "Source" or "Target" scope; defaults to "Target" |
pitch |
number | no | Euler pitch in degrees (used when no quat is provided) |
yaw |
number | no | Euler yaw in degrees |
roll |
number | no | Euler roll in degrees |
quat_x |
number | no | Optional quaternion X |
quat_y |
number | no | Optional quaternion Y |
quat_z |
number | no | Optional quaternion Z |
quat_w |
number | no | Optional quaternion W |
rotation |
object | no | Optional nested {x, y, z, w} quaternion object |
pose_name |
string | no | Optional explicit retarget pose name; created if missing |
Returns: { asset_path: string, bone_name: string, source_or_target: string, retarget_pose: string, quat_x: number, quat_y: number, quat_z: number, quat_w: number, changed: bool, saved: bool, save_error?: string, note?: string }
set_retargeter_chain_mapping¶
Destructive, idempotent.
Make source_chain drive target_chain in an IK Retargeter asset, overwriting the previous mapping, on every op whose chain mapping lists target_chain (or only the op named op_name), in one undo transaction, then save the asset. source_chain is not validated, so a misspelled name is stored as given. set_ok is false when no op lists target_chain; mapped_source is read back from the first matching op. When no op lists target_chain, or every one already maps it to source_chain, changed is false, saved is false, a note says why and nothing is saved. A failed save makes success false, with saved=false and save_error. get_ik_retargeter_info shows the per-op mappings.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_retargeter_path |
string | yes | Path to the UIKRetargeter asset |
source_chain |
string | yes | Name of the source retarget chain |
target_chain |
string | yes | Name of the target retarget chain to map to |
op_name |
string | no | Optional op name as get_ik_retargeter_info lists it; omitted, every op whose chain mapping lists target_chain is updated |
Returns: { asset_path: string, source_chain: string, target_chain: string, mapped_source: string, set_ok: bool, changed: bool, saved: bool, save_error?: string, note?: string }
set_retargeter_op_settings¶
Destructive, idempotent.
Partial-merge a retarget op's live settings struct (only the JSON fields present are written -> idempotent), and optionally toggle the op enabled flag, as one undo transaction, then save the asset. Settings keys match get_retargeter_op_info (first char lower-cased, e.g. lODThreshold). Numeric ClampMin/ClampMax metadata is enforced after the merge. The optional enabled flag is applied via the controller. The payload echoes the read-back settings. When neither is given, or the op already has those settings and that enabled state, changed is false, saved is false, a note says why and nothing is saved. An out-of-range op_index is an error. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
ik_retargeter_path |
string | yes | Content path to the UIKRetargeter asset. |
op_index |
number | yes | 0-based index of the op in the retargeter's op stack. |
settings |
object | no | Partial settings object; only present fields are written (e.g. { lODThreshold: 5 }). |
enabled |
boolean | no | Optional: enable/disable the op (applied via the controller). |
Returns: { asset_path: string, op_index: int, op_name: string, op_type: string, enabled: bool, settings: object, changed: bool, saved: bool, save_error?: string, note?: string }
set_rig_control_limits¶
Destructive, idempotent.
Set a scalar Control Rig control's min/max limits (Float/ScaleFloat/Integer). Enables the limit array for the control type and sets MinimumValue/MaximumValue type-correctly; once enabled, set_rig_control_value clamps via ApplyLimits. Verified read-back.
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Path to the UControlRigBlueprint asset. |
control_name |
string | yes | Name of an existing control element (Float/ScaleFloat/Integer). |
min |
number | yes | Minimum value (number). |
max |
number | yes | Maximum value (number). |
enable |
boolean | no | Whether to enable the limits (optional, default true). |
Returns: { asset_path: string, control_name: string, control_type: string, min: number, max: number, limit_enabled: bool, saved: bool, save_error?: string }
set_rig_control_settings¶
Destructive, idempotent.
Edit an existing Control Rig control's shape/gizmo/color/limit-draw settings (the bits add_rig_control can't set afterwards). Read-modify-write: reads the control's FRigControlSettings, applies the provided fields, writes back via URigHierarchyController::SetControlSettings, recompiles + saves, and returns the verified read-back. Only the supplied fields change.
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Path to the UControlRigBlueprint asset. |
control_name |
string | yes | Name of an existing control element. |
display_name |
string | no | Optional display name (FName) for the control. |
shape_name |
string | no | Optional gizmo shape name (e.g. "Default", "Box", "Sphere", "Circle"). |
shape_color |
array | no | Optional shape color [R, G, B] or [R, G, B, A] floats (0..1). |
shape_visible |
boolean | no | Optional bool: whether the gizmo shape is visible in 3D. |
draw_limits |
boolean | no | Optional bool: whether to draw the control's limits in debug. |
Returns: { asset_path: string, control_name: string, settings_applied: { display_name, shape_name, shape_color: [float], shape_visible, draw_limits }, applied_count: int, saved: bool, save_error?: string }
set_rig_control_shape_transform¶
Destructive, idempotent.
Set the local shape (gizmo) transform of an existing Control Rig control. Reads the current local shape transform, overrides only the supplied location/rotation/scale, writes back via URigHierarchy::SetControlShapeTransform, recompiles + saves, and returns the verified read-back. This positions the manipulator gizmo relative to the control, independent of the control's value.
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Path to the UControlRigBlueprint asset. |
control_name |
string | yes | Name of an existing control element. |
location |
array | no | Optional [X, Y, Z] gizmo location. |
rotation |
array | no | Optional [Pitch, Yaw, Roll] gizmo rotation. |
scale |
array | no | Optional [X, Y, Z] gizmo scale. |
Returns: { asset_path: string, control_name: string, shape_transform: { location: [float], rotation: [float], scale: [float] }, applied_count: int, saved: bool, save_error?: string }
set_rig_control_value¶
Destructive, idempotent.
Set a Control Rig control's pose value (Initial + Current), type-correct per the control's ERigControlType. add_rig_control only seeds the identity value. SetControlValue applies the control's limits, so a value outside an enabled min/max is clamped (set limits first with set_rig_control_limits). Verified read-back.
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Path to the UControlRigBlueprint asset. |
control_name |
string | yes | Name of an existing control element. |
value |
string | no | The value: bool (Bool), number (Float/ScaleFloat/Integer), or [x,y(,z)] (Vector2D/Position/Scale/Rotator). |
Returns: { asset_path: string, control_name: string, control_type: string, value: any, saved: bool, save_error?: string }
set_rigvm_pin_default¶
Destructive, idempotent.
Set the default value of a pin in the main RigVM graph of a Control Rig Blueprint (URigVMController::SetPinDefaultValue, no undo entry), then compile and save it. success reflects the save even when the write failed: check set, pin_found and current_value, which is read back.
| Parameter | Type | Required | Description |
|---|---|---|---|
control_rig_path |
string | yes | Asset path of the UControlRigBlueprint, e.g. "/Game/Rigs/CR_Mannequin". |
pin_path |
string | yes | Pin path NodeName.PinName, e.g. SetTransform.bInitial |
value |
string | yes | Value in UE export-text form, e.g. "true", "1.0" or "(X=0.0,Y=0.0,Z=1.0)"; array pins are resized to the given element count. |
Returns: { asset_path: string, pin_path: string, value: string, set: bool, pin_found: bool, current_value: string, saved: bool, save_error: string }
set_skeletal_mesh_allow_cpu_access¶
Destructive, idempotent.
Set bAllowCPUAccess on every LOD of a skeletal mesh. Used to keep vertex/skin data resident for FX sampling or other CPU work.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
b_allow |
boolean | no | New value for the flag (default true) |
Returns: { skeletal_mesh_path: string, b_allow: bool, applied_lods: int, saved: bool }
set_skeletal_mesh_anim_class¶
Destructive, idempotent.
Repoint a Blueprint's skeletal mesh component AnimClass to a (fork) AnimBlueprint. Also handles the INHERITED native Character Mesh, which is not in the SCS and which the generic component-property setters cannot reach: it writes the CDO component archetype so spawned instances inherit the new AnimClass. Also sets AnimationMode=AnimationBlueprint.
| Parameter | Type | Required | Description |
|---|---|---|---|
blueprint_name |
string | yes | Character/Actor Blueprint (name or path), e.g. "BP_MyCharacter". |
anim_class |
string | yes | The AnimBlueprint to use: an ABP asset path (resolved to its generated class) or a "..._C" class path/name. |
component_name |
string | no | Skeletal mesh component to target (optional). Omit to target the Character's inherited Mesh. |
Returns: { blueprint, component, anim_class, previous_anim_class, applied, wrote_cdo_archetype, saved }
set_skeletal_mesh_lod_build_settings¶
Destructive, idempotent.
Change the stored build settings of one LOD of a skeletal mesh asset, only the fields you pass, and save the mesh. The mesh is not rebuilt here, so the settings take effect at its next build or reimport; a failed save returns an error. Returns settings_applied.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Skeletal mesh asset path, e.g. "/Game/Characters/SKM_Hero". |
lod_index |
number | no | 0-based LOD index (default 0); an index the mesh does not have fails the call. |
recompute_normals |
boolean | no | Ignore the imported normals and recompute them (bRecomputeNormals). |
recompute_tangents |
boolean | no | Ignore the imported tangents and recompute them (bRecomputeTangents). |
use_mikk_t_space |
boolean | no | Use MikkTSpace when computing tangents (bUseMikkTSpace). |
compute_weighted_normals |
boolean | no | Weight computed normals by triangle area and corner angle (bComputeWeightedNormals). |
remove_degenerates |
boolean | no | Remove degenerate triangles at build time (bRemoveDegenerates). |
high_precision_tangents |
boolean | no | Store tangents at 16-bit instead of 8-bit precision (bUseHighPrecisionTangentBasis). |
high_precision_weights |
boolean | no | Use 16-bit instead of 8-bit skin weights for rendering (bUseHighPrecisionSkinWeights). |
full_precision_uvs |
boolean | no | Store UVs at full floating-point precision (bUseFullPrecisionUVs). |
bone_influence_limit |
number | no | Maximum bone influences per vertex; 0 uses the DefaultBoneInfluenceLimit project setting, and values above the project limit have no effect. |
Returns: { lod_index: int, settings_applied: {...}, saved: bool }
set_skeletal_mesh_lod_reduction_settings¶
Destructive, idempotent.
Author a LOD's FSkeletalMeshOptimizationSettings (ReductionSettings) — the data bake_skeletal_mesh_lod consumes, making the bake steerable instead of running with defaults. Partial update (idempotent): only fields present are written. Enums are by name (full "SMTC_NumOfTriangles" or short "NumOfTriangles"). termination_criterion (SMTC_) and reduction_method (SMOT_) are DISTINCT.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset. |
lod_index |
number | no | LOD index to modify (default 0). |
termination_criterion |
string | no | SMTC_*: NumOfTriangles|NumOfVerts|TriangleOrVert|AbsNumOfTriangles|AbsNumOfVerts|AbsTriangleOrVert. |
reduction_method |
string | no | SMOT_*: NumOfTriangles|MaxDeviation|TriangleOrDeviation. |
num_of_triangles_percentage |
number | no | float ratio of triangles to retain (0.1 = 10%). |
num_of_vert_percentage |
number | no | float ratio of vertices to retain. |
max_deviation_percentage |
number | no | float [0,1], accuracy target when reduction_method=MaxDeviation. |
max_num_of_triangles |
number | no | int absolute triangle cap (ClampMin 4). |
max_num_of_verts |
number | no | int absolute vertex cap (ClampMin 6). |
max_num_of_triangles_percentage |
number | no | int (editor-only) cap when using percentage criterion (ClampMin 4). |
max_num_of_verts_percentage |
number | no | int (editor-only) cap when using percentage criterion (ClampMin 6). |
base_lod |
number | no | int base LOD index to generate from (default 0). |
silhouette_importance |
string | no | SMOI_*: Off|Lowest|Low|Normal|High|Highest. |
texture_importance |
string | no | SMOI_* importance of texture density. |
shading_importance |
string | no | SMOI_* importance of shading quality. |
skinning_importance |
string | no | SMOI_* importance of skinning quality. |
max_bones_per_vertex |
number | no | int max bone influences per vertex (ClampMin 1). |
welding_threshold |
number | no | float vertex weld distance. |
normals_threshold |
number | no | float hard-edge angle in degrees (used when recalc_normals). |
recalc_normals |
boolean | no | bool recompute normals. |
remap_morph_targets |
boolean | no | bool remap morph targets onto the reduced LOD. |
enforce_bone_boundaries |
boolean | no | bool penalize collapses across different major bones. |
Returns: { lod_index: int, settings_applied: {...}, saved: bool }
set_skeletal_mesh_lod_screen_size¶
Destructive, idempotent.
Set ScreenSize.Default (the screen size at which this LOD switches in) of one LOD of a skeletal mesh asset. Marks the mesh dirty but does NOT save it, so follow with save_asset; per-platform overrides are left as they are. Returns old_screen_size and screen_size.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Skeletal mesh asset path, e.g. "/Game/Characters/SKM_Hero". |
lod_index |
number | yes | 0-based LOD index; must be below the LOD count of the mesh. |
screen_size |
number | yes | New ScreenSize.Default value, e.g. 0.3; the call fails without it. |
Returns: { skeletal_mesh_path: string, lod_index: int, old_screen_size: float, screen_size: float, applied: bool }
set_skeletal_mesh_lod_settings¶
Destructive, idempotent.
Set the remaining flat per-LOD scalars/enums of FSkeletalMeshLODInfo that no other setter covers (hysteresis, CPU access, morph error tolerance, skin cache usage, mesh deformer, prioritization weight). Partial update (idempotent): only fields present are written.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset. |
lod_index |
number | no | LOD index to modify (default 0). |
lod_hysteresis |
number | no | float, avoids flickering at the LOD boundary. |
allow_cpu_access |
boolean | no | bool, keep this LOD's data on the CPU (e.g. for FX sampling). |
morph_target_position_error_tolerance |
number | no | float in microns, Clamp 0.01..10000 (default 20). |
skin_cache_usage |
string | no | ESkinCacheUsage by NAME: Auto|Disabled|Enabled (Disabled=255, parsed by name). |
allow_mesh_deformer |
boolean | no | bool, whether a Mesh Deformer is used on this LOD. |
weight_of_prioritization |
number | no | float >=0, weight given to BonesToPrioritize/SectionsToPrioritize. |
Returns: { lod_index: int, settings_applied: {...}, saved: bool }
set_skeletal_mesh_material_slot¶
Destructive, idempotent.
Assign a material to an existing material slot of a skeletal mesh ASSET (writes FSkeletalMaterial.MaterialInterface in USkeletalMesh::GetMaterials()). Address the slot by slot_index OR slot_name (exactly one). Never auto-grows the slot array.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the USkeletalMesh asset. |
material_path |
string | yes | Content path to the UMaterialInterface to assign. |
slot_index |
number | no | Zero-based index of an existing material slot (mutually exclusive with slot_name). |
slot_name |
string | no | Name of an existing material slot to resolve to its index (mutually exclusive with slot_index). |
Returns: { skeletal_mesh_path: string, slot_index: int, slot_name: string, material_path: string, saved: bool }
set_skeletal_mesh_min_lod¶
Destructive, idempotent.
Set the platform-wide forced-min-LOD bias on a skeletal mesh.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
min_lod |
number | no | New MinLodIdx (must be in [0, NumLODs-1]) |
Returns: { skeletal_mesh_path: string, old_min_lod: int, min_lod: int, lod_count: int, applied: bool }
set_skeletal_mesh_section_cast_shadow¶
Destructive, idempotent.
Set the cast shadow flag on a specific section of a skeletal mesh LOD.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
lod_index |
number | no | LOD index containing the section (default 0) |
section_index |
number | no | Index of the section to modify (default 0) |
cast_shadow |
boolean | no | New value for the flag (default true) |
Returns: { lod_index: int, section_index: int, cast_shadow: bool, saved: bool }
set_skeletal_mesh_section_recompute_tangent¶
Destructive, idempotent.
Set the recompute tangent flag on a specific section of a skeletal mesh LOD.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
lod_index |
number | no | LOD index containing the section (default 0) |
section_index |
number | no | Index of the section to modify (default 0) |
recompute_tangent |
boolean | no | New value for the flag (default true) |
Returns: { lod_index: int, section_index: int, recompute_tangent: bool, saved: bool }
set_skeletal_mesh_section_visible_in_ray_tracing¶
Destructive, idempotent.
Toggle a section's bVisibleInRayTracing flag on a specific skeletal mesh LOD.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
lod_index |
number | no | LOD index containing the section (default 0) |
section_index |
number | no | Index of the section to modify (default 0) |
b_visible |
boolean | no | New value for the flag (default true) |
Returns: { lod_index: int, section_index: int, b_visible: bool, saved: bool }
set_skeletal_mesh_socket_parent¶
Destructive, idempotent.
Re-parent an existing socket on a skeletal mesh to a different bone. Validates the bone exists in the reference skeleton.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
socket_name |
string | yes | Name of the socket to re-parent |
parent_bone_name |
string | yes | Bone name to attach the socket to (must exist in skeleton) |
Returns: { socket_name: string, parent_bone_name: string, skeletal_mesh_path: string, reparented: bool }
set_skeletal_mesh_socket_transform¶
Destructive, idempotent.
Set the local transform (relative to parent bone) of a socket on a skeletal mesh. All three of location/rotation/scale are optional; only fields present are written.
| Parameter | Type | Required | Description |
|---|---|---|---|
skeletal_mesh_path |
string | yes | Content path to the skeletal mesh asset |
socket_name |
string | yes | Name of the socket to modify |
location |
array | no | Optional [x, y, z] relative location |
rotation |
array | no | Optional [pitch, yaw, roll] relative rotation (degrees) |
scale |
array | no | Optional [x, y, z] relative scale |
Returns: { socket_name: string, skeletal_mesh_path: string, applied: {location, rotation, scale}, location_x: float, location_y: float, location_z: float, rotation_pitch: float, rotation_yaw: float, rotation_roll: float, scale_x: float, scale_y: float, scale_z: float }
setup_foot_ik¶
Destructive, idempotent.
Add a Leg IK node (UAnimGraphNode_LegIK) to the top-level AnimGraph of an Animation Blueprint, or reuse the first one already there, bind the feet into its LegsDefinition, then mark the blueprint structurally modified and save it without compiling. Leg 0 gets left_foot_bone and leg 1 right_foot_bone as the FK foot bone; a leg's IK target bone is set to the same bone when it is unset or the leg's foot changes, so the node compiles but has no effect until each IK target names an IK bone (set_anim_graph_node_property on LegsDefinition with the returned node_id); legs beyond the first two and the other leg settings are kept. Bones the target skeleton lacks are an error and nothing is written. The node is left unwired: connect it with connect_anim_graph_pins. Idempotent; refused while PIE runs unless force=true.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Path to the UAnimBlueprint asset. |
left_foot_bone |
string | yes | Left foot bone, written as the FK foot bone of leg 0; checked against the target skeleton when the blueprint has one. |
right_foot_bone |
string | yes | Right foot bone, written as the FK foot bone of leg 1; checked against the target skeleton when the blueprint has one. |
Returns: { anim_blueprint_path, node_id, left_foot_bone, right_foot_bone, legs: [{ fk_foot_bone, ik_foot_bone, num_bones_in_limb }], bones_checked_against, ik_node_count, already_existed, saved, save_error }
sort_montage_segments¶
Destructive.
Sort a montage slot track's segments by start time ascending. A failed save makes success false, with saved=false and save_error.
| Parameter | Type | Required | Description |
|---|---|---|---|
montage_path |
string | yes | Full asset path of the montage (e.g. '/Game/MyGame/AM_Example'). |
slot_name |
string | yes | Name of the slot track to sort. |
Returns: { montage_path, slot_name, segment_count, applied, saved, save_error, message }
stop_animation¶
Destructive.
Stop montage playback on a skeletal mesh component with Montage_Stop and a 0.25 s blend-out: only montage_path when given, otherwise every active montage. Editor world unless the world param says otherwise; an unknown montage_path is an error. was_playing and playing cover any montage.
| Parameter | Type | Required | Description |
|---|---|---|---|
component_name |
string | yes | Object name of the USkeletalMeshComponent, e.g. "CharacterMesh0", case-insensitive; the first actor in the world that has one with that name wins |
montage_path |
string | no | Full asset path of a specific AnimMontage to stop; if omitted, stops all montages (optional) |
world |
string | no | Optional world selector: absent/'editor' (default) | 'pie' (ambiguous: PlayWorld, else the first PIE context) | 'server' (the PIE world with authority) | 'client' | 'pie:N' | 'game' (alias of 'pie'). |
Returns: { component_name: string, was_playing: bool, playing: bool, success: bool, montage_path: string?, montage_name: string?, world: string, world_name: string|null, world_package: string|null, world_type: string|null, net_mode: string|null, pie_instance: number }
validate_anim_state_machine¶
Read-only.
Check a state machine of an Animation Blueprint by node counts, without compiling or changing it: no states is an error, one an info, several without transitions a warning. state_count counts states only (conduits and aliases excluded), transition_count the transition nodes; compile_anim_blueprint is the check that the machine compiles.
| Parameter | Type | Required | Description |
|---|---|---|---|
anim_blueprint_path |
string | yes | Asset path of the UAnimBlueprint |
state_machine_name |
string | yes | Name of a state machine in the top-level AnimGraph, matched without case (see list_anim_state_machines). |
Returns: { is_valid, errors[], warnings[], info[], state_count, transition_count }
wire_aim_offset¶
Destructive, idempotent.
Create a UBlendSpace1D asset for aim-offset blending (yaw or pitch axis). Idempotent on re-run.
| Parameter | Type | Required | Description |
|---|---|---|---|
package_path |
string | yes | UE content folder. |
asset_name |
string | yes | BlendSpace1D asset name. |
skeleton_path |
string | yes | Path to the target USkeleton. |
axis_name |
string | no | Optional axis name (default "Yaw"). |
min_value |
number | no | Optional float (default -90.0). Axis minimum. |
max_value |
number | no | Optional float (default 90.0). Axis maximum. |
num_grid_points |
number | no | Optional int (default 4). |
Returns: { asset_path, axis_name, min_value, max_value, num_grid_points, already_existed, saved }