유니티 다이나믹 본 (Dynamic Bone)
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으로 연락주세요.
기본 설정 방법
- 캐릭터 준비:
- Mecanim 또는 레거시 리그(Rig) 모두 지원됩니다.
- Dynamic Bone을 적용할 게임 오브젝트 선택
- 컴포넌트 메뉴에서 Dynamic Bone -> Dynamic Bone 선택
- Inspector에서 Root 오브젝트 지정
- Dynamic Bone 파라미터 조정 (아래 세부 설명 참고)
Collider 추가 방법
- Collider를 부착할 게임 오브젝트 선택
- 컴포넌트 메뉴에서 Dynamic Bone -> Dynamic Bone Collider 선택
- Collider의 위치와 크기 조정
- 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