본문 바로가기

PMX용 블렌더 튜토리얼

강체와 조인트 구성해서 내보내기 - 1

레퍼런스 - Pymeshio(변종) 다운로드 및 사용법 요약

튜토리얼 - 강체와 조인트 구성해서 내보내기 - 1

튜토리얼 - 강체와 조인트 구성해서 내보내기 - 2


강체와 조인트 정보를 블렌더에서 구성한 다음에 PMX로 내보내는 과정입니다.


총 2회로 나누었으며, 1회차는 우선 PMX에서 import해서 어떻게 데이터가 구성되어 있는지 확인하는 것을 해봅니다.

2회차는 물리연산이 적용될 본을 만들고 weight를 칠한다음, 조인트와 강체를 배치하고 내보내는 예시입니다.


▲ 아무것도 없는 PMXE에다가 시험삼아서 가장 간단한 본-강체-조인트 관계를 만들었습니다.



▲ 위에 나온대로 간단한 좌표 파라메터를 넣으면 이렇게 보일 것입니다.



▲ 일어, 영어 모델 이름을 입력해주고 블렌더에서 불러오기 위해서 저장합니다.



▲ import해보면 outliner에서 이러한 부모자식관계를 확인할 수 있습니다.



▲ 강체로 묘사된 개체를 찍어보면, 좌표와 회전, 크기 정보를 볼 수 있습니다.

pymeshio플러그인에서 export할 때, 읽어들이는 좌표 정보는 저렇게 세가지입니다.

블렌더와 PMX사이의 표현형태의 위화감이 없는 가장 적절한 메쉬의 크기는, dimension이 scale의 2배일 때 위화감이 없습니다.



▲ 3d view 표시 설정은 이렇게... 강체의 이름은 조인트에서 그대로 사용하기 때문에 상시 확인을 위해서 표시, 모델 메쉬를 투과해서 보여주게 하고, Maximum Draw Type을 Bounds로 한 다음에 Bounds의 값을 Sphere, Box, Cylinder 중 맞는 것 한 가지로 합니다.

Bounds 값에 따라서 export할 때의 모양이 결정되는건 아닙니다. 그냥 화면상의 표시만 그렇게 되는 것이고 이에 맞춰서 커스텀 속성(Custom Properties)의 rigid_shape_type값을 바꿔줘야 합니다.

Bounds로 표시하며, 내보내기를 할 때에도 메쉬의 형태는 아무런 상관이 없으므로, 3d view상에서 편의를 위해 dimension만 맞게 나오면 됩니다. 이에 가장 적합한 메쉬 형태는 상자이죠.

※여기서 메쉬(mesh) : edit mode에서 vertex와 face의 배치에 의해 나타나는 형상.

※Bounds : object mode에서 Maximum Draw Type이 Bounds일 때 보여지는 단순화된 형상.

상자 메쉬만 가지고 Bounds 값을 통해서 구와 실린더(블렌더에는 PMX같은 캡슐형태가 없음)를 표현하면 됩니다.



▲ 강체의 커스텀 속성(Custom Properties) 패널입니다. 이 패널은 상단의 탭 종류별로 다 있어요. Material에도 있고, Texture에도 있습니다. 하지만 강체와 조인트의 경우에는 반드시 Object에서 정의를 해줘야합니다.


만약 import해왔다면 바로 이러한 값들이 들어있는 것을 확인할 수 있습니다. 물론 새로만들어서 값을 수동으로 써넣어도 됩니다. 이때는 상자로 메쉬를 만들어주는걸 추천합니다. (1 scale일 때, 2 dimension)


강체의 형태는 rigid_shape_type값에 의해서 결정됩니다. 0이면 구, 1이면 상자, 2이면 캡슐입니다.

그래서 구 형태를 정의해주고 싶으면, 그냥 상자형태의 강체를 복사해온 다음에 rigid_shape_type을 0으로 지정하고 Display Bounds를 Sphere로 표시해주면 됩니다.

구의 경우에는 scale이 모두 동일하므로 scale값을 통일해줍니다.

캡슐 형태를 정의해주고 싶으면, rigid_shape_type을 2로 지정하고, Cylinder를 해주세요. 블렌더의 캡슐은 PMX와 그리는 방식이 다릅니다.

캡슐의 경우에는 scale의 z값이 길이 방향입니다. x,y는 동일하게 하면 됩니다.


애드온의 코드에서 rigid_shape_type이라는 값이 어떤 개체에 정의되어 있으면 그 개체의 메쉬데이터는 무시되고, 강체로써 받아들이게끔 되어있습니다.

레퍼런스 - Pymeshio(변종) 다운로드 및 사용법 요약

의 강체&조인트 지정 방법에 각 항목별로 간단한 설명이 정리되어있습니다.



▲ 조인트의 커스텀 속성 패널입니다. const_a값이 있으면 내보내기시 조인트로 인식됩니다.

조인트는 기준이 되는 축 방향을 정의해주기 위해서 회전값이 필요합니다. 그래서 위치와 회전 두 가지의 값만 읽어들여집니다. 메쉬모양, scale은 무시됩니다.

이것도 마찬가지로,

레퍼런스 - Pymeshio(변종) 다운로드 및 사용법 요약

의 강체&조인트 지정 방법에 각 항목별로 간단한 설명이 정리되어있습니다.

일반적으로 3축 좌표는 블렌더에서는 XYZ이지만 PMX로 내보낼 때, XZY로 순서가 바뀝니다. 그러나 조인트의 커스텀 좌표값은 순서가 바뀌지 않고 그대로 내보내기 하도록 되어있습니다. 즉, PMXE 기준으로 좌표순서를 넣으면 됩니다. max와 mix 역시 뒤집히지 않습니다.



1회차는 여기까지입니다.

튜토리얼 - 강체와 조인트 구성해서 내보내기 - 2