[Corrected] When the reproducibility of motion3.json deteriorates
[Last update: 10/06/2022]
Cubism SDK for Java is currently in alpha version, and the specifications may change in the beta or official version.
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
Cubism SDK for Unity recommends using motions created with “SDK (Unity)” set as the target, so this support is not applicable.
Cubsim SDK for Java (alpha version) is released after Cubism 4 SDK for Native R3, so this support is not required.
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 supervised in Cubism Viewer (for OW) and not checked on the SDK.
Please take any of the above measures to improve the accuracy of motion in flows where the above conditions apply.
- Change the setting target to “SDK (Unity)” on the scene inspector.
- Ensure that the motion supervision process is performed on the SDK.
- Check the “Reproduce motion playback of SDK before 4.0” checkbox in OWViewer for 4.1alpha4 or later.
Details of Defects in the SDK
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 Contents
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 on CubismMotion.cpp in the Cubism SDK for Native, and on 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 (alpha version) 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.