关于姿势

[最近更新时间:2019/01/18]

 

 

 

什么是暂停功能?

Pose 是一种基于动作淡化多个相同类型部件的单个部件的切换的功能。
同类型的多个部件是指同时显示时会引起显示矛盾的部件,例如右手A和右手B。

也是处理部分最终将运动中的部件不透明度操作应用到部件。

要了解此页面,建议提前阅读“关于模型”中的“在 CubismModel 类中使用模型中不存在的参数 ID”。

 

运动中的部件不透明度操作流程

运动播放中的部件不透明度操作

为了保持part opacity的一致性,Original WorkFlow的Framework中单独的运动播放并不直接对part opacity进行操作。

运动播放中部件的不透明度操作被替换为覆盖与部件相同的ID参数
此时,模型中不存在的参数ID仅作为虚拟参数保留。
不执行与运动切换相关联的淡入淡出处理等,仅执行覆盖。

在 OW SDK 中,将部件不透明度操作内插到运动的方法假定应用了步。

 

 

应用姿势

通过在模型更新过程的最后阶段应用 Pose 函数,
根据pose3.json中描述的信息为每个组显示哪个部件
参考虚拟参数的值来确定。

将 Pose 应用于模型的 API 如下

 

部件操作的曲线推荐步,但如果选择直线等,
当它变得大于 0.001时,它被识别为显示状态。

在确定显示部件时,新的不透明度通过与操作前的部件不透明度的时间差进行比例计算,确定为直线插值。

 

在确定了显示部件及其新的不透明度后,对整个组进行不透明度覆盖处理。
隐藏部件的新不透明度将相对于显示部件的不透明度将不透明度降低到背景不透明的水平。

 

 

姿势数据结构

Pose 处理的信息用于加快对参数和部件信息的访问。
当通过部件 ID 访问时,部件的参数和索引被合并并保存在 PartData 结构中。

此外,链接数据作为链接的 PartData 的子元素存储。

 

CubismPose 将组信息表示为一维 PartData 数组和每个组的数字信息数组。

 

将一维数组的PartData作为一个组进行处理,根据每组的个数信息,将数组上的起始位置和元素个数传递给DoFade。

 

 

父 ID 的不透明度互锁

在 Pose 应用程序进程结束时调用的以下函数将值传播到 Link 中指定的部件。

 

此链接将 PartID(即 OWViewer 中的父 ID)存储为 CubismIdHundle 数组。
下图中PartArmLB001和PartArmLC001的CubismIdHundle存放在PartManteL001的Link中。

 

虽然写成Link,但是是父子关系,是父子关系。
请注意,如果没有对父部件进行不透明度操作,它将无法工作。
链接中显示的子项未链接。

 

 

创建实例(读取 .pose3.json 文件)

姿势保存在 .pose3.json 文件中并使用 CubismPose 类。
使用以下函数生成它。

实现示例

 

 

应用姿势

使用以下函数应用姿势。

需要提前完成应用运动等虚拟参数的计算。

 

 

 

破坏

您还应该在模型释放时销毁 CubismPose 实例。

© 2010 - 2022 Live2D Inc.