[Corrected] When the Reproducibility of .motion3.json Deteriorates

Updated: 12/08/2022

Summary

With the animation target version set to “SDK (Others),” motion3.json files containing curves with heavily manipulated Bezier handles may not reproduce waveforms correctly in Cubism SDK for Native and Cubism SDK for Web.

This bug has been addressed in the following SDK versions or later.

  • Cubism 4 SDK for Native R3 beta1
  • Cubism 4 SDK for Web R3 beta1

The Cubism SDK for Unity recommends using motions created with “SDK (Unity)” set as the target, so this support is not applicable.

Cubism SDK for Java was released after Cubism 4 SDK for Native R3, so this support is not required.

Impacted Production Flows

All of the following conditions apply to the production flow.

  • The Cubism SDK in use is as follows.
    • Previous versions of products including Cubism 4 SDK for Native R2
    • Previous versions of products including Cubism 4 SDK for Web R2
  • Motion is created with “SDK (Others)” as the setting target in motion creation in Cubism Editor.
  • Motion is checked in Cubism Viewer (for OW) and not checked in the SDK.

Please take any of the above measures to improve the accuracy of motion in production flows where the above conditions apply.

  • Change the setting target to “SDK (Unity)” in the scene inspector.
  • Ensure that the motion viewing process is performed in the SDK.
  • Check the “Reproduce motion playback of SDK before 4.0” checkbox in OW Viewer for 4.1 alpha4 or later and confirm.

Details of Bugs in the SDK

Bug details

If “SDK (Unity)” is specified as the target version of the animation, the position of the Bezier handles on the time axis is limited to 1/3 or 2/3 of the position between curves.
Under this restriction, the coefficient t of the Bezier curve coincides with the motion of the time axis, simplifying the calculation as a linear change.

In this bug, the target version of the animation was calculated as having a limitation even when the Bezier handles were set to “SDK (Others)” with no limitation, resulting in a slight difference in the looseness of the parameters reproduced in the motion.

SDK Supported Content

The Cubism SDK for Native and Cubism SDK for Web, starting with R3 beta, plays back motion with precise, gradual Bezier curves.
For this change, change  UseOldBeziersCurveMotion in CubismMotion.cpp in the Cubism SDK for Native, and in cubismmotion.ts in the Cubism SDK for Web  UseOldBeziersCurveMotion can be changed to true to restore the pre-R2 playback method.

In addition, Cubism SDK for Java can reproduce the pre-R2 playback method of Native and Web by setting USE_OLD_BEZIERS_CURVE_MOTION in CubismMotion.java to true.

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