对每个部分执行不同的运动管理

在这个页面上,为了实现左右手不同的运动管理,
举个例子,增加LAppModel的Cubism MotionManager的占有,并入LAppModel::Update。
让我们看一下管理和创建动作时要注意的点。

 

 

增加CubismMotionManager

将管理器追加到模型

首先,我们看一下程序端的实现。
首先要做的是向您的模型追加一个管理类。
我们将 CubismMotionManager 追加到示例 LAppModel。
也向构造函数和析构函数追加生成和释放处理。

 

 

更新过程

还要追加到更新过程中,以便播放的动作影响参数。

在 LAppModel::Update 里面追加时,在 _model->LoadParameters(); 和 _model->SaveParameters(); 之间
确保安装更新运动。
另外,如果多次执行UpdateMotion,可能会导致需要更新的参数。
请注意,在这种情况下,后面的 UploadMotion 的内容将优先。

 

开始播放

然后,以复制和修改StartMotion系统的成员函数的形式。
可以使用追加的运动管理器指示运动播放。

请注意,StartHandMotion 函数将运动管理器作为参数。
在以下示例中,仅播放 .motion3.json 中指定的动作(由 PreLoad 函数加载的动作)。

 

运动播放为模型追加了命中判断,使其通过点击工作。

 

 

负责参数的分布

如更新过程所示,如果多个要播放的动作之间的参数重叠,则后面执行的更新内容将被优先执行,参数将被覆盖。
因此,在使用多个运动管理器时,哪个运动管理器负责哪个部分的运动?
因此,有必要决定哪个参数操作负责。

 

上述视频中,左臂和右臂的参数由低优先级的运动管理器(负责整个模型的空闲运动)在高优先级的运动管理器(负责整个模型的空闲运动)播放后立即设置。左臂和右臂的运动)完成。这是一个已更新的示例。
如果您希望将高优先级运动管理器更新的参数保持在运动播放结束后立即的状态,这不是一个理想的表达方式。
当低优先级的运动管理器播放的运动数据中不打算更新的参数设定参考值时,就会出现这种现象。
此时,通过将要更新的参数对每个运动数据进行分离,可以将具有高优先级的运动管理器更新的参数保持在播放结束后立即的状态。

 

是否分离每个参数或假设覆盖
在创建运动之前明确定义规范非常重要,以免进行巨大的修正。

© 2010 - 2022 Live2D Inc.