Changes in Editor 2.1 Rendering Method

The following is about the recent changes made to Cubism Editor 2.0 / SDK 2.0 working environment, regarding the rendering of drawing objects affected by the new rendering algorithm.

        1. In the previous versions, Cubism Editor and SDK had different algorithms for handling object rendering.
        2. Specifically, for Cubism SDK in Unity or Android (Java) application, the angle of the rotation deformers used to experience a bug.

In Cubism 2.1, the differences have been unified. Editor 2.1 and SDK 2.1 now adopts the algorithm from Live2D Viewer.

However, to avoid compatibility issue with the models created in 2.0 or prior, the option to use 2.0 rendering method remains available. Models that were created in earlier versions are recommended to use 2.1 standard rendering method unless compatibility issue is present. 

         *1  C++ working environments include iOS, cocos2dx, PSVita, PSP, PS4, Nitendo3DS, andDirectX

Changes     From SDK2.0 to SDK2.1 for Unity and Android 

This is a matter with the rendering calculation of the rotation deformer that may cause a visual deviation among Live2D Viewer and the C++ version SDK. In most cases, the difference is micro and not visible to naked eyes.

SDK 2.1 has applied the algorithm used in Live2D Viewer to C++ ver. SDK to unify the rendering result.

Consequently, in Unity, if your model is operating properly in Cubism SDK 2.0 for Android, adopting SDK 2.1 may result the slight misalignment due to the new rendering method. 
To prevent the issue, you may add the following line to your codes to force the application to use the rendering method of 2.0 SDK.

Live2D.setDrawMethodVersion( Live2D.DrawMethodVersion.FORCE_2_0 ) ; // Force use rendering method 2.0

If you want to use 2.1 for your default environment while set the rendering method for an individual model independently, you may do the following. 

Live2D.setDrawMethodVersion( Live2D.DrawMethodVersion.DEFAULT_2_1 ) ; // Set the default to using 2.1

Live2DModelUnity    modelA ;
modelA.setModelDrawMethodVersion( Live2DModelUnity.ModelDrawMethodVersion.DRAW_2_0 ) ; // Specifying modelA to // use 2.0

In SDK 2.1, if no preference has been specified, it will automatically set by default as using 2.1 standard.

Changes ②  From Cubism Editor2.0  to Cubism Editor2.1 

The angle calculation of rotation deformer, out of bounds calculation for curved surface deformer, and layer calculation in the deformer hierarchy have been modified. 
Although no visible changes for most models, it remains the option to use the older methods.

In Cubism Modeler 2.1, to change to the older rendering methods, on the top menu, go to [ Show ], and then select the rendering method you prefer.

Common example of performance issue

<Curved surface deformer "out of bounds" scenario>

One of the significant changes in 2.1 standard is the method to render an object is exceeds the boundary of the its parent deformer (curved surface deformer).

2.0 method renders the object that exceeds the boundary of its parent deformer in a slow calculation for a smooth performance. With the new [ Rendering Method standard for 2.1 (recommended) ] option, the same quality in result can be achieved with a higher speed through the new rendering algorithm.

 The other option [ Rendering Method compatible with Editor 2.0 ] uses the older method to assure that your model (built in 2.1 environment) does not result any visual alteration when rendered in SDK2.0 applications.

As a side note, regardless of which method, rendering objects beyond the boundary of the parent deformer causes heavier processing. Hence, it is recommended to avoid such practice.  

<Curved surface deformer problem when rotation deformer enters a certain angle >

In both [ Rendering Method compatible with Editor 2.0 ]  and  [ Rendering Method standard for 2.1 (recommended) ]  mode, displacement may occur when the rotation enters a certain angle. 


Q. I have already released a Unity application that uses SDK 2.0. How should I manage the update to SDK 2.1?
A-1. If there is no new model to implement, after updating your app to using SDK 2.1, add the following line under Live2D.init() : 
                Live2D.setDrawMethodVersion( Live2D.DrawMethodVersion.FORCE_2_0 )

A-2. If there is a new model that is built in Editor 2.1 environment to implement into your app, after updating your app to using SDK 2.1, add the following lines:

                Live2D.setDrawMethodVersion( Live2D.DrawMethodVersoin.DEFAULT_2_0); // default rendering method for the 2.0 models
                Live2DModelUnity  model;
                model.setModelDrawMethodVersion ( Live2DModelUnity.ModelDrawMethodVersion.DRAW_2_1); // the new model "model" uses 2.1 

Q. If my model data was created in Cubism Modeler 2.0, what settings should I apply when I use that model in Animator 2.1?
A-1. If you are to export a video, then change your environment to 2.0 compatible before you proceed. On the top menu, go to [ View ] and select [ Rendering Method compatible with Editor 2.0 ].
A-2. Otherwise, if the output is for built-in usages, the rendering settings does not affect the result. 

Q. When I created my model in Cubism Modeler 2.0, I adjusted my model based on the rendered visual in Live2D Viewer. What settings should I choose for 2.1?
A. Since Live2D Viewer's rendering result matches with [ Rendering Method standard for 2.1 ] in Editor. For both 2.0 and 2.1 model editing, you may take Live2D Viewer's rendering result as the standard.