엔진 모핑

Skinned Character의 Morphing Facexml:namespace prefix = o ns = “urn:schemas-microsoft-com:office:office” /

Max의 표준 morpher 모디파이어를 사용해서 몰프 타깃을 셋업합니다. maxscript를 하나 생성해서 여기에 custom slider를 만들 수도 있습니다. Gamebryo는 몰핑을 완벽히 지원하지만 특별한 인터페이스는 갖고 있지 않습니다. 몰핑은 스키닝과 같이 표준 파이프라인을 통해 이루어집니다.

퍼포먼스 경고

skin 이나 physique modifier 위에 morpher modifier가 있으면 속도가 매우 느려집니다. 이는 모든 버텍스들이 파이프라인을 스킨 업데이트에 한 번, 몰프 업데이트에 한 번, 이렇게 두 번 거쳐야 하기 때문입니다.

Morph와 Skin을 함께 사용하는 올바른 방법

머리의 “얼굴 부분”은 별개의 메쉬로 분리시켜야 합니다. 머리(통) 메쉬는 스키닝된(skinned) 채로 두는데, 여기서 얼굴 메쉬를 두르고 있는 버텍스(얼굴메쉬랑 붙어 있는 부분의) 들의 가중치를 모두 머리 bone에 100%로 설정합니다(얼굴 버텍스들이 완전히 머리 bone과 함께 움직이도록).
얼굴 메쉬는 스키닝하지 않은 채로 직접 머리 bone에 연결해서, 이 얼굴 메쉬 또한 100% 머리 bone과 함께 움직이고 스키닝되지 않은 얼굴과 스키닝된 머리(통)의 seam이 서로 맞게 합니다. morpher 모디파이어는 얼굴 메쉬에만 적용하고 머리 메쉬에는 적용하지 않습니다. 이런 식으로 각 메쉬는 파이프라인을 한 번만 통과하게 됩니다.

머리와 얼굴 사이의 seam 다듬기

버텍스끼리 정렬된 두 개의 메쉬가 있을 경우, 각 메쉬의 가장자리에 있는 노멀이 서로 다르기 때문에 여전히 seam이 생깁니다. Gamebryo에는 이런 노멀을 다듬고 seam을 없애는 특별한 export plug-in이 있습니다. 익스포트 시 Process Script 편집 다이얼로그에서 프로세스 리스트에 “Unify Normals Plug-in v1.0"을 추가하세요. 플러그인이 이 작업을 인식하려면 머리 메쉬와 얼굴 메쉬의 User-defined properties에 “NiUnifyNormals” 이라는 태그를 달아야 합니다.

노멀 업데이트

max에서 Morph modifier를 지닌 오브젝트를 익스포트 하면, Gamebryo에서 이 오브젝트의 surface normal은 디폴트로 매 프레임 업데이트 되지 않습니다. 이는 대부분의 경우에선 효과적이라 할 수 있습니다. 노멀을 업데이트 해도 시각적인 차이가 별로 없으며 버텍스 당 노멀을 다시 계산하는 일은 비용이 많이 들기 때문입니다. 그러나 어떤 경우엔 Gamebryo가 매 프레임 surface normal을 다시 계산하길 바랄 수도 있습니다.

이 경우는 표면이 상당히 변형되는 경우로, 이럴 땐 오브젝트의 user-defined properties 에 문자열 ‘NiMorphUpdateNormals’을 추가해서 surface normal을 업데이트 시킬 수 있습니다. 이 방법은 빠르고 정확한 결과를 가져다 줄 것입니다.

Hugo로 만듦
JimmyStack 테마 사용 중