2018년 10월 11일 목요일

[2013. 4. 11] DOF(Depth of Field) 의 거리를 뷰포트 상에서 시각적으로 컨트롤 할 수 있도록 만들기...

오래전에 어딘가에 올렸던 팁이라 제 홈에도 포스팅 해 놓았던줄 알았는데, 찾아보니 없길래 다시 한 번 다뤄봅니다...
 
Maya의 카메라 속성에서 DOF를 켜주면, DOF가 렌더링 시에 먹힙니다만...
초점거리를 맞추기가 애매할 경우가 많죠.
거리를 측정한 후에 그 값을 넣어주면 됩니다만, 애니메이션이 이뤄지는 상황이라면, 귀찮은 점이 많아집니다...
이를 위해서 Locator등을 하나 만들어 주고, 카메라와 이 Locator사이의 거리를 카메라 DOF 초점거리 값에 연결해 주므로써, 이 Locator를 뷰포트상에서 시각적으로 즉시 확인할 수 있는 초점위치로 만들어주는 방법입니다...
 
1) 카메라를 만들거나 이미 있는 카메라를 사용하려면 그대로 두면 되로요...

2) Locator를 하나 만들어줍니다.

3) DOF를 적용할 카메라를 선택하고, DOF를 활성화 시킵니다. 그리고 Focus Distance 의 체크박스를 클릭합니다.

4) Create Node Window에서 Utilities를 선택하고 "distanceBetween" 노드를 만듭니다.

5) Connection Editor 를 엽니다. (Window > General Editors > Connection Editor)

6) 카메라를 선택하고 Connection Editor에서 Reload Left를 클릭해서 로드합니다.

7) 이번에는 distanceBetween node를 선택해서 Connection Editor에서 Reload Right를 클릭합니다... (distanceBetween node는 Hypershade 창에서 Utilities tab에서 선택할 수 있습니다)
 
<Connection Editor에서 왼쪽에 카메라, 오른쪽에 distanceBetween node를 로드하는 것인데 From -> to 에 따라 왼쪽/오른쪽이 같더라도 적용하는 방향은 반대가 될 수 있다는 것을 잘 상기하시구요...

9) Connection Editor의 왼쪽 (Camera)의 속성리스트에서 translate를 선택합니다.

10) 이번엔 오른쪽(distanceBetween)의 point1을 선택합니다.

11) 이번엔 이전에 왼쪽에 카메라가 로드되어 있던 것을 바꾸어서, Locator를 선택한 다음 Connection Editor에서 Reload Left를 클릭해서 Locator를 왼쪽에 로드합니다.

12) 이번에는 왼쪽의 Locator속성중에서 translate를 선택하고 오른쪽의 distanceBetween 에서는 point2를 선택하면 완성됩니다...

 
 
전체적인 작업개념을 다시 짚어보겠습니다... (하는 방법보다는 개념을 이해하고 사용하는 것이 훨씬 중요하니까요... 이런 식으로 Maya에서 각종 노드들을 연결하고 사용하는 법을 이해하면, 정말 많은 방법과 기능들이 가능해집니다.)
DOF의 Focus Distance 에 distanceBetween 유틸리티노드를 연결해 주고, 이 두 지점 사이의 거리를 초점거리로 사용하는 것입니다...
그 두 지점의 첫번째 위치에 카메라의 위치를 적용하고, 두번째 위치는 Locator를 적용해 주면 카메라와 Locator 사이의 거리가 초점거리가 되는 것입니다...
이렇게 해서 Locator를 움직여서 초점거리를 시각적으로 보면서 컨트롤 할 수 있는 것입니다...
 

[2013. 3. 26] Maya 2014가 슬슬 드러나는 군요... (New features in Maya2014)

 
새로운 기능들에 대한 소개 영상이 있습니다.
 
(1) Next-Gen Viewport Display and Shading
주로 DX11을 이용한 Viewport 향상에 관한 것입니다.
 
(2) Accelerated Modeling Workflow
 dRaster 의 NEX toolset 에 기반한 새로운 모델링 툴들이 추가 되었습니다... 폴리곤 모델링이 정말 모델링이 좋아졌네요... 특히 Retopology같은 기능을 수행하기가 정말 편할 것 같습니다...
말이 필요없이 영상을 한 번 보세요...
 
(3) Scene Assembly Tools for Smarter Data
 복잡한고 많은 프로젝트를 협동작업 한다거나 하는 등의 경우에 대단히 유용하게 Dataset을 관리할 수 있는 툴입니다...
 
(4) Grease pencil
 이것은 앞서 한 번 포스팅한 적이 있기에 다시 설명하지 않겠습니다.
 
(5) New Paint Effects Surface and Volume Attributes
 오! 좋군요... 이제 Paint Effect로 생성한 오브젝트들이 마야 씬에 있는 다른 오브젝트들과 상호작용됩니다... 예를 들면 영상에서 보여주듯이 페인트이펙트 꽃이 하나 있다면, 충돌자로 설정한 오브젝트가 꽃을 향에 움직여 닿으면, 꽃이 이에 밀려서 움직인다는 것입니다... 시뮬레이션되는 것이죠... 또 페이트이펙트를 축쳐지게 한다거나 하는것도 가능해서(수치로 조정) 페인터블한 오브젝트에 덩굴이라거나 풀이 덮여있는 등의 표현도 쉽게 할 수 있습니다.
 
(6) Node Editor
 더 편해진 Node Editor 영상을 봐주세요...
 
 
 
 

[2013. 3. 21] Kinect 를 활용한 Facial Motion Capture with Faceshift and Project Pinocchio Character


마이크로 소프트가 게임용 동작인식 장치인 키넥트를 발매해 판매하는 것은 이미 알고 계실 것입니다.
이 키넥트는 닌텐도Wii와 비슷하지만, Wii가 컨트롤러를 인식하는 것에 비해 키넥트는 사람자체의 동작을 인식할 수 있다는 것이 큰 차이죠... 즉 개인용 모션캡쳐장비에 가깝습니다...
심지어 얼굴표정 변화도 감지할 수 있습니다.
다음 영상은 이를 이용해서 표정 애니메이션을 테스트한 것입니다.
얼굴만 했고, 몸은 전혀 캡쳐하지 않았다고 합니다.
그리고 캡쳐한 그대로를 반영한 것이라서 느낌은 불완전하고, 안정적이지는 못합니다만, 이를 잘 편집해서 애니메이션을 제작할 수 있는 가능성은 보입니다...
즉, 개인용 모션(표정)캡쳐 장비의 출현이 가능한 것이죠^^
 


작업 파이프라인은 키넥트와 FaceShift로 표정모션을 캡쳐한 것이구요.
캐릭터는 최근 AutoDesk가 추진하고 있는 피노키오 프로젝트(사람 캐릭터를 여러 옵션을 선택해 커스터마이징 한 후에 3D모델로 다운받아서 사용할 수 있는 라이브러리를 제공)에서 FBX파일로 다운받은 후에 역시 FBX포맷으로 FaceShift로 Import해서 모캡을 위한 타겟캐릭터로 사용한 것입니다.
모캡 데이터는 타겟에 레코드되고 적용되서 역시 FBX로 마야로 보내졌습니다.
머리, 눈 과 목만 적용되었고 몸은 적용되지 않아서 멈춰있죠.
 
Raw unedited facial motion capture from the Kinect + Faceshift. Character created with the Autodesk Project Pinocchio site and downloaded as FBX. The character FBX was imported into Faceshift as a Target character for mocap. Blendshapes remapped to the Faceshift standard morph targets. Mocap was recorded and applied to the Target and then exported as FBX into Maya. Left only the head and eyes and neck animated. NO animation on the rest of the body.
 
 https://youtu.be/HpH3fA29U1I


다음은 모션 캡쳐에 관한 것이구요...
 iPi soft(아이파이)를 사용하네요...
 이것도 싼 소프트는 아닌데 ^^;
 다만 iPi recording 소프트웨어는 프리이긴합니다... 이걸로 캡쳐받은 후에 FBX로 Export할 수 있는지는 모르겠습니다. 이렇게 되면, 다른 3D툴에서 보정하면 되긴 하는데 말이죠.
 그런데 이 iPi soft가 편집, 보정은 대단히 편리하네요...
 우선 캡쳐레코딩을 하고 실시간으로 모션보정을 하는데, 아마도 Retarget 방식으로 Retargeted 캐릭터를 유저가 보정하는 위치,회전에 따라 전체적인 프레임을 아주 빠르게 실시간으로 매우 그럴싸하게 보정하는 것으로 보입니다... 
 시연자도 정확한 설명은 없어서요... 
 이분이 이 소프트를 개발한 분은 아니고, 모션캡쳐 데이터를 값싸게 팔고 있네요... 그러한 홍보차원의 영상이라서요... 
 마지막으로 영상에서도 얘기하고 있지만, 집에서 사다리 올라가서 모션하고 하는거 따라하지 마세요! 위험합니다... 이분 시연자는 트레인된 숙련자입니다 ^^ㅎㅎㅎ 
 
 

[2013. 3. 19 개인작업] 적 캐릭터 for iOS game (Unity)

우선 작업 흐름은
아래 미이라관을 만들 때와 같습니다...
1. Base model (기본적으로 Free 모델을 쉽게 구할 수 있으므로 low poly human male base model을 구했습니다만, Maya에서 만들 수도 있겠죠.)
 
2. ZBrush에서 base model을 UV마스터로 UV를 잘 생성해 주고 Divide를 7단까지 했습니다.
iOS 게임용도의 캐릭터라 실제 최종적으로는 퀄리티가 많이 떨어지게 되어 있지만, Normal Map으로 더 중요하게는 color map에 묻어나올 것이기에 꽤 큰 레벨을 주었습니다.
 
3. Sculpting 을 Division단계를 오가면서 브러쉬를 바꿔가며 작업해 주었습니다
 
4. Texturing은 SpotLight로 작업했습니다.
스팟라이트로 컬러링하고서 그에 맞추어서 디테일 Sculpting을 해주기도 했습니다...
 
5. MatCap Baker로 Color map에 디테일이 묻어나오도록 작업해서 Texture를 생성했습니다. (이에 따라 Displacement 과정은 자동적으로 수행해야 하죠)


Maya에서는 어차피 HIK로 Skeleton 과 Rigging을 하고 Skinning도 해야 하기에 한 번 올려보았습니다.
 
 
<Unity용 Color Texture 와 Normal Map>


[2013. 3. 13 개인작업] iOS Game용 적 캐릭터 WIP, 아래 미이라와 같은 방식으로 만들어 졌습니다




팔, 몸, 다리 등 Sculpting은 대략완성되어 있긴한데 텍스쳐를 줄 차례네요...^^
어차피 모바일게임용으로 폰이나 iPad 등의 모바일화면에선 퀄리티가 많이 떨어져 버릴거라 간단하게 작업하고 있는 중이긴 하지만, 그래도 어느정도의 Zbrush퀄리티는 모바일 화면에서도 간접적으로나마 드러나긴 하기에 적절하게 디테일을 살릴 필요가 있습니다.
 
완성되면, LowPoly 모델은 Maya로 보내서 HIK 입히고, 키프레임 애니메이션을 주고, Color texture와 Normal map은 Unity로 보내서 Material 만들어 이후에 FBX파일로서 Maya로 부터 Import된 애니메이션 목록들까지 완성된 캐릭터에 연결해주게 됩니다.
그 후에는 Unity에서 필요한 Script 작성해서 부여하고, 기획에 따라 게임을 개발해 가면 되죠 ^^
 

[2013. 2. 26] HumanIK Illustrated... HumanIK의 기본적인 기능이해를 돕는 영상...

2012년 5월에 youtube 올라온 영상이군요... 
이것은 게임쪽과 연관된 HumanIK이긴 합니다만... 일단 Maya 쪽에 포스팅합니다.
Maya에서 HumanIK툴을 찾아볼 수 있지만, 이것은 마야의 캐릭터 리그 셋업을 돕고 애니메이팅을 쉽게 하기위한 툴만은 아닙니다... HumanIK는 Maya뿐만 아니라, MotionBuilder 그리고 Autodesk의 Gameware중에 HumanIK 등...
 
HumanIK는 어찌보면, 기본적으로는 게임쪽에서 프로그래머와 애니매이터사이에 이러한 2족 캐릭터 Rig표준을 제시해서 애니메이터로서 CG패키지에서 애니메이션을 제작, 수정(모션캡쳐를 포합해서)하기가 쉬우면서도 이것이 C++ 같은 프로그래밍과 게임엔진에서 연계되어 다루어질 수 있는 Compatibility를 제공하기도 하는 것입니다.
 
이 영상에선 두가지 주요한 기능을 이야기 하고 있는데요...
하나는 Fullbody IK 이고, 다른 하나는 Retargeting입니다.
영상은 Fullbody IK를 먼저 다루고 있지만, 간단히 Retargeting을 얘기해보자면, 서로 스켈레튼 구조는 거의 비슷하나 비율이 상당히 다른 캐릭터 사이의 애니메이션키가 서로 전환될 수 있도록하는 기능입니다.
기본적인 비율의 사람을 이용한 모션캡쳐 데이터가 기괴한 비율을 가진 생물체, 드워프, 호빗 같은 다른 비율의 캐릭터에게도 그대로 정확히 전달되어 매우 자연스러운 동작을 만들어낼 수 있는 것도 이 기능으로 인한 것이죠.
 
사실 중요한 것은 Fullbody IK인데, 이것은 대단히 흥미롭습니다.
기본적으로 FK 키프레임애니로 캐릭터를 구현시키면서도 특정순간, 특정위치 등에서 특정부위 (손목, 발목, 머리 등 IK컨트롤러가 있는) 를 구속시켜 IK를 따르게 만들 수 있는 것인데, 즉 게임에서는 게이머나 컨트롤이나 상황에 따라서, 실시간으로 구현될 수 있는 것이죠.
이정도는 Maya에서 그저 FK/IK전환과 비슷하다고 할 수도 있습니다... 사실은 FullBody IK가 게임기술을 크게 진보시켰다고도 볼 수 있는데요.
IK컨트롤에 따라 적절하게 몸 전체적으로 움직임이 영향받는 것입니다... 영상을 보시면 알 수 있고, Maya에서 Fullbody 옵션켜고 한 번 움직여 보면 쉽게 이해할 수 있습니다.(어떻게 하는지는 아래 포스트들을 보시고 해보시고 여기서 다시 설명하진 않습니다.)
이 기능은 이 자체로도 용도가 많지만, 게임에서는 획기적으로 이용할 수 있습니다.
영상에서 어쎄신 크리드를 예로 보여주는 장면이 있습니다... 실제로 게임을 해보면, 정말 자연스럽게 플레이어가 컨트롤하는 캐릭터가 잡을 수 있는 것을 정확히 잡고, 짚을 수 있는 것은 짚고 올라서는 등. 게임환경과 캐릭터가 정말 정교하게 맞물려있습니다...
 
만일 이 Fullbody IK가 없다면 이를 어떻게 구현할까요? 단순히 애니메이션 모션만 입혀놓은 캐릭터를 가지고 이렇게 복잡한 게임속에서 컨트롤을 하다보면, 허공을 짚고 올라가기도 하고(물론 어느정도는 그럴 듯하게 보이도록 만들 수는 있습니다. 과거에 게임들은 그렇게 만들었구요) 어색해 보일 수 밖에 없습니다...
이 기능 이전의 과거의 게임들 중에는 제가 지금 기억나는 것은 바이오해저드 같은 경우인데, 캐릭터가 현장에서 어떤 핸들을 돌리는 이벤트같은 것이 있으면, 캐릭터가 손을 뻗어 그 핸들을 잡고 돌린다는 애니메이션은 있지만, 이게 캐릭터가 그 핸들에 다가간 위치에 따라서 핸들이 아닌 허공을 잡고 돌리는 상황이 나올 수밖에 없죠...
 어떤 게임은 그냥 이런정도 대로 두기도 하고,  어떤 게임은 캐릭터가 핸들을 잡을 수 있도록 특정위치와 방향으로 강제로 보내는데 이것도 좀 괜찮은 게임은 자연스럽게 그 위치로 걸어가서 그 방향으로 돌아서는 동작을 강제로 넣지만, 좀 부족하게 만든 게임의 경우는 그냥 갑자기 캐릭터가 튕기듯이 순간이동시켜 놓는 경우도 많았습니다... 물론 해당위치에 최대한 가깝게 도착했을 때, 이벤트가 실행되도록 해놨기 때문에 순간이동하는 느낌은 아니고, 캐릭터의 동작이 갑자기 튀는 느낌이죠...
 
그러나 영상이 보여주듯이 이렇게 동작이 부드럽고, 실제처럼 맞아떨어지게 만들기는 거의 불가능합니다...
 
또한 MotionBuilder에 관한 얘기가 나오는데, 이것은 Motionbuilder가 C++를 이용해서 실제 게임엔진에서 runtime되어 작동할 때, 디버깅하기도 하고, 세팅작업을 해야 할 것 등을 매우 유용하게 해줄 수있다는 것입니다... 이럴려고 개발된 툴이니만큼 강력하죠...
 
마지막으로 실제 사용된 예를 보여주는데, 니드포스피드 같은 경우도 캐릭터 끼리의 격투장면에서 이렇게 서로 잡고, 때리고, 맞는 포인트가 합이 딱딱 맞도록 Fullbody IK의 효과적인 사용을 잘 보여줍니다... 그 뒤의 다른 예도 마찬가지구요.
 
마지막의 글들은 구체적으로 어떤 경우 HumanIK가 유용한가를 써넣은 것입니다.
 
1. 메모리공간을 줄이기위해, 캐릭터들 사이에 애니메이션 데이터를 공유시킬 수 있다. (Retargeting)
2. 캐릭터의 두 발을 정확히 땅에 붙여놓을 필요가 있을 때. (Floor Contact) (이건 계단이나 바위투성이의 길을 오른다거나 할 때를 생각하면 되겠죠.)
3. 프로그래머가 요구하는 바를 애니메이터에게 정확히 이해시킬 필요가 있을 때, (그 반대의 경우도 마찬가지) (Motion builder interop') (직관적으로 모션빌더같은 툴상에서 구현해 보여주면 되니까요)
4. 캐릭터가 손으로 어떤 물체들을 정확히 잡을 수 있도록 만들 필요가 있을 때.(바닥에 떨어진 어떤 물체나 자동차핸들 등...) (BodyPart IK 나 FullBody IK)
5. 캐릭터가 그 3D 주변환경(기어오르기, 매달리기 등등)과 강력하게 상호작용할 필요가 있을 때. (BodyPart IK 나 FullBody IK)
6. 캐릭터들 끼리 강력하게 서로 상호작용할 필요가 있을 때(붙어 서로 싸우기, 펀치, 발차기)(BodyPart IK 나 FullBody IK)
7. 쉽게 통합되고 이해할 수 있는 IK솔루션이 필요할 때. (하나의 lib(정적 라이브러리 파일), 5개 헤더파일, 10개 함수들 : 프로그래밍시 쉽게 배워 사용할 수 있음을 예시하기 위한 것)
8. 멀티플랫폼을 위한 IK솔루션이 필요할 때 (Xbox360, PS3, Wii, iOS, Linux, Windows)



[2013. 2. 22] 미이라 관을 만들어 봤습니다. (iOS용 게임으로 쓰기 위한 용도)


개인적으로 Unity를 이용해서 iOS / Android 등의 모바일게임을 개발하는 중인데요... 게임중에 미이라관이 등장하기에 ZBrush를 이용해 제작해 봤습니다. (Maya도 약간 사용했습니다)
 
우선 대다수의 분들이 이렇게 시작하시겠지만, 미이라 관 이라는 컨셉트가 정해졌으면, 참고자료, 이미지들을 많이 찾으실 겁니다... 저도 그렇게 시작했고, Google이미지에서 좋은 참고 이미지(맵소스로 까지 활용 가능한...)를 얻었습니다.

 그 중에서도 좌측의 이미지가 마음에 들었습니다.
 우선 게임에 필요한 미이라관의 모델이 거의 고정된 시점으로 정면이 필요했던   점과 부합되었고, 깔끔하게 촬영된 사진이어서 맵소스로 활용하기가 아주 유용할 것이라는 판단에서 였습니다...
 물론 맵소스의 해상도가 크지 않다는 점이 있기는 했지만, 첫째로 모바일게임용이어서 그렇게 큰 퀄리티를 요구하지 않는다는 점이 있었고요. 맵소스로서 전체적인 컬러 텍스쳐만 잡을 수 있어도, 실제 디테일한 것은 직접 coloring해서 추가할 수 있으니까요...
 다음 단계로는 모델링을 시작해야겠죠. ^^
 Zbrush에서 모델링을 시작하기 전에, 이번 작업은 ImagePlane을 써서 Zbrush View내에 이 참고 이미지를 뒤로 깔아놓고 모델링 작업을 진행하기로 결정했습니다...
 
 
 
 
 
 
 
위 이미지의 가로, 세로 비율에 맞춰서 Maya같은 3D툴에서 plane을 만들었습니다.

 
그런데 UV를 위의 이미지에서 볼 수 있듯이 텍스쳐를 모두 감싸도록 UV Texture Editor에서 다 채워주어야 겠죠.
다음은 obj 파일로 export해서 Zbrush에서 불렀습니다.
GoZ같은 간단한 툴을 사용하지 않은 이유는 plane은 단지 하나의 face에 불과해서 볼륨이 아니다보니 Goz로 보냈을 때, 에러가 나더군요... 어떤 옵션이나 처리를 하면 가능한지는 모르겠습니다만, 어차피 obj 형식을 이용하면 잘 되니까요.
 
Zbrush에서 ImagePlane은 subtool에서 import하고, Sphere3D는 subtool에서 Append해서 아래 이미지 처럼 되었습니다.


 
Subtool에서 ImagePlane을 선택하고, 여기에 위 참고이미지를 import해 Texture로 씌워주는데 그렇게 하면 Zbrush의 특성상 위아래로 반대로 보여지게됩니다.
 
 
Texture > 에서 해당 이미지를 다시 import하고 선택한 다음 Texture > Flip V 를 적용해 놓은 후에 다시 Tool > Texture Map 에서 선택해 주면, 올바르게 됩니다.
 
다음은 subtool에서 다시 Sphere를 선택하고서,
Sphere의 꼭지 부분이 위 아래로 향하는 편이 모델리에 도움이 되기에 Tool > Deformation 탭에서 Rotate를 x축으로 90도 돌려서 맞추었습니다.
그러면 이제 Zbrush에서 본격적인 Sculpting을 시작할 수 있게 되었는데, Dynamesh를 사용하는 편이 쉬울 것 같다는 판단으로 Dynamesh로 전환해서 Sculpting을 시작했습니다...
(Sculpting을 시작하기 전에 작업의 시작부터 마지막까지 전체적인 프로세스와 다른 툴과의 파이프라인까지 잘 고려하고 시작하지 않으면 중간에 낭패를 볼 수 있습니다.
저도 시작 전부터 전체적인 파이프라인을 잠깐이나마 생각해보고나서, 어떻게 진행할 것인지 일일히 정한 후에 일을 진행한 것이었습니다.)
사실 이번 모델의 경우는 특별히 Dynamesh를 사용할 이유는 없었습니다. Dynamesh는 예를 들면 사람을 Sculpting하는 경우 처럼 Sphere와 비교해서는 머리, 팔, 다리가 구체로 부터 뽑혀져 나와야 하는 형체인 경우 일반 sculpting을 사용할 땐 뽑아져나온 부분은 폴리곤이 쭉~ 늘어져 버려서 Stretch되어 버리는 문제가 생기는데, Dynamesh를 사용하면, Refresh할 때, 메쉬 전체의 폴리곤이 그 볼륨, 형태를 고려해서 자동으로 잘 배분되어지기 때문에 대단한 유연성과 유용성을 가질 수 있습니다.
이 경우는 구체가 위아래로 전체적으로 길어지는 정도이기에 Dynamesh의 유용성은 크지 않은 편입니다.
 
어쨌든 저의 전체적인 작업 프로세스는
 
앞서 준비한 것 이후에
-> Dynamesh 로 Sculpting
 
-> 게임용의 low poly를 사용하면서도 (LowPoly-HighPoly) Normal map 을 뽑아내고, 또한 Displacement map을 뽑아 이를 텍스쳐맵에 녹여나도록 BakerMap을 사용할 것이어서, Zbrush-Maya-(DX11의 Tessellation도 포함) 등등에서 필요로하는 사각폴리곤(SubDivision Surface전환이 가능한 Topolopy의...) 이 요구됩니다... 최신의 Zbrush에서는 QRemesher 가 이 기능을 대단히 잘 수행해 주기 때문에 앞서 Dynamesh를 쓰더라도 마음놓고 작업할 수 있습니다. 참고로 Dynamesh는 Scupting에 엄청나게 유연하지만, Maya 등 다른 툴에서 normal map/displacement map 등 특히나 Tessellation이 요구 될 때, Topology의 차이로 인해 문제가 될 수 있습니다. 그렇게 QRemesher를 적용해 원하는 Topology의 lowpoly 모델을 얻어내고 -> 필요한 만큼 Divide를 수행하여(여기서는 6단계) HighPoly 작업까지 수행했습니다.
 
-> 다음은 UV작업인데, LowPoly에서 했어야 하는데, 이미 Divide를 수행한 다음에 UV작업을 하게 됐습니다. 최신의 Zbrush에서는 이러한 작업이 가능합니다. Tool > Geometry > Freeze SubDivision Levels 기능이 생겼기 때문이죠... UV작업에는 ZPlugin > UV Master를 사용했습니다. 우선 Tool > Geometry > 에서 가장 lowpoly로 내려놓고 Freeze SubDivision Levels를 켰습니다. 이러면 UV master작업이 가능해 집니다.
 
-> UV를 Copy / Paste 해서 작업을 마친 후에 Freeze SubDivision Levels를 다시 끄고, 필요한 HighPoly로 옮겨가면서 디테일 Sculpting작업을 합니다.
 
-> 좋은 참고이미지를 가지고 있으므로, PolyPaint를 켜고, SpotLight 기능을 이용해서 텍스쳐링을 수행합니다. Tool > Texture Map > Create > New From Polypaint 를 해서 텍스쳐를 만들어놓습니다.
 
-> 가장 낮은 LowPoly로 옮겨놓고서, Displacement Map / Normal Map 등을 생성합니다.
 
-> DisplacementMap과 재질이 모두 담긴 Texture를 뽑아내기 위해서 Matcap Baker(무료 Plugin)을 사용했습니다. 재질은 Material > SketchToyPlastic 이 좋아서 이것을 사용했습니다.
 
-> GoZ로 Maya로 보내고, 여기서 LowPoly model 을 Joint를 입히던지 그냥 사용하던지 필요에 따라서 작업하고, FBX파일로 Unity로 보내서 게임에 사용하게 됩니다.
Maya에서 필요에 따라 Rendering > Lighting/Shading > BatchBake(MentalRay)ㅁ 를 사용해서 Occlusion map을 만든다거나 멘탈레이 GI/FG , HDR 등등이 적용된 텍스쳐를 생성해 낼 수도 있습니다.
 
이상이 전반적인 작업 프로세스입니다.
이제 좀 더 자세히, 하나씩 살펴보겠습니다...
 
Dynamesh로 전환은 Resolution을 32로 했습니다. 작은 편이긴하나 미이라관의 형태가 복잡한 것이 아니기에 시작으로 전체적인 형태를 잡는데에는 그리고 Topology 형태를 잡아내는 데에는 적당합니다.
 
그리고나서 Tool > Geometry > qRemesher 를 사용해서 필요한 Topology mesh로 전환했는데, 역시 복잡한 형태가 아니기에 Dynamesh 그대로인 상태에서 AutoMask를 켜고 Same 을켜서 기존 Dynamesh와 같은 수의 polygon count를 유지하도록 했습니다. 필요에 따라 옵션을 잘 조절해서 전체적인 폴리곤 수는 늘이고 줄이고 가능합니다. 이제 QRemesher 버튼을 클릭해서 사각폴리곤으로 전환합니다.


 
이런식으로 됩니다.
 
사실 이 단계에서 ZPlugin > UV Master 를 사용해서 UV를 생성하는게 맞습니다...
그렇지 않고, Divide를 이미 실행하고서, Sculpting작업 및 PolyPaint를 켜고 Coloring(Texturing) 작업까지도 이미 수행했을 때는, 앞서 말한 Freeze SubDivision Levels 를 켜고(가장 낮은 Level에서) UV Master작업을 합니다.
또다른 방법은 WorkOnClone으로 복사모델을 만들어 그 UV를 작업하고 Copy / Paste를 이용해서 UV를 작업모델로 복사해 오는 방법을 쓸 수도 있습니다.
Protect를 전체적으로 칠해주고, Attract 를 모델의 등쪽에 수직으로 그어놓고 UV를 생성합니다.



 
이제 UV Master 탭안에서 Copy UVs 를 클릭해서 메모리로 UV를 복사해 둡니다. (물론 그전에 UnFlatten은 해야겠죠^^)
다시 Tool 에서 UV작업을 위해 복사한 모델이 아닌 기존의 모델을 선택합니다.
그리고 ZPlugin > UV Master 탭에서 Paste UVs를 이용 작업하는 기존 모델로 UV들을 붙여넣으면 UV작업이 완성됩니다...
Freeze SubDivision Levels 를 켰으면 이제 끄고 작업하면 됩니다.
SDiv를 올려서 필요에 따라 올리고 내리면서 Sculpting을 수행합니다.
 

 
대략 빠르게 위 이미지 정도로 제작을 했습니다.
크게 디테일할 필요도 없었고, 게임상에서 그런 디테일이 드러나지도 않을 것이기에 이 정도만 하면 충분했습니다. 또 텍스쳐가 잘 입혀지는 것이 더 중요하고요...
 
다음은 텍스쳐를 SpotLight기능을 사용해서 입혔습니다... 측면부분도 정면의 이미지만 있지만, 정면의 이미지를 칠하고 남은 부분에 잘 연결되게 맞춰서 칠해주었습니다.



당연하지만, SpotLight로 Coloring할 때는 RGB(또는 필요에 따라MRGB)만 켜고, ZAdd/ZSub는 꺼야겠죠.
 
이제는 이 PolyColor를 텍스쳐로 전환합니다.
기왕이면 최대 SubDivision Level에서 Tool > Texture Map > Create > New From Polypaint 를 사용합니다.
다음은 최하레벨로 내리고, NormalMap을 생성합니다.
 
여기서 Tool을 저장을 해 두는 것이 좋습니다.
MatCap Baker는 모델 자체를 바꿔버리기 때문이죠.
이제 MatCap Baker로 재질, 디스플레이스먼트맵이 적용된 텍스쳐를 생성합니다.
이것은 Plugin으로 pixologic 에서 다운 받을 수 있습니다.
아래는 MatCap Baker를 사용해서 Texture를 생성해낸 이미지입니다.


 
MatCap Baker를 사용할 때는 주의해야 할 점이 있습니다.
실행하고 난 이후에 Frame / Move / Scale / Rotate 등 카메라를 움직이면 안된다는 것입니다. 사실 이 기능은 모델을 UV를 따라 Flatten 한 것으로서 UV Map에 딱 맞춰줘 있는 것이기 때문이죠... Canvas를 움직이는 Scroll / Zoom 을 사용하면 됩니다...
이제 이 Document를 Export 하면 Texture가 만들어 지겠죠.
또는 BPR렌더를 사용해서 뽑아낼 수도 있을 거구요.
 
이제 앞서 저장한 Tool을 다시 불러와서 GoZ 나 Export를 사용해 Maya로 보냅니다.
다음은 Maya에서 본 화면입니다. (ViewPort 2.0)


 
이렇게 대략적으로 알아봤습니다.
실제로는 Unity의 Shader에 알맞게 부가적인 작업이 필요할 수도 있습니다만...
지브러쉬의 작업은 모두 마쳤다고 볼 수 있겠습니다.
 
참고로 모바일 게임용 작업이라고는 하나 작업 파이프라인과 프로세스는 애니메이션, 영화용 작업도 거의 마찬가지로 볼 수 있습니다.
다만 여기에서 더 나아가 이들을 이용 더 다양한 맵소스를 만들어내기도 합니다만 (즉, 스페큘러맵, SSS용 맵이라거나 Ambient Occlusion 맵 등등) 
그리고 마야 같은 툴에서 퀄리티 향상을 위한 더 많은 작업을 하게 되겠지만요. Pass렌더링 등...