모델 표시 직후의 물리 연산을 즉시 안정화
이 페이지는 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();
}
}
}
이 기사가 도움이 되었나요?
네아니요