Json

업데이트: 2021/06/10

개요

Live2D Cubism에서는 런타임용 데이터 중 일부를 json 형식으로 취급합니다.
Cubism SDK for Unity에는 이러한 json 형식의 파일을 투시 및 인스턴스화하는 클래스가 포함되어 있습니다.

SDK와 함께 제공되는 자산 임포터를 사용하면 가져올 때 투시 및 인스턴스화하는데, 사용자가 런타임으로 로드할 수도 있습니다.

CubismModel3Json

.model3.json의 파서입니다.

.model3.json 내에 기술된 모션이나 표정 등 다른 각종 json의 패스를 취득할 수 있습니다.

CubismModel3Json에서 .model3.json을 투시하려면 CubismModel3Json.LoadAtPath()를 사용합니다.

var json = ((TextAsset) Resources.Load<TextAsset>("path/to/file")).text;

var model3Json = CubismModel3Json.LoadAtPath(json);

투시한 데이터로부터는 .model3.json에 기술된 각종 파일의 상대 패스를 취득하는 것이 가능합니다.

// .moc3
var mocPath = model3Json.FileReferences.Moc;

// textures
for(var i = 0; i < model3Json.FileReferences.Textures.Length; i++)
{
    var texturePath = model3Json.FileReferences.Textures[i];
}

// .physics3.json
var physicsPath = model3Json.FileReferences.Physics;

// .userdata3.json
var userdataPath = model3Json.FileReferences.UserData;

...

기본적으로 .model3.json의 계층 구조와 동일한 구조로 패스를 얻을 수 있지만, .model3.json에 기술된 표정용 데이터의 참조는 독자적인 구조로 되어 있습니다.
이것은 Cubism에서의 .model3.json 구조 사양상 Unity의 빌드인 Json 파서인 JsonUtility로 투시할 수 없기 때문입니다.
Cubism SDK for Unity에서는 표정 데이터의 참조만 독자적인 Json 파서에 의해 투시하고 있습니다.

투시한 .model3.json에서 모델의 Prefab을 생성하려면 CubismModel3Json.ToModel()을 사용합니다.

// Initialize
var model = model3Json.ToModel();

// Original Workflow
var modelForOW = model3Json.ToModel(true);

Cubism SDK for Unity에 구현된 처리는 Unity 에디터에서 프로젝트의 자산을 로드하는 것을 전제로 하고 있습니다.
런타임으로 AssetBundle 등에서 읽는 경우 로드 처리를 사용자 측에서 구현해 주실 필요가 있습니다.

런타임으로 모델을 로드하는 방법에 대해서는 여기를 참조하세요. 

CubismMotion3Json

.motion3.json의 파서입니다.

.motion3.json 내에 기술된 커브 정보로부터 AnimationClip을 생성할 수 있습니다.

CubismMotion3Json에서 .motion3.json을 투시하려면 CubismMotion3Json.LoadFrom()을 사용합니다.

var json = ((TextAsset) Resources.Load<TextAsset>("path/to/file")).text;
 
var motion3Json = CubismMotion3Json.LoadFrom(json);

투시된 .motion3.json에서 AnimationClip을 생성하려면 CubismMotion3Json.ToAnimationClip()을 사용합니다.

// Initialize
var animationClip = motion3Json.ToAnimationClip();

// Original Workflow
var animationClipForOW = motion3Json.ToAnimationClip(true, true, true, pose3Json);

CubismUserData3Json

.userdata3.json의 파서입니다.

.userdata3.json 내에 기술된 정보로부터 모델의 아트메쉬에 사용자 데이터를 적용할 수 있습니다.

CubismUserData3Json에서 .userdata3.json을 투시하려면 CubismUserData3Json.LoadFrom()을 사용합니다.

var json = ((TextAsset) Resources.Load<TextAsset>("path/to/file")).text;
 
var userData3Json = CubismUserData3Json.LoadFrom(json);

투시한 .userdata3.json에서 사용자 데이터를 취득하려면 CubismUserData3Json.ToBodyArray()를 사용합니다.

var drawableBodies = userData3Json.ToBodyArray(CubismUserDataTargetType.ArtMesh);

CubismPhysics3Json

.physics3.json의 파서입니다.

.physics3.json에 기술된 물리 연산 설정을 Unity에서 사용할 수 있도록 변환할 수 있습니다.

CubismPhysics3Json에서 .physics3.json을 투시하려면 CubismPhysics3Json.LoadFrom()을 사용합니다.

var json = ((TextAsset) Resources.Load<TextAsset>("path/to/file")).text;
 
var physics3Json = CubismPhysics3Json.LoadFrom(json);

투시한 .physics3.json에서, Unity에서 취급하는 형식으로 물리 연산 설정을 변환하려면 CubismPhysics3Json.ToRig()를 사용합니다.

var cubismPhysicsController = GetComponent<CubismPhysicsController>();
cubismPhysicsController.Initialize(physics3Json.ToRig());

CubismExp3Json

.exp3.json 파서입니다.

.exp3.json 내에 기술된 표정 차분의 정보를 Unity상에서 취급하는 형식으로 변환할 수 있습니다.

CubismExp3Json에서 .exp3.json을 투시하려면 CubismExp3Json.LoadFrom()을 사용합니다.

var json = ((TextAsset) Resources.Load<TextAsset>("path/to/file")).text;
 
var exp3Json = CubismExp3Json.LoadFrom(json);

CubismPose3Json

.pose3.json의 파서입니다.

.pose3.json에 기술된 정보로부터 Unity에서 파츠의 표시 상태를 제어하는 설정을 취득할 수 있습니다.
Cubism SDK for Unity에서 Pose는 생성된 AnimationClip 커브를 가공하는 데 사용됩니다.

Pose 기능에 대한 자세한 내용은 여기를 참조하십시오. 

CubismPose3Json에서 .pose3.json을 투시하려면 CubismPose3Json.LoadFrom()을 사용합니다.

var json = ((TextAsset) Resources.Load<TextAsset>("path/to/file")).text;

var pose3Json = CubismPose3Json.LoadFrom(json);

CubismDisplayInfo3Json

.cdi3.json의 파서입니다.

.cdi3.json에는 Cubism 에디터에 설정된 파라미터와 파츠, 파라미터 그룹의 이름, 이들과 쌍을 이루는 각 ID가 기술되어 있습니다.

Cubism SDK for Unity에서는 Inspector 창에 표시되는 파라미터와 파츠의 이름을 표시하는 데 사용됩니다.
.cdi3.json이 존재하지 않는 모델의 경우 ID가 표시됩니다.

CubismDisplayInfo3Json에서 .cdi3.json을 투시하려면 CubismDisplayInfo3Json.LoadFrom()을 사용합니다.

var json = ((TextAsset) Resources.Load<TextAsset>("path/to/file")).text;

var cdi3Json = CubismDisplayInfo3Json.LoadFrom(json);
이 기사에 관한 의견 및 요청사항을 보내 주시기 바랍니다.