애니메이터

[Unity3D] Jiggle Bone 의 구현 본문

Game Engine/Unity3D

[Unity3D] Jiggle Bone 의 구현

욤마핫 2012. 11. 14. 11:59

Jiggle Bone 은 2차 애니메이션을 애니메이터가 키프레임을 잡지 않고 게임엔진의 물리엔진에 맞김으로서 좀 더 자연스러운 움직임을 이끌어내고 작업절차상으로도 업무의 과중을 줄일 수 있다.

 

(3dsMax 에서는 Nvidia 의 Physx를 적용한다던지 Reactor를 쓴다던지 Spring을 쓴다던지 해서 구현 가능)

 

Unity3D 에서 어떻게 적용하는지 보면,

Bone setting이 된 오브젝트를 가져와서 Bone 에 다가

 

Riggid Body       →      Collision       →       Joint                

 

의 세단계를 거치면 기본적 세팅이 완료된다.

 

주의할 점

배경이나 캐릭터등 어떤 오브젝트이던 Collision Box가 Jiggle Bone 세팅된 Collision Box 에 간섭한다던지, 아니면 아주 큰 배경 Collision Box 안에서 Jiggle Bone 세팅이 돌아다니게 되면 충돌체크 때문에 지랄난장을 하게된다.

항상 Collsion Box 설정에 정성을 들이도록.

 

기본적 세팅은 끝났으나 위의 세팅으로 마치게 되면 항상 중력값에 영향을 받기 때문에 모든게 축 쳐져 내려와 있다.

 

여기에 Java Script를 추가 하여 모멘텀이 느껴지도록 수정하자.

 - from : http://www.farfarer.com/blog/2011/07/07/unity-skeletal-ragdoll-jiggle-bones-tutorial/

 

#pragma strict

private var thisParent : Transform;
private var thisRigidbody : Rigidbody;

private var parentPosLastFrame : Vector3 = Vector3.zero;

function Awake () {
thisParent = transform.parent;
thisRigidbody = transform.GetComponent.< Rigidbody > ();
}

function Update () {
thisRigidbody.AddForce ( ( parentPosLastFrame - thisParent.position ) * 100 );
parentPosLastFrame = thisParent.position;
}

 

이렇게 하면 Jiggle Bone이 만들어지게 된다.