立即稳定模型显示后的物理模拟
此页面适用于Cubism 4.2及更早版本的旧版本。 点击此处查看最新页面
追加了在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();
}
}
}
请问这篇文章对您有帮助吗?
是否