About Pose

[Last updated: 01/18/2019]




What is the Pose Function?

Pose is a function that fades the switching of a single part among multiple similar parts based on motion.
Multiple like parts are those that cause display inconsistencies when displayed at the same time, such as right hand A and right hand B.

This is also the part of the process where the part opacity operations in motion are finally applied to the part.

We recommend that you read “Using parameter IDs that do not exist in the model with the CubismModel class” in “About Models” in advance for a better understanding of this page.


Flow of part opacity manipulation from motion

Manipulate part opacity in motion playback

To maintain consistency in part opacity, motion playback alone in the Original WorkFlow Framework does not operate directly on part opacity.

Opacity manipulation of a motion playback part is instead replaced by an override to the same ID parameter as the part.
At this time, parameter IDs that do not exist in the model are only retained as virtual parameters.
No fade processing is performed when switching between motions, only overwriting is performed.

The OW SDK assumes that steps are applied as the interpolation method for part opacity operations to motion.



Applying a Pose

By applying the Pose function during the last phase of the model update process,
based on the information in pose3.json, determine which parts to display for each group
referring to the value of the virtual parameter.

The API to apply Pose to a model is as follows.


Steps are recommended for curves in part manipulation, but if you have selected linear or other curves,
the display state is recognized when it becomes larger than 0.001.

The new opacity is determined as a linear interpolation by proportional calculation with the difference time from the part opacity before the operation when determining the displayed part.


After the display parts and their new opacity are determined, an opacity override is performed on the entire group.
The new opacity of the hidden parts will be reduced in relation to the opacity of the parts to be displayed at a level that does not allow the background to show through.



Data Structure of Pose

To speed up access to parameter and part information, the information handled by Pose is stored
in the PartData structure, which contains the index of the parameter and part when accessed by part ID.

Linked data is held as a child element of PartData as a Link.


CubismPose represents group information as a one-dimensional PartData array and an array of information on the number of pieces in each group.


The one-dimensional array PartData is processed as a group by passing the head position in the array and the number of elements to DoFade based on the information on the number of elements in each group.



Linking opacity by Parent ID

The following function, called at the end of the Pose application process, propagates the value to the parts specified in the Link.


This Link is stored in an array of CubismIdHundle with the PartID expressed as Parent ID in OWViewer.
In the figure below, the Link of PartManteL001 would contain the CubismIdHundle of PartArmLB001 and PartArmLC001.


It is described as Link, but it is a parent-child relationship, and
note that there must be an opacity operation on the parent part for the linkage to occur.
The children indicated in the Link are not linked to each other.



Instance creation (.pose3.json file read)

Poses are stored in a .pose3.json file and use the CubismPose class.
The following functions are used to generate.

Mounting example



Applying a Pose

The following functions are used to apply poses.

The application of motion and other virtual parameters must be completed in advance.





The CubismPose instance must also be destroyed at the time the model is released.

© 2010 - 2022 Live2D Inc.