animation
<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. -->
animation
<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. -->TODO: describe this module.
Interface
What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.
conforms to
zero/source-extract/v2Armatures, pose bones, keyframes and actions for the bpy session, and the clips they become in a document's output.bundle. Installed into a session by blenderSession; the math lives in modeling.rigging.
deep(t: ?) → void
| arg | type | description |
|---|---|---|
| t | ? |
install(S: ?, h: ?) → void
| arg | type | description |
|---|---|---|
| S | ? | |
| h | ? |
dirty( ) → void
uniqueName(want: ?, exists: ?) → void
| arg | type | description |
|---|---|---|
| want | ? | |
| exists | ? |
coll(name: ?, items: ?, lookup: ?, setter: ?) → void
A collection proxy: index, iteration, get(), name lookup, optional setter.
| arg | type | description |
|---|---|---|
| name | ? | |
| items | ? | |
| lookup | ? | |
| setter | ? |
weak( ) → void
boneByName(arm: ?, n: ?) → void
| arg | type | description |
|---|---|---|
| arm | ? | |
| n | ? |
childrenOf(arm: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| arm | ? | |
| b | ? |
armObjects(arm: ?) → void
| arg | type | description |
|---|---|---|
| arm | ? |
editing(arm: ?) → void
| arg | type | description |
|---|---|---|
| arm | ? |
esc(s: ?) → void
| arg | type | description |
|---|---|---|
| s | ? |
renameBone(arm: ?, b: ?, want: ?) → void
| arg | type | description |
|---|---|---|
| arm | ? | |
| b | ? | |
| want | ? |
onTail(arm: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| arm | ? | |
| b | ? |
onHead(arm: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| arm | ? | |
| b | ? |
setBoneMatrix(b: ?, m: ?) → void
| arg | type | description |
|---|---|---|
| b | ? | |
| m | ? |
col(c: ?) → void
| arg | type | description |
|---|---|---|
| c | ? |
ebProxy(arm: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| arm | ? | |
| b | ? |
boneProxy(arm: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| arm | ? | |
| b | ? |
armatureProxy(arm: ?) → void
| arg | type | description |
|---|---|---|
| arm | ? |
newArmature(name: ?) → void
| arg | type | description |
|---|---|---|
| name | ? |
channels(o: ?, name: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| name | ? |
poseMatrices(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
boneTail(ob: ?, name: ?) → void
| arg | type | description |
|---|---|---|
| ob | ? | |
| name | ? |
setBasis(c: ?, m: ?) → void
| arg | type | description |
|---|---|---|
| c | ? | |
| m | ? |
parentFrame(o: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| b | ? |
poseBoneProxy(o: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| b | ? |
poseProxy(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
newAction(name: ?) → void
action = {name, slots={{identifier, target_id_type, fcurves}}} fcurve = {data_path, array_index, keys, extrapolation, auto_smoothing}
| arg | type | description |
|---|---|---|
| name | ? |
slotFor(act: ?, o: ?, create: ?) → void
| arg | type | description |
|---|---|---|
| act | ? | |
| o | ? | |
| create | ? |
fcurve(slot: ?, path: ?, i: ?, create: ?) → void
| arg | type | description |
|---|---|---|
| slot | ? | |
| path | ? | |
| i | ? | |
| create | ? |
setKey(fc: ?, frame: ?, value: ?) → void
| arg | type | description |
|---|---|---|
| fc | ? | |
| frame | ? | |
| value | ? |
resolve(o: ?, path: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| path | ? |
keyArgs(o: ?, prefix: ?, a: ?, kw: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| prefix | ? | |
| a | ? | |
| kw | ? |
keyframeInsert(o: ?, prefix: ?, a: ?, kw: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| prefix | ? | |
| a | ? | |
| kw | ? |
keyframeDelete(o: ?, prefix: ?, a: ?, kw: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| prefix | ? | |
| a | ? | |
| kw | ? |
apply(frame: ?, only: ?) → void
Evaluate every assigned action at `frame` into the animated properties.
| arg | type | description |
|---|---|---|
| frame | ? | |
| only | ? |
kpProxy(fc: ?, k: ?) → void
| arg | type | description |
|---|---|---|
| fc | ? | |
| k | ? |
re( ) → void
handle(side: ?, typ: ?) → void
| arg | type | description |
|---|---|---|
| side | ? | |
| typ | ? |
fcProxy(fc: ?) → void
| arg | type | description |
|---|---|---|
| fc | ? |
slotProxy(act: ?, s: ?) → void
| arg | type | description |
|---|---|---|
| act | ? | |
| s | ? |
channelbag(act: ?, s: ?) → void
| arg | type | description |
|---|---|---|
| act | ? | |
| s | ? |
slotOf(act: ?, v: ?) → void
| arg | type | description |
|---|---|---|
| act | ? | |
| v | ? |
stripProxy(act: ?) → void
| arg | type | description |
|---|---|---|
| act | ? |
layerProxy(act: ?) → void
| arg | type | description |
|---|---|---|
| act | ? |
actionRange(act: ?) → void
| arg | type | description |
|---|---|---|
| act | ? |
actionProxy(act: ?) → void
| arg | type | description |
|---|---|---|
| act | ? |
getitem(key: ?) → void
| arg | type | description |
|---|---|---|
| key | ? |
setitem(key: ?, pv: ?) → void
| arg | type | description |
|---|---|---|
| key | ? | |
| pv | ? |
adProxy(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
vgroups(o: ?) → void
Group names live on the object (o.vgroups), weights on the mesh (mesh.dverts[vertex] = {[group index] = weight}), as in Blender.
| arg | type | description |
|---|---|---|
| o | ? |
dverts(mesh: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? |
vgIndex(o: ?, g: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| g | ? |
inEdit(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
vgProxy(o: ?, g: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| g | ? |
newGroup(o: ?, name: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| name | ? |
findGroup(o: ?, name: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| name | ? |
removeGroup(o: ?, g: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| g | ? |
vgCollection(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
vertexGroups(mesh: ?, i: ?) → void
MeshVertex.groups
| arg | type | description |
|---|---|---|
| mesh | ? | |
| i | ? |
groupsDoc(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
restoreGroups(o: ?, d: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| d | ? |
deformBones(arm: ?) → void
| arg | type | description |
|---|---|---|
| arm | ? |
weightsOf(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
pointWeights(o: ?, positions: ?) → void
Weights for positions of an object's (possibly modified) mesh: a position that is an original vertex takes its weights; others blend the weights of the nearest original face by inverse distance.
| arg | type | description |
|---|---|---|
| o | ? | |
| positions | ? |
key(p: ?) → void
| arg | type | description |
|---|---|---|
| p | ? |
skinMatrices(armObj: ?) → void
Armature-space deform matrices (pose @ inverse rest) per deform bone.
| arg | type | description |
|---|---|---|
| armObj | ? |
deform(o: ?, m: ?, pv: ?) → void
The ARMATURE modifier: linear blend of bone deforms by vertex-group weight, normalised by the total weight; vertices with no weight stay put.
| arg | type | description |
|---|---|---|
| o | ? | |
| m | ? | |
| pv | ? |
segDist(p: ?, a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| p | ? | |
| a | ? | |
| b | ? |
autoWeights(o: ?, armObj: ?) → void
Automatic weights by bone heat (Baran & Popović), as Blender: each vertex is heated by its closest bone(s) with strength 1/d², and the heat diffuses over the surface through a cotangent Laplacian. Computed at the rest pose.
| arg | type | description |
|---|---|---|
| o | ? | |
| armObj | ? |
add(i: ?, j: ?, w: ?) → void
| arg | type | description |
|---|---|---|
| i | ? | |
| j | ? | |
| w | ? |
cot(i: ?, j: ?, l: ?) → void
| arg | type | description |
|---|---|---|
| i | ? | |
| j | ? | |
| l | ? |
d2(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
mulA(x: ?, out: ?) → void
| arg | type | description |
|---|---|---|
| x | ? | |
| out | ? |
deformer(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
deformSig(o: ?, m: ?) → void
What an ARMATURE modifier's rest-pose skin depends on (not the pose).
| arg | type | description |
|---|---|---|
| o | ? | |
| m | ? |
cross(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
dot3(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
sub3(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
unit(v: ?) → void
| arg | type | description |
|---|---|---|
| v | ? |
colOf(m: ?, i: ?) → void
| arg | type | description |
|---|---|---|
| m | ? | |
| i | ? |
posOf(m: ?) → void
| arg | type | description |
|---|---|---|
| m | ? |
qmul(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
qmat(q: ?, s: ?, t: ?) → void
| arg | type | description |
|---|---|---|
| q | ? | |
| s | ? | |
| t | ? |
slerp(a: ?, b: ?, t: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? | |
| t | ? |
blendM(a: ?, b: ?, t: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? | |
| t | ? |
rot3(axis: ?, ang: ?) → void
| arg | type | description |
|---|---|---|
| axis | ? | |
| ang | ? |
rotBetween(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
applyRot(Rm: ?, m: ?) → void
| arg | type | description |
|---|---|---|
| Rm | ? | |
| m | ? |
absScale(m: ?) → void
| arg | type | description |
|---|---|---|
| m | ? |
axes(prefix: ?, val: ?) → void
| arg | type | description |
|---|---|---|
| prefix | ? | |
| val | ? |
merge(...: ?) → void
| arg | type | description |
|---|---|---|
| ... | ? |
validObj(t: ?) → void
| arg | type | description |
|---|---|---|
| t | ? |
mn(x: ?, lo: ?, hi: ?) → void
| arg | type | description |
|---|---|---|
| x | ? | |
| lo | ? | |
| hi | ? |
conEval(c: ?, Ml: ?, T: ?) → void
| arg | type | description |
|---|---|---|
| c | ? | |
| Ml | ? | |
| T | ? |
targetInfo(c: ?, depth: ?, ownerArm: ?, get: ?, key: ?) → void
A target's world matrix (object, or a bone of an armature object) and its space frames.
| arg | type | description |
|---|---|---|
| c | ? | |
| depth | ? | |
| ownerArm | ? | |
| get | ? | |
| key | ? |
pmOf(n: ?) → void
| arg | type | description |
|---|---|---|
| n | ? |
runConstraints(list: ?, W: ?, frames: ?, depth: ?, self: ?, ownerArm: ?, get: ?) → void
| arg | type | description |
|---|---|---|
| list | ? | |
| W | ? | |
| frames | ? | |
| depth | ? | |
| self | ? | |
| ownerArm | ? | |
| get | ? |
constraintTypes( ) → void
objectConstraints(o: ?, m: ?, depth: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| m | ? | |
| depth | ? |
bonePost(o: ?, depth: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| depth | ? |
solve3(m: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| m | ? | |
| b | ? |
solveIK(o: ?, tipName: ?, c: ?, pm: ?, override: ?, depth: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| tipName | ? | |
| c | ? | |
| pm | ? | |
| override | ? | |
| depth | ? |
get(nm: ?) → void
| arg | type | description |
|---|---|---|
| nm | ? |
fk( ) → void
rotate(i: ?, Rm: ?) → void
| arg | type | description |
|---|---|---|
| i | ? | |
| Rm | ? |
poleAlign( ) → void
Blender's pole (IK_QJacobianSolver::ConstrainPoleVector): one rotation of the root, taking the frame (end direction, root X/Z by pole_angle) onto (goal direction, pole direction), applied before solving.
poseMatrices(o: ?, depth: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| depth | ? |
conProxy(o: ?, c: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| c | ? |
conCollection(o: ?, getList: ?, isBone: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| getList | ? | |
| isBone | ? |
objectConstraintsProxy(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
boneConstraints(o: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| b | ? |
newTarget( ) → void
tgtProxy(t: ?) → void
| arg | type | description |
|---|---|---|
| t | ? |
varProxy(v: ?) → void
| arg | type | description |
|---|---|---|
| v | ? |
driverProxy(fc: ?) → void
| arg | type | description |
|---|---|---|
| fc | ? |
fmProxy(m: ?) → void
| arg | type | description |
|---|---|---|
| m | ? |
fmodsProxy(fc: ?) → void
| arg | type | description |
|---|---|---|
| fc | ? |
tMatrix(t: ?, space: ?) → void
| arg | type | description |
|---|---|---|
| t | ? | |
| space | ? |
varValue(v: ?) → void
| arg | type | description |
|---|---|---|
| v | ? |
scriptEnv( ) → void
driverValue(o: ?, fc: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| fc | ? |
fcOutput(fc: ?, x: ?) → void
| arg | type | description |
|---|---|---|
| fc | ? | |
| x | ? |
evaluateDrivers( ) → void
update( ) → void
driverErrors( ) → void
driverAdd(o: ?, a: ?, kw: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| a | ? | |
| kw | ? |
one(i: ?) → void
| arg | type | description |
|---|---|---|
| i | ? |
driverRemove(o: ?, a: ?, kw: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| a | ? | |
| kw | ? |
defaultOf(path: ?, i: ?) → void
| arg | type | description |
|---|---|---|
| path | ? | |
| i | ? |
stripLen(sp: ?) → void
| arg | type | description |
|---|---|---|
| sp | ? |
recalcEnd(sp: ?) → void
| arg | type | description |
|---|---|---|
| sp | ? |
validateTrack(tr: ?) → void
| arg | type | description |
|---|---|---|
| tr | ? |
stripTime(sp: ?, f: ?) → void
| arg | type | description |
|---|---|---|
| sp | ? | |
| f | ? |
activeStrip(tr: ?, f: ?) → void
| arg | type | description |
|---|---|---|
| tr | ? | |
| f | ? |
stripInfluence(sp: ?, f: ?) → void
| arg | type | description |
|---|---|---|
| sp | ? | |
| f | ? |
evalAnim(o: ?, frame: ?, actionOnly: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| frame | ? | |
| actionOnly | ? |
layer(act: ?, time: ?, infl: ?, blend: ?) → void
| arg | type | description |
|---|---|---|
| act | ? | |
| time | ? | |
| infl | ? | |
| blend | ? |
apply(frame: ?, only: ?) → void
| arg | type | description |
|---|---|---|
| frame | ? | |
| only | ? |
animRange(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
sceneRange( ) → void
allStripNames(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
nlaStripProxy(o: ?, tr: ?, sp: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| tr | ? | |
| sp | ? |
nlaTrackProxy(o: ?, tr: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| tr | ? |
tracksProxy(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
adGet(o: ?, k: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| k | ? |
adSet(o: ?, k: ?, v: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| k | ? | |
| v | ? |
keysD(fc: ?) → void
| arg | type | description |
|---|---|---|
| fc | ? |
conD(c: ?) → void
| arg | type | description |
|---|---|---|
| c | ? |
animDoc(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
conR(d2: ?) → void
| arg | type | description |
|---|---|---|
| d2 | ? |
animRestore(o: ?, d: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| d | ? |
objectGet(o: ?, key: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| key | ? |
objectSet(o: ?, key: ?, v: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| key | ? | |
| v | ? |
sceneGet(k: ?) → void
| arg | type | description |
|---|---|---|
| k | ? |
sceneSet(k: ?, v: ?) → void
| arg | type | description |
|---|---|---|
| k | ? | |
| v | ? |
keysDoc(fc: ?) → void
| arg | type | description |
|---|---|---|
| fc | ? |
actionsDoc( ) → void
serialize(doc: ?) → void
| arg | type | description |
|---|---|---|
| doc | ? |
restore(doc: ?) → void
| arg | type | description |
|---|---|---|
| doc | ? |
colMajor(m: ?) → void
Every object that moves in an action becomes a joint of the document's rig (one bone per object entity, named like it, under the session root); each action becomes a clip of those joints' sampled transforms. A placed copy plays through the engine's SkinnedModel + ClipPlayer.
| arg | type | description |
|---|---|---|
| m | ? |
zeroMat(z: ?) → void
| arg | type | description |
|---|---|---|
| z | ? |
snapshot( ) → void
putBack(s: ?) → void
| arg | type | description |
|---|---|---|
| s | ? |
differs(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
bake(only: ?, lo: ?, hi: ?, rest: ?) → void
| arg | type | description |
|---|---|---|
| only | ? | |
| lo | ? | |
| hi | ? | |
| rest | ? |
safe(n: ?) → void
| arg | type | description |
|---|---|---|
| n | ? |
restZ(b: ?) → void
| arg | type | description |
|---|---|---|
| b | ? |
skinned( ) → void
syncSkins(matFor: ?) → void
| arg | type | description |
|---|---|---|
| matFor | ? |
boneClip(ao: ?, rest: ?) → void
| arg | type | description |
|---|---|---|
| ao | ? | |
| rest | ? |
output(sessionRoot: ?) → void
| arg | type | description |
|---|---|---|
| sessionRoot | ? |
summary(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
Sub-parts
Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.
Showing up to 3 levels deep. Open a part to see what it holds further down.
Problems
Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.
agent_score is exposed.+ quality × 0.35
+ performance × 0.25
± compat factor
Usability ratings
Did the part work as advertised when consumers tried to drop it in. Separate from upvotes: those are taste; this is "did it function".
Scoped to this part · feeds back into the world's score.