Json
最終更新: 2021年6月10日
概述
Live2D Cubism以json格式处理一些运行用数据。
Cubism SDK for Unity包括解析和副本化这些json格式文件的类。
SDK中包含的资产载入器会在它们被载入时解析并副本化它们,但它也可以由用户在运行时导入。
- CubismModel3Json
- CubismMotion3Json
- CubismUserData3Json
- CubismPhysics3Json
- CubismExp3Json
- CubismPose3Json
- CubismDisplayInfo3Json
CubismModel3Json
它是.model3.json的解析器。
您可以获得各种其他json路径,例如.model3.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解析器仅解析表情数据的参考。
使用CubismModel3Json.ToModel()从解析的.model3.json生成模型Prefab。
// Initialize var model = model3Json.ToModel(); // Original Workflow var modelForOW = model3Json.ToModel(true);
Cubism SDK for Unity中实装的处理以从Unity Editor导入项目中的资产为前提。
在运行时从 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);
使用CubismMotion3Json.ToAnimationClip()从解析的.motion3.json生成AnimationClip。
// 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);
使用CubismPhysics3Json.ToRig()将物理模拟设置从解析的.physics3.json转变为Unity处理的格式。
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 Editor中设置的参数、部件和参数组的名称、以及配对它们的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);