关于模型(Native)

[最近更新时间:2019/11/07]

 

 

关于编辑模型信息

模型信息基本上是由 Modeler 创建的。
.moc3文件中记录了顶点等关于参数的移动。
附加到图形网格的其他物理操作和用户数据作为单独的文件输出。
.model3.json 文件跟踪模型的所有文件引用。

从 Modeler 输出 .moc3文件时,可以同时输出。“导出嵌入数据”
您还可以使用 Cubism Viewer (for OW)追加运动、面部表情文件和姿势文件的内置设定。

 

使用框架从 .model3.json 文件中读取

使用 Framework 加载时,从 .model3.json 文件中提取模型所需的信息,然后
假设将维护和使用继承 CubismUserModel 类的实例。

ICubismModelSetting 类中提取的每个元素都可以通过 CubismUserModel :: Load ~~ 系统函数加载。

来自 .model3.json 文件的整体负载流来自示例中的 LAppModel :: LoadAssets 函数
按照LAppModel :: SetupModel函数、CubismUserModel :: CreateRenderer函数、LAppModel :: SetupTextures函数的流程就很容易理解了。

 

创建实例(读取 .moc3文件)

首先,将 .moc3文件加载到内存中。
将读取缓冲区和大小传递给 CubismMoc :: Create 函数首先创建一个 CubismMoc 实例。
然后调用 CubismMoc::CreateModel 函数来创建一个 CubismModel 实例。
从这个 CubismModel 实例中,您可以操作参数并获取绘图信息。

CubismMoc::CreateModel 函数计算 CubismMoc 内部函数生成的模型的数量。
销毁 CubismMoc 时,您需要销毁从 CubismMoc 生成的所有要销毁的 CubismModel。

 

 

图形环境协会

框架使用从 CubismRenderer 类派生的类,以便模型的纹理信息不依赖于图形 API。
所有与模型相关的图形相关信息都由派生自 CubismRenderer 类的类管理。
为图形 API 生成从 CubismRenderer 类派生的类,并
通过使用 CubismRenderer :: Initialize 函数注册 CubismModel 实例,CubismRenderer 实例和 CubismModel 实例被链接。

 

 

纹理关联

Framework 中模型的纹理由 CubismRenderer 类的派生类管理。
但是,该方法没有在 CubismRenderer 类中注册,因为它的功能避免了对图形 API 的依赖。
请注意,方法规范会根据目标图形 API 的不同而有所不同。
在OpenGL处理中,使用CubismRenderer_OpenGLES2类中的CubismRenderer_OpenGLES2::BindTexture函数注册,该类是CubismRenderer类的派生类。
第一个参数可以通过Editor上的模型纹理号和纹理集号来确认。
第二个参数是纹理的OpenGL控制号。

下面的例子是在 Cocos2d-x 中加载一个纹理。

 

单独使用OpenGL的情况下,Cocos2d-x不管理Texture,通过应用端的管理进行注册。

 

 

指定显示位置和大小

您可以使用到目前为止的设定绘制模型,
在很多情况下,显示位置和比例尺相差太大而无法在屏幕上显示。
有关 csmGetDrawableVertexPositions 函数返回的顶点范围,请参阅“DrawableVertexPositions 范围”
使用 CubismModelMatrix 类、CubismModel::GetCanvasWidth 函数和 CubismModel::GetCanvasHeight 函数来调整大小。

这个矩阵在绘制前乘以Projection矩阵,作为MVP矩阵传递给渲染器。

 

 

顶点更新

执行 CubismModel::Update 函数,将 CubismModel 实例的参数操作反映在图形网格的顶点上。

 

 

绘画

绘图不是从 CubismModel 实例执行的,而是被指示给关联的渲染器。

 

 

破坏

销毁实例需要在销毁 CubismMoc 之前销毁所有 CubismlModel。
要保持此顺序,请使用 CubismMoc :: DeleteModel 删除 CubismModel。
如果您不通过此功能,您将收到警告,因为在 CubismMoc 中确认的模型数量不匹配。

 

 

在 CubismModel 类中使用模型中不存在的参数 ID

在CubismModel类的参数和部件不透明度的操作中,有一个函数可以处理.moc3文件中不存在的ID。
该函数被 CubismMotion 类、CubismPose 类等使用。
使用它创建新机制时,请注意您使用的 ID,以免与现有功能冲突。
另外,请记住,当您阅读框架时,您可能会使用创建的参数来处理其他功能。
* 访问不存在的最大值、最小值和初始值时会出错。

 

© 2010 - 2022 Live2D Inc.