Performance When Working With Models in the SDK

Updated: 09/04/2019

This page is for Cubism version 4.2 or earlier. Click here for the latest version.


Update rate

When displaying models on the SDK, performance may be degraded depending on the order in which ArtMeshes are drawn.
Cubism models are drawn one ArtMesh at a time from the back (canvas side).
As you draw an ArtMesh on the screen, if it has different drawing settings than the ArtMesh you drew just before, it will perform poorly in the SDK.
Settings where switching will degrade performance are as follows.

  • Texture used by the ArtMesh to be drawn
  • Draw mode (normal, additive, multiply) of the ArtMesh to be drawn
  • Whether the ArtMesh to be drawn is clipped or not

These factors will affect each other.
Clipping switches settings even if the texture, rendering mode, and ArtMesh that serves as the mask are the same.

For example, suppose a model with two textures and some ArtMeshes is placed in the following order from the back.

[Name][ID][Draw settings][Switchover occurs]
Right eyelashArtMesh6Texture: Second one
Right eyebrowArtMesh7 
Right cheekArtMesh8Rendering mode: Multiply
Right highlightArtMesh9Clipping: Right white eye, rendering mode: Additive
Right pupilArtMesh10Clipping: Right white eye
Right white eyeArtMesh11  
Left eyelashArtMesh16 
Left eyebrowArtMesh17Texture: Second one
Left cheekArtMesh18Rendering mode: Multiply
Left highlightArtMesh19Clipping: Left white eye, rendering mode: Additive
Left pupilArtMesh20Clipping: Left white eye
Left white eyeArtMesh21  

These ArtMeshes are drawn in order from the bottom of the table.
When lined up like this, the draw settings are counted from the bottom of the table and a changeover occurs ten times.

If this draw order is rearranged as follows, the number of times the draw setting is switched is reduced to seven times.

[Name][ID][Draw settings][Switchover occurs]
Right eyebrowArtMesh6Texture: Second one 
Left eyebrowArtMesh16Texture: Second one
Right cheekArtMesh7Rendering mode: Multiply 
Left cheekArtMesh17Rendering mode: Multiply
Right eyelashArtMesh8  
Left eyelashArtMesh18 ○ 
Right highlightArtMesh9Clipping: Right white eye, rendering mode: Additive
Left highlightArtMesh19Clipping: Left white eye, rendering mode: Additive
Right pupilArtMesh10Clipping: Right white eye
Left pupilArtMesh29Clipping: Left white eye
Right white eyeArtMesh11  
Left white eyeArtMesh21  

The order and switching status of ArtMeshes can be checked in Cubism Viewer for OW.
If you set up a deformation in which the draw order changes depending on the parameters, it becomes difficult to predict the number of times it will switch.

Also, be careful not to use too many of the following objects or too many settings for each status, as it will affect performance of the SDK.

  1. Number of ArtMeshes
  2. Number of polygons
  3. Number of deformers
  4. Division number of deformer conversion
  5. Number of deformer parent-child hierarchies
  6. Number of parameters set for one object (ArtMesh, deformer)

Of these, number 6 has a particularly large impact, and it is typically recommended that up to two settings be used.
This is because the amount of blending computation between the keyforms of the parameters increases with multiplication.

For example, if two parameters are set for one ArtMesh, a blend calculation is performed for each parameter, and then the results of each calculation are further blended together.
Therefore, the more parameters set, the more blending calculations are required.

In addition, if the ArtMesh or deformer falls outside the range of the parent warp deformer, performance is reduced due to the increased processing load.
For more information on points to keep in mind when building parent-child hierarchies, see the Combination of Parent-Child Hierarchy page below.

Initialization speed

Extended interpolation is a function that curvilinearly interpolates linear interpolation of parameters, and, in actuality, automatically generates a specified number of keyforms for extended interpolation between keyforms.
Therefore, when extended interpolation is set on an object with multiple parameters, the size of the model file increases proportionally because the keyforms added by extended interpolation are multiplied with each other.

Please note that when dealing with extended interpolation in the SDK, there is little effect on performance during execution, but there is a slowdown when loading the model.


If the mesh of the mask occupies a large area of the displayed screen, the resolution of the mask on the screen will be reduced and fine expression may be lost.
This occurs when a mask created at a smaller size than its actual size is enlarged to a larger size, because the resolution of the texture that generates the mask does not change.

To avoid this, avoid using large masks.

Was this article helpful?
Please let us know what you think about this article.