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