Json (Cocos Creator)
最終更新: 2023年3月14日
概述
Live2D Cubism以json格式处理一些运行用数据。
Cubism SDK for Cocos Creator包括解析和副本化这些json格式文件的类。
SDK中包含的资产载入器会在它们被载入时解析并副本化它们,但它也可以由用户在运行时导入。
- CubismModel3Json
- CubismMotion3Json
- CubismUserData3Json
- CubismPhysics3Json
- CubismExp3Json
- CubismPose3Json
- CubismDisplayInfo3Json
CubismModel3Json
它是.model3.json的解析器。
您可以获得各种其他json路径,例如.model3.json中描述的动态和表情等。
使用CubismModel3Json.loadAtPath()解析CocosCreator默认resources 中的JsonAsset。
const model3Json = await CubismModel3Json.loadAtPath("path/to/file");
如果想解析CocosCreator默认resources以外的.model3.json,可以通过任意方法获取字符串,将JSON.parse()处理后的物体传递给CubismModel3Json.loadFromJson()。
const json = JSON.parse(jsonSourceText); const model3Json = CubismModel3Json.loadFromJson(json);
从解析的数据可以得到.model3.json中描述的各种文件的相对路径。
// .moc3 const mocPath = modelj.fileReferences.moc; // textures for(let i = 0; i < modelj.fileReferences.textures.length; i++) { const texturePath = modelj.fileReferences.textures[i]; } // .physics3.json const physicsPath = model3Json.fileReferences.physics; // .userdata3.json const userdataPath = model3Json.fileReferences.userData; ...
基本上可以得到与.model3.json的层次结构相同的路径,但是,.model3.json中描述的表情数据参考有独特的结构。
Cocos Creator无法使用CubismModel3Json.toModel()生成Prefab,因为无法在Editor Platform上收集资产。
如果您需要使用自己的工作流程创建Prefab,则需要在用户端进行实装。
此外,Cubism SDK for Cocos Creator中实装的处理以从Cocos Creator的Editor导入项目中的资产为前提。
在运行时从AssetBundle等中导入时,需要在用户端实装导入处理。
CubismMotion3Json
它是.motion3.json的解析器。
可以从.motion3.json中描述的曲线信息生成AnimationClip。
要通过CubismMotion3Json解析.motion3.json,则使用CubismMotion3Json.loadFrom()。
const json = resources.load<TextAsset>("path/to/file").text; const motion3Json = CubismMotion3Json.loadFrom(json);
使用CubismMotion3Json.toAnimationClip()从解析的.motion3.json生成AnimationClip。
// Initialize const animationClip = motion3Json.toAnimationClipA(); // Original Workflow const animationClipForOW = motion3Json.toAnimationClipA( true, true, true, pose3Json );
CubismUserData3Json
它是.userdata3.json的解析器。
您可以根据.userdata3.json中描述的信息,将用户数据应用到模型图形网格。
要通过CubismUserData3Json解析.userdata3.json,则使用CubismUserData3Json.loadFrom()。
const json = resources.load<TextAsset>("path/to/file").text; const userData3Json = CubismUserData3Json.loadFrom(json);
要从解析的.userdata3.json中获取用户数据,则使用CubismUserData3Json.toBodyArray()。
const drawableBodies = userData3Json.toBodyArray( CubismUserDataTargetType.ArtMesh );
CubismPhysics3Json
它是.physics3.json的解析器。
您可以转变.physics3.json中描述的物理模拟设置,以在Cocos Creator中使用。
要通过CubismPhysics3Json解析.physics3.json,则使用CubismPhysics3Json.loadFrom()。
const json = resources.load<TextAsset>("path/to/file").text; const physics3Json = CubismPhysics3Json.loadFrom(json);
使用CubismPhysics3Json.ToRig()将物理模拟设置从解析的.physics3.json转变为Cocos Creator处理的格式。
const cubismPhysicsController = modelNode.getComponent< CubismPhysicsController >(); cubismPhysicsController.initialize(physics3Json.toRig());
CubismExp3Json
它是.exp3.json的解析器。
.exp3.json中描述的表情差异信息可以转变为Cocos Creator上处理的格式。
要通过CubismExp3Json解析.exp3.json,则使用CubismExp3Json.loadFrom()。
const json = resources.load<TextAsset>("path/to/file").text; const exp3Json = CubismExp3Json.loadFrom(json);
CubismPose3Json
它是.pose3.json的解析器。
从.pose3.json中描述的信息,您可以得到控制部件在Cocos Creator上显示状态的设置。
从.pose3.json中描述的信息,您可以得到控制部件在Cocos Creator上显示状态的设置。
单击此处了解有关Pose功能的详细信息。
在Cubism SDK for Cocos Creator中,Pose用于加工生成的AnimationClip的曲线。
要通过CubismPose3Json解析.pose3.json,则使用CubismPose3Json.loadFrom()。
const json = resources.load<TextAsset>("path/to/file").text; const pose3Json = CubismPose3Json.loadFrom(json);
CubismDisplayInfo3Json
它是.cdi3.json的解析器。
.cdi3.json描述了在Cubism Editor中设置的参数、部件和参数组的名称、以及配对它们的ID。
如果模型中不存在.cdi3.json,则会显示ID。
在Cubism SDK for Cocos Creator中,它用于显示Inspector视窗中显示的参数和部件的名称。
要通过CubismDisplayInfo3Json解析.cdi3.json,则使用CubismDisplayInfo3Json.loadFrom()。
const json = resources.load<TextAsset>("path/to/file").text; const cdi3Json = CubismDisplayInfo3Json.loadFrom(json);