프로그래밍/Unity

유니티 다이나믹 본 (Dynamic Bone)

neive 2025. 3. 23. 18:21
728x90

 

https://assetstore.unity.com/packages/tools/animation/dynamic-bone-16743?aid=1011lvKwp

 

Dynamic Bone | 애니메이션 도구 | Unity Asset Store

Use the Dynamic Bone tool from Will Hong on your next project. Find this & more animation tools on the Unity Asset Store.

assetstore.unity.com

 

 

 

 

Dynamic Bone 설명서 번역


Dynamic Bone 소개

Dynamic Bone은 캐릭터의 뼈(Bone)나 관절(Joint)에 물리를 적용합니다.
간단한 설정으로 머리카락, 옷, 가슴 등 캐릭터의 부위를 현실적으로 움직일 수 있습니다.
Assets/DynamicBone/Demo/Demo1을 열어 작동 방식을 확인하세요.
문의 사항은 willhongcom@gmail.com으로 연락주세요.


기본 설정 방법

  1. 캐릭터 준비:
    • Mecanim 또는 레거시 리그(Rig) 모두 지원됩니다.
  2. Dynamic Bone을 적용할 게임 오브젝트 선택
  3. 컴포넌트 메뉴에서 Dynamic Bone -> Dynamic Bone 선택
  4. Inspector에서 Root 오브젝트 지정
  5. Dynamic Bone 파라미터 조정 (아래 세부 설명 참고)

Collider 추가 방법

  1. Collider를 부착할 게임 오브젝트 선택
  2. 컴포넌트 메뉴에서 Dynamic Bone -> Dynamic Bone Collider 선택
  3. Collider의 위치와 크기 조정
  4. Dynamic Bone 컴포넌트의 Colliders 리스트에 해당 오브젝트 추가

Dynamic Bone 컴포넌트 설명

Root

  • 물리가 적용될 트랜스폼 계층 구조의 루트 오브젝트입니다.

Roots

  • 여러 루트를 허용하며, 모두 동일한 파라미터를 공유합니다.

Update Rate

  • 물리 시뮬레이션 주기 (초당 프레임 단위).

Update Mode

  • Normal: 지정된 속도로 물리 업데이트.
  • AnimatePhysics: 물리 엔진과 동기화되어 업데이트.
  • UnscaledTime: Time.timeScale 영향 없이 독립적 업데이트.
  • Default: 지정된 속도 대신 매 프레임 업데이트 (권장).

Damping

  • 뼈의 움직임이 얼마나 빠르게 감쇠되는지 설정합니다.

Elasticity

  • 뼈가 원래 위치로 돌아오는 탄성력의 강도입니다.

Stiffness

  • 뼈의 강성도를 조절합니다 (높을수록 뻣뻣함).

Inertia

  • 캐릭터의 위치 변화가 물리 시뮬레이션에서 얼마나 무시되는지 설정합니다.

Friction

  • Collider와 충돌 시 감속되는 정도입니다.

Radius

  • 각 뼈가 Collider와 충돌할 때 사용되는 구체의 반경입니다.

Damping/Elasticity/Stiffness/Inertia/Radius Distrib

  • 계층 구조에 따라 파라미터가 변화하는 방식을 커브로 제어합니다.

End Length

  • 0이 아니면 트랜스폼 계층 끝에 추가 뼈 생성 (길이 조절).

End Offset

  • 0이 아니면 트랜스폼 계층 끝에 로컬 공간 기준 오프셋으로 뼈 생성.

Gravity

  • 뼈에 적용되는 중력 (월드 좌표계).

Force

  • 뼈에 적용되는 추가 힘 (월드 좌표계).

Blend Weight

  • 물리 효과와 기존 애니메이션의 혼합 정도를 제어합니다.

Colliders

  • 뼈와 상호작용하는 Collider 오브젝트 리스트입니다.

Exclusions

  • 물리 시뮬레이션에서 제외할 뼈 목록입니다.

Freeze Axis

  • 뼈의 움직임을 특정 평면으로 제한합니다.

Distant Disable

  • 캐릭터가 카메라나 플레이어로부터 멀어지면 물리 시뮬레이션을 자동 비활성화합니다.
  • 참조 오브젝트가 없으면 기본 메인 카메라를 사용합니다.

Dynamic Bone Collider 설명

Center

  • 구체 또는 캡슐의 중심점 (로컬 좌표계).

Radius

  • 구체 또는 캡슐의 반경 (트랜스폼 스케일 영향 받음).

Height

  • 캡슐의 높이 (두 반구 포함, 트랜스폼 스케일 영향 받음).

Radius 2

  • 캡슐의 다른 반경 (0이면 Radius와 동일).

Direction

  • 캡슐 높이의 축 방향입니다.

Bound

  • 뼈를 바깥 또는 안쪽으로 제한합니다.

Dynamic Bone 스크립트 레퍼런스

public void SetWeight(float w)

  • 물리와 애니메이션의 혼합 가중치를 제어합니다.

public void UpdateParameters()

  • 런타임 중 파라미터 변경 후 호출하여 업데이트합니다.

public bool m_Multithread

  • 멀티스레드 활성화/비활성화 (기본값: true).

 

 

실제 사용 방법!

 

의상이 몸을 파고드는 것을 해결해보자

이런 식으로 동작에 따라 옷이 박힌다

 

게임 오브젝트 제일 윗단에 Dynamic Bone 을 추

가하자.. 물론 어딘가 동작할 곳에 붙여도 되지만

나중에 찾기 곤란하다 그냥 되도록이면 제일 외부

에 두자.

 

주로 신경쓸 수치는 직접 충돌 체크를 할 Radius

다 수치를 직접 넣어보면서 에디터 상에 표시되

는 구체의 크기를 봐야 한다. 대충 1만 넣으면 생

각보다 영역이 커서 제대로 동작을 안한다

 

그리고 의상의 제일 상단의 오브젝트를 Root 에

연결하자 이건 중요하다 제대로 된 경로를 연결

하지 않으면 의도한 결과가 나오지 않는다

 

이제 몸에 파고들지 않도록 위에서 설정한 Dynamic Bone

의 흰색 동그라미 영역과 충돌해서 옷을 밀어낼 노란 원

(Dynamic Bone Collider) 이 생겨나게 해주는 Dynamic Bone

Collider 컴포넌트를 본 어딘가 잘 배치하고 역시 정교하게

Radius 값을 넣자. 다른 변수들은 사실 크게 상관없다 긴 영

역에 해당하는 곳을 충돌 처리할게 아니라면

 

그 다음 먼저 추가 했던 Dynamic Bone 컴포넌트의 

Colliders 리스트에 새로 만든 Dynamic Bone Collider 를

추가해주자. 이제 본과 컬리더가 상호작용을 하기 시작한

 

옷 주름이 약간 꺾인게 보이긴 하지만 이 정도면

뭐 매우 훌륭하다 옷의 쳐짐도 괜찮게 나온다

 

 

머리카락/헤어가 몸에 파고 드는 것도 처리

 

애니메이션을 하면 머리카락이 등을 파고든다

 

댕기 머리가 바딱 서도록 목에 일단 다이나믹본

충돌을 넣어주고 머리가 길어서 엉덩이로 파고

드는걸 막기 위해 엉덩이에도 충돌 처리를 배치

 

등으로 안파고 들고 엉덩이에서 자연스럽게

옆으로 흐르게 적용

 

 

이상 최고의 성능과 가성비의 다이나믹 본!

 

https://assetstore.unity.com/packages/tools/animation/dynamic-bone-16743?aid=1011lvKwp

 

Dynamic Bone | 애니메이션 도구 | Unity Asset Store

Use the Dynamic Bone tool from Will Hong on your next project. Find this & more animation tools on the Unity Asset Store.

assetstore.unity.com

 

728x90