立即稳定模型显示后的物理模拟
追加了在Cubism 4 SDK R5中立即稳定物理模拟的功能。
使用Cubism SDK显示模型时,如果参数值不是初始值,物理模拟可能会进行剧烈的动作,这是用来立即稳定的。
要立即稳定物理模拟,请在原始化或置入模型后立即调用Native中的CubismPhysics::Stabilization()、Web中的CubismPhysics.stabilization()或Unity中的CubismPhysics.Stabilization()。
以下是使用Cubism SDK范例场景并在原始化模型后立即稳定物理模拟的片段。
Native
只有模型的第一帧在物理模拟处理之前调用稳定函数。
bool isUpdateFirst = true; void LAppModel::Update() { ... // 物理模拟设置 if (_physics != NULL) { if (isUpdateFirst) { // 原始化后立即稳定物理模拟 _physics->Stabilization(_model); isUpdateFirst = false; } _physics->Evaluate(_model, deltaTimeSeconds); } ...
Web
只有模型的第一帧在物理模拟处理之前调用稳定函数。
_isUpdateFirst: boolean = true; public update(): void { ... // 物理模拟设置 if (this._physics != null) { if (this._isUpdateFirst) { // 原始化后立即稳定物理模拟 this._physics.stabilization(this._model); this._isUpdateFirst = false; } this._physics.evaluate(this._model, deltaTimeSeconds); } ...
Unity
若将以下组件附加到模型预制件的根部,只会在物理模拟处理之前在模型的第一帧上调用稳定函数。
using Live2D.Cubism.Framework; using Live2D.Cubism.Framework.Physics; using UnityEngine; public class PhysicsStabilizer : MonoBehaviour, ICubismUpdatable { private bool _isUpdateFirst = true; public bool HasUpdateController { get; set; } public int ExecutionOrder { get { return CubismUpdateExecutionOrder.CubismPhysicsController - 1; } } public bool NeedsUpdateOnEditing { get { return false; } } public void OnLateUpdate() { if (!_isUpdateFirst) { return; } // 原始化后立即稳定物理模拟 GetComponent<CubismPhysicsController>().Stabilization(); _isUpdateFirst = false; } public void Start() { HasUpdateController = (GetComponent<CubismUpdateController>() != null); } private void LateUpdate() { if (!HasUpdateController) { OnLateUpdate(); } } }
请问这篇文章对您有帮助吗?
是否