오늘은 캐릭터에게 생동감을 불어넣어주는 다이나믹본을 써보자, 참고로 다이나믹본은 유료 에셋이니 프로그래머를 위해서 왠만하면 사주기로 하자, 얘도 열심히 만들었을텐데. 다이나빅본이 무엇인가 하면, 머리카락, 스커트자락, 찌찌 등이 움직임에 따라 흔들릴 수 있게 해주는 에셋이다.부모 본의 움직임을 자식본이 상속받느니 뭐니 해도 어차피 너희들은 치맛자락 팔랑이는거나 찌찌 흔들리는거에 관심이 있을테니 상세한 설명은 생략.
1. 일단 에셋스토어를 클릭해서 들어간다. 유니티 로그인과 결제가능한 카드는 옆에 둬라.
2.잠깐 로딩시간이 있다.
3. 들어가서 위쪽 검색창에 dynamic bone이라고 입력하면 푸른배경에서 달리는 검은 그림자가 보인다. 클릭.
4.난 20달러에 샀는데 지금 할인해서 14달러에 팔고있다; 질러라. 결제방법은 인터넷 결제 몇 번 해본사람이면 쉽게 안다. 결제가 끝나면 임포(트)버튼을 누른다.
5. 그러면 저런 임포트 창이 뜬다. import버튼 클릭.
6. Project창에서 Dynamic bone 폴더가 들어온 것을 확인할 수 있다.
7. 이번시간에 우리는 치마를 흔들리게 할거다. 이 캐릭터는 어째 치마가 hips가 아니라 spine에 붙어있다. 치마가 위쪽에 있어서 그런듯; 어떻게 아냐면 spine 바로 아래에 skirt라고 적힌 본들이 잔뜩 있거든. armature아래에 있는 것들이 전부 관절(본)이고 각자 이름이 있으며 얘네들의 움직임에 따라 캐릭터 메시(외형)가 함께 움직인다는 것은 설명할 필요는 없겠지? spine을 클릭한 뒤 오른쪽에 나오는 add component를 클릭한 뒤 dynamic이라고 검색하면 dynamic bone이라는 컴포넌트가 보인다. 클릭.
8. 사실 다이나믹본 컴포넌트는 어디 들어있던 상관이 없다. 나는 편의상 spine 안에 넣었을 뿐. 저기에 단순히 넣는다고 바로 적용되는게 아니라 어떤걸 흔들리게 할지 선택해서 넣어줘야된다. Spine을 드래그해서 넣어주자.
9. 다이나믹본의 움직임은 편집화면에서는 확인이 불가능하다. 위의 스타트버튼을 누른 뒤 scene으로 돌아온다.
10. 그 뒤 아바타 자체를 왼쪽에서 클릭한 다음에 아래쪽의 화살표를 사용해서 움직여주면 다이나믹본의 움직임을 확인 가능하다. 그런데 확인해보니 과하게 다이나믹하다.
11. 그것은 Spine 안에 있는 Chest까지 전부 같이 움직여버렸기 때문, 웃긴 아바타를 만들고싶다면 상관없겠지만 왠만해서는 저렇게 움직이기 싫을 것이다. 오른쪽에서 Exclusions옆의 삼각형을 클릭해주면 열린 화면에서 size를 1로 변경, Element에 Chest를 왼쪽에서 끌어서 넣어준다. 그러면 Spine 다이나믹본에서 Chest의 움직임은 제외된다.
12. 테스트 해보면 더이상 아까처럼 움직이지 않는다.
13. 하지만 스커트가 몸 안쪽으로 자꾸 들어간다. 이래서야 너무 어색해진다. 그런고로 난 Hips에다가 Dynamic bone collider를 추가해주기로 했다. 이 컴포넌트는 다이나믹본이 몸 안쪽으로 파고드는것을 그나마 막아준다.
14. 오른쪽의 center를 통해 중심위치를 조절할 수 있고, Bound는 안쪽으로 튕길 것인지, 바깥쪽으로 튕길것인지이다. 안쪽으로 튕기는걸 쓰는건 후술, Radius는 충돌판정을 줄 범위이다. 빨간 원 안쪽을 보면 선으로 된 노란 구체가 보일텐데, 이것이 collider의 범위이다. 0.001을 일단 입력하고 크기조절하는걸 추천한다. 1은 너무 크거든. Direction과 Height는 collider를 확장시켜주는 역할을 한다. direction은 x,y,z축 중 어느쪽으로 확장할지, height는 어느정도나 확장할지 이다. 직접 입력해보면서 테스트 하는걸 추천한다.
15. collider는 여러개를 넣어줄 수 잇다. 난 3개의 collider를 넣어줬는데 각자 허리, 엉덩이, 그리고 남은 하나는 inside bound collider이다. 이것이 무엇인고 하면. 이 범위 밖으로 나가지 않게 해주는 collider이다.
16. collider도 단순히 넣는다고 바로 적용되는게 아니라 collider가 들어간 본을 또 따로 적용해줘야한다. 아까 spine에 넣는 dynamic bone에서 collision 항목을 연 뒤 exclusion과 비슷한 방법으로 1을 입력하고 거기 아까 collider를 넣어줬던 hips를 끌어넣어주자. 그 뒤 테스트해보면 아까처럼 몸에 파고들진 않지만 역시 너무 팔랑거린다.
17. 그래서 다이나믹 본 내의 설정을 조절하는 것이다. 위에서는 내가 임의로 입력한 설정들이 있지만 기본적으로 0.1이 디폴트값인 항목이 4개(damping, elasticity, stiffness, inert), 그 아래에 각자 상자들, Radius와상자, End Length, End Offset, gravity, force, Freeze Axis, Distance Disable, Reference object, distance to object 등이 있다. 이것들을 나도 전부 아는건 아니니 아는것만 설명하겟다.
Damping - 진동억제 - 흔들림을 얼마나 제어하는가에 대한 설정이다.
Elasticity - 탄성 - 얼마나 원래모양을 유지할지에 대한 설정이다.
Stiffness - 경도 - 얼마나 뻣뻣한지에 대한 설정이다.
inert - 비활성화 - 어느 수준에서 움직임을 비활성화하는지에 대한 설정이다.
이 항목들은 전부 뭐가됐던 1로 설정하면 다이나믹본의 움직임이 collider와 접촉하기 전까지는 계속 사라져잇다는 것을 알 수 잇다.
Radius - 충돌범위 - radius를 설정하면 하얀색 구체가 나오는데 이것들이 collider와 접촉하여 판정하는 면의 범위이다. 크기조절은 알아서 하면 됨.
gravity는 중력이다. 어느 방향으로 중력이 향하는지 설정이 가능한데, 적용시키면 굉장히 이상해져서 개인적으로는 비추천한다. force는 gravity랑 비슷한 느낌이다. 차이점은 gravity는 자연스럽게 가는 거고 force는 강제성이 강하게 간다는것.
각 항목에 붙어있는 distrib(배분)상자는 아래를 보면 된다.
18. distrib은 그래프를 통해 설정 가능한데, 위아래로는 맨 위가 너네가 설정한 값이고 그 아래로는 비율에 따라, 좌우로는 다이나믹본이 활성화되는 시간이다. 점점 탄성이 늘어난다거나 그런게 가능, 그래서 난 너무 심하게 흔들리면 비활성화시켜주도록 inert를 1로 설정한 다음에 처음엔 0.3이다가 조금씩 늘어나도록 했다. 그러면 너무 크게 흔들릴 때에 비활성도가 늘어나게 된다.
19. 스커트를 손으로 팔랑거리고 싶다면 양손에다가도 collider를 넣어준 다음에(손가락에 하나하나 넣어줘도 되는데 난 그냥 손에다가 크게 넣는걸 선호한다.)
20. 스커트 다이나믹본의 colliders에다가 다 넣어주면 된다. 끗
다이나믹본의 설정은 모든 부위, 모든 캐릭터마다 서로 다르고 애매하니 잘 조절해보자, 탄성을 줄이면 흔들림이 예쁜 머리카락을 만들 수 있고, 탄성과 단단함을 늘리면 평소엔 안움직이지만 손으로 만져야만 움직이게도 할 수 있다.다양하게 시도해보자.