Json (Cocos Creator)

最終更新: 2023年3月14日

概述

Live2D Cubism以json格式处理一些运行用数据。
Cubism SDK for Cocos Creator包括解析和副本化这些json格式文件的类。

SDK中包含的资产载入器会在它们被载入时解析并副本化它们,但它也可以由用户在运行时导入。

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);
请问这篇文章对您有帮助吗?
关于本报道,敬请提出您的意见及要求。