목차

1. 원리

2. 제작하기


1. 원리

원리는 피직스본이 움직이거나 당겨졌을때에 대한 값을 파라미터에서 받아서 그것으로 애니메이션을 옮기는 방식이다.

하지만 피직스본을 거의 모르는 사람들을 위해서 간단히 피직스본의 기본 원리 부터 알아보자.

1) 피직스본 생성 원리

  피직스본은 하나의 오브젝트에선 생성할수없고, 2개이상이 겹쳐진 상하위로 구분된 상태에서만 생성된다.

  이때, 본의 길이, 끝나는 지점은 하위 오브젝트의 위치에 따라 결정된다.

  라고 해도 글로 보면 이해가 안될만한 내용이니, 아래의 사진을 참고하면 조금은 도움이 될지도?

 

  이런식으로 큐브두개를 예시로 만들었는데, 지금 큐브와 큐브사이 에 빨간 네모 안에 있는게 피직스본이다.

 

  현재 히어라이어키 상태 / 빨간큐브가 상위 오브젝트인것이고, 파란큐브가 하위 오브젝트인 것이다.

  그리고, GameObject 또는 물체를 생성해서 하위에 넣는다고 바로 생성되는건 아니니, 인스펙터에서 만들어줘야한다.




123

  위의 순서대로 피직스본 스크립트를 추가해주면 된다.

  이런 방법으로 GameObject (히어라이어키에 마우스를 대고 우클릭 -> Create Empty) 를 이용해서도 만들수있다.

  큐브는 이해를 돕고자 생성한것으로, 강좌는 GameObject 만 생성해서 할것이다.

2) 피직스본 수치값 설명

 다른글에서 조금더 상세히 다뤄주겠지만 간단하게만 알아보자.

 

이름설명최소 / 최대 수치
Pull이 값을 조절하면 피직스본이 원래자리로 되돌아오는 
힘을 조절할수있다. 
0이되면 되돌아 오지않는다.
Min : 0 / Max : 1
Momentum이 값을 조절하면 피직스본이 팔랑거리는 느낌으로 되돌아온다.
0 이되면 팔랑거림이 없어진다.
Min : 0 / Max : 1
Stiffness이 값을 조절하면 피직스본이 하늘하늘한 느낌으로 되돌아온다.
0이 되면 하늘하늘한 느낌이 없어진다.
Min : 0 / Max : 1
Gravity이 값을 조절하면 피직스본에 중력값을 부여한다.Min : 0 / Max : 1
Gravity Falloff이 값을 조절하면 위의 중력값에 반대의 힘을 준다.Min : 0 / Max : 1
Immobile TypeAll Motion : 피직스본을 건드리거나 잡지않는 이상 덜 움직인다.
                1 이 되면, 아예 움직이지 않는다.
World : 아바타가 키보드 wasd 또는 컨트롤러로 아바타의 위치를 조작할때만 한정으로 덜움직인다.
           1 이 되면, 아바타가 움직이는 동안에는 피직스본은 움직이지않는다.
Immobile위의 타입의 수치값 조절Min : 0 / Max : 1
Limit TypeAngleHingePolar
3D 적인 움직임을 표현해준다.Min : 0
Max : 180
2D 적인 움직임을 표현해준다.Min : 0
Max : 180
2.5D 정도 된다.Min : 0
Max : 180
Radius인게임에서 피직스본을 잡거나 충돌이 일어나는지점은 겉 인데, 그지점의 반지름 이라고만 알아두면 된다. 
0 이 되면, 잡을수 없다.
Allow GrabbingTrue : 잡기 가능 / Fasle : 잡기 불가
Others : Allow Self : 본인에게 해당사항 조정, Allow Others : 타인 에게 해당사항 조정
Allow PosingTrue : 고정 허용 / False : 고정 불가 
Other : Allow Self : 본인 에게 해당사항 조정, Allow Others : 타인 에게 해당사항 조정 
Max Stretch이 값을 조절하면 피직스본이 늘어나는 양을 조절할수있다.Min : 0  / Max : 5
Parameter파라미터 와 연동할 이름 (이게 제일 중요함.)

사실 이렇게 장황하게 적어놔도 이번에 쓸건 거의 없다.


2. 작동방식 1

작동방식 1번은 Max Stretch를 이용해서 만들것이다.

우선 저번 강좌글에 있는 옷을 사서 사용하거나 블렌더에서 직접 쉐이프키를 만들었다면, 우선 옷을 입혀주자.

-옷입히는방법 생략-

  1) 피직스본 생성

    피직스본을 만들건데, 위치는 당연히 옷에서 잡힐만한 위치이다.

아 사진은 적당히 검은칠 해뒀으니, 기대하지말라고~

상의 피본 위치

피본 1 위치

히어라이어키 상태

이렇게 배치하고 상의 피본 오브젝트에 피직스 본을 생성해주자.

그리고 피직스 본을 생성 했으면, 그다음으로 피직스본 수치를 수정할건데,

Immobile Type : Allmotion / Immobile : 1 / Radius : 0.01 /Max Stretch : 1 로 조정해주자.

그다음 Parameter : 상 을 입력해주면 되는데, 파라미터에는 아무거나 적어도 된다.

대신 다음 내용과 상이 할수있으니 이왕이면 같이 맞추는걸 추천함.


피직스본 설정은 끝났으니, 다음으로 FX 레이어로 이동하여서 작업을 진행할것이다.


FX 레이어의 파라미터에서 Float 타입으로 추가할건데, 파라미터 이름은 상_Stretch 로 해주면된다. (S는 무조건 대문자)

만약 피직스본 파라미터이름을 다른걸로 했으면 OO_Stertch 써주면 된다. 

그리고 레이어를 하나 생성하고, Weight 는 1주는거 까먹지말고, State 를 두개 생성하자.


트랜지션은 기본 -> 올림 / 올림 -> 기본 으로 이어주면 된다.


 

트랜지션 설정은 사진 참고하여서 만들자. 


그다음에, 올림 스테이트 우클릭 -> Create new BlendTree in State 클릭

그렇게 해주면 올림 스테이트에 BlendTree가 추가될것이다.


올림 스테이트를 클릭해보면 인스펙터에서 확인해볼수있다.

이제 BlendTree를 더블 클릭해서 세부 설정을 해주자.


빨간 네모 지점 클릭하고, 아까 만든 상_Stretch 로 바꿔주자.


그다음, + 버튼 누르고 Add Motion Field 를 2개 추가해주자.


이까지왔으면 거의 다왔다.


이제 애니메이션을 2개 만들고, BlendTree 에 추가해둔 Motion 에다 넣기만 하면 된다.

기본 상태일때

벗겨진 상태일때 

이런식으로 애니메이션을 두개 만들어주자.


다시 BlendTree 로 되돌아가서, Motion에 위쪽에 기본상태, 아래쪽에 벗겨진 상태를 넣어주면된다.

이렇게 해주면 끝이다. 업로드 하고 테스트 해보자.


다음은 제작편-2로 다시 올껀데 그땐 다른 방식으로 할거야.. 하나하나 스샷찍어가면서하니가 힘들다..ㅠㅠㅠㅠㅠㅠㅠㅠㅠ


-끝-