※ Physics 설정

; 이번 문서에는 물리설정에 관련된 사항을 설명합니다.

Skin 파일을 수정하면서 바로 물리 설정을 해도 되지만,

복습하는 차원에서 스킨을 렌더링 한 후 물리설정을 해 보겠습니다.

물리설정은 오브젝트와 각 메쉬에 설정 할 수 있으며,

각 메쉬당 하나의 물리 Actor 또는 물리 천(cloth) 을 설정할 수 있습니다.

오브젝트에는 각 메쉬간의 Actor 를 연결하는 관절정보(Joint) 를 입력 할 수 있으며,

또한 래그돌에 관련된 여러개의 Actor 들과 Joint 들에대한 정보들을 삽입 할 수 있습니다.



(1) Entity Tool 을 실행 합니다.
tool-3.jpg

(2) 우측에 List_Edit 창에서 Skin_List 탭을 선택합니다.
tool-3-2.jpg

(3) Skin_List 탭 아래에서 Load 를 선택한후 Skin 을 하나 로드 합니다.
tool-3-3.jpg

(4) 리스트에서 로드된 Skin 파일을 선택한후 Render 버튼을 눌러 렌더링 합니다.
tool-4.jpg

(5) 렌더링된 Skin 은 좌측에 Material_Edit 컨트롤에 정보들이 표시 됩니다.
; 현재 렌더링된 스킨은 box.skin 파일입니다.
Object_Opt 아래에 하나의 항목만 있으므로 ( "Box01_Material") 메쉬가 하나이며, 메쉬이름은 Box01 인
오브젝트 입니다. (복습차원)
tool-5.jpg

(6) 그 상태에서 좌측의 창들중 Actor_Edit 컨트롤을 선택하여 활성화 시킵니다.
; 아래에 버튼들은 각각 아래와 같다.
⊙ Add : 물리정보를 추가하는 버튼
⊙ Remove : 물리정보를 제거하는 버튼
⊙ Cloth : 특정메쉬를 천으로 지정할 경우
⊙ Set_Postion : 물리설정 테스트를 위해 특정위치(Actor_Test 항목에서 설정한) 로 옮긴다.
⊙ Apply_Force : 물리설정 테스트를 위해 특정힘(Actor_Test 항목에서 설정한) 을 오브젝트에 가한다.
⊙ Build : 물리설정된 값들을 오브젝트에 적용시킨다.
tool-6.jpg

(7) 컨트롤에 각 정보들을 설명하면
tool-8.jpg
⊙ Actor_Test : Actor 테스트를 위한 각종 항목들이 있다.
            - Physic_Enable : 물리의 동작여부를 활성화 혹은 비활설화 시킨다.
                       (Default 로 FALSE로 되어 있다.  그러므로 TRUE 가 되지 않으면 물리 시뮬레이션을 할 수 없다.)
            - Position : 특정위치를 설정한다. 아래에 Set_Position 버튼을 통해 이 위치로 이동 시킬 수 있다.
            - Force_Mode : Apply_Force 버튼을 통해 물리 설정을 테스트할때 어떠한 방식으로 힘을 전달할지를 정한다.
                        Normal : 일반적으로 힘을 가하는 형태. 미는듯이 힘을 준다.
                        Impulse : 순간적으로 강하게 힘을 가한다.
                        Velocity Change : 속도를 변화시킨다.
                        Smooth Impulse : 부드럽게 Impulse 시킨다.
                        Smooth Velocity Change : 부드럽게 속도를 변화 시킨다.
                        Acceleration : 가속을 준다.
            - Force : 힘의 크기와 방향을 합친형태. 예를들어 z축 방향으로 10 만큼이라면 (0, 0, 10) 이 된다.
            - Torque Mode : Apply Force 버튼을 눌러 물리설정을 테스트할때 힘을 전달하는 방법 (회전)
                        Normal : 일반적으로 힘을 가하는 형태. 미는듯이 힘을 준다.
                        Impulse : 순간적으로 강하게 힘을 가한다.
                        Velocity Change : 속도를 변화시킨다.
                        Smooth Impulse : 부드럽게 Impulse 시킨다.
                        Smooth Velocity Change : 부드럽게 속도를 변화 시킨다.
                        Acceleration : 가속을 준다.
            - Torque : 회전방향 * 힘의크기

⊙ Physic_Object :실제 물리설정 항목들.
tool-9.jpg
           - PhysicJoint : 각 물리설정 Actor 사이에 관계를 설정 할 수 있다. 메쉬마다 하나의 Actor 을 설정 할 수 있는데,
                                   그런 메쉬마다의 Actor 사이의 연결관계를 설정하기 위한 관절 정보이다.
                                   마우스로 PhysicJoint 를 선택한후  Add 버튼을 누르면 조인트관련 설정이 하나 추가된다.
                                   추가된후 첫번째 Actor 인덱스와 두번째 Actor 인덱스를 넣고 각종 값들을 설정하면,
                                   첫번째 Actor 과 두번째 Actor 사이의 연결 관계를 설정할 수 있다.
                                   Actor 의 순서는 메쉬의 순서와 동일하다.

위에서부터
첫번째 Actor 인덱스, 두번째 Actor 인덱스, 부셔질지 말지를 설정, 첫번째 Actor 과 두번째 Actor 사이의 충돌여부 설정,
Joint 종류설정, 부셔지는 설정이 TRUE인 상태에서 부셔지기 위한 Force값,
부셔지는 설정이 TRUE인 상태에서 부셔지기 위한 Torque값.

                                   - Limit Plane : 관절의 회전을 제한하는 플랜. 설정된 플랜 이후로는 관절이 회전 할 수 없다.
                                                           Add 버튼을 통해 추가 가능하다.


            - Physic_Ragdoll : 헝겁인형과 같이 오브젝트를 특정 물리 Actor 와 Joint 를 통해 관절이 있는 인형과 같은 물리
                                          시뮬레이션을 하도록 설정 한다. 이러한 정보들은 모두 오브젝트에 귀속된다.
                                    - Ragdoll-Actor-Info : 물리 Actor 정보를 설정한다. Add 버튼을 통해 복수의 Actor 을 추가 하거나 
                                                                        제거 할 수 있다. 각 Actor 의 설정값들은 아래쪽에서 설명한다.
                                    - Ragdoll-Joint-Info : Ragdoll Actor 간에 관절정보를 설정하여 두 Actor 사이의 연결관계를 설정한다.
                                                                      방식은 PhysicJoint 에서의 설명과 동일하다. 물론 복수의 Joint 를 추가, 제거 가능
                                                                      하다.


             - 메쉬이름_Actor : 각 메쉬별로 하나의 Actor 을 설정 가능하다. Add 버튼을 통해 하나의 Rigid Actor 를 추가 가능하며,
                                              혹은 Cloth 버튼을 통해 천으로써의 설정도 가능하다. 물론 둘중 하나의 형태만 가능하며, 두개의
                                              물리 Actor 을 설정 할 수는 없다. 이 정보는 각 메쉬에 귀속된다.

※ Actor 설정과 Cloth 설정
tool-10.jpg

(8) Actor 이동과 Joint 이동
; 이 부분에 대한 설명이 가장 중요한 부분입니다. 하나의 Actor 에는 두개의 공간이 존재 합니다.
Shape 단계에서의 로컬의 중심공간과 Shape 를 포함하고 있는 Actor 의 오브젝트공간 이 두개의 공간이
존재하게 됩니다. 각 공간에 대한 설정은 edit mode 를 활성화 한후 (단축버튼 'E' 또는 팝업메뉴(P) 에서 Edit_Mode 선택)
좌측 창에서 shape 를 선택하시면 화살표 컨트롤이 나타나게 되고, 그 이후 move, rotate 모드를 통해
shape 의 로컬공간을 설정 할 수 있습니다. 일반적으로 shape 의 무게중심위치를 설정하시면 됩니다.
그리고 actor 의 오브젝트 공간 역시 edit mode 를 활성화 한 후, 좌측창에서 box01_actor 과같이 actor 항목을 선택하시면
화살표 컨트롤이 나타나게 됩니다. 그 이후 move 혹은 rotate 모드를 통해 오브젝트 공간을 설정하게 됩니다.
일반적으로는 오브젝트의 바닦 제일 아래 위치를 설정하게 됩니다. 예를들어 0,0,0 위치가 일반적인 위치 입니다.

shape 의 무게중심 공간설정
tool-12.jpg

actor 을 통한 오브젝트 공간
tool-13.jpg

Joint 를 통한 관절 이동
; Actor 이동과 같은 방식으로 edit mode 를 활성화 한후 조인트를 선택하면, 화살표 컨트롤이 나타난다. 그 이후
move, rotate 모드 를 통해 이동, 회전을 할 수 있다.
tool-14.jpg


(9) 최종적으로 Build 버튼을 눌러서 물리설정을 오브젝트에 등록 시킬 수 있다.
tool-11.jpg