마야에서 Alpha Cards를 이용한 헤어 만들기와 팁
헤어는 시뮬레이션으로 만드는 경우가 많죠. 하지만 실시간 연동이 필요한 게임엔진에서 시뮬레이션을 돌릴 수는 없습니다. 따라서 게임엔진에 쓰이는 캐릭터들의 헤어는 메모리 사용이 적은 폴리곤 카드로 만듭니다. 아직 작성이 끝나지 않은 글이지만, 도움이 되는 부분들을 최대한 빠르게 공유드리고자 올립니다. 추후에 변경될 수 있습니다.
Step 1. Viewport Setting
Viewport에서 머리카락 이미지를 보기 위해서
Viewport 메뉴바에서 Renderer > Viewport 2.0 선택
Transparency Algorithm > Alpha Cut
Tip 1. Viewport에서 카메라가 멀어지면서 텍스처가 잘 안 보일 경우, Opacity Map의 Color Balance > Exposure 값을 높이면 선명하게 잘 보입니다.
Tip 2. Deformer를 사용해서 헤어카드를 구부릴경우, 노멀값이 변형되어 Surface의 뒷면이 어둡게 렌더링되는 문제가 발생할 수 있습니다. 이 때는 문제가 되는 헤어카드를 선택하신 뒤 Mesh Display > Set to Face (Set Surface Normals to Face Normals) > Conform (Recalculate Normals) 하시면 해결됩니다.
Tip 3. 블렌더는 폴리곤 카드를 커브로 변형시킬 수 있는 기능이 있는데, 마야에는 Wire Deformer가 있습니다. 하지만 Wire Deformer를 사용할 때 먼저 Mesh를 선택하고 Enter, 그 다음에 사용할 Curve를 선택하고 Enter 키를 누르는 과정이 번거롭습니다.
제가 만든 E2Wire (Edge to Wire)라는 Mel Script를 사용하면 이 과정을 생략할 수 있습니다.
1) 먼저 Hair Mesh의 중심 축이 되는 Edge Loop를 선택합니다.
2) Script를 적용하면 한 번에 Wire Deformer 효과가 적용됩니다.
아래 스크립트를 복사해서 Shelf에 넣어두거나 단축키로 쓰시면 됩니다.
/***
Script Name: Edge to Wire (E2Wire)
Author: Wonbeen Kim
Date: 11.03.2024
How to Use
1. Select the polygon edges to convert into a wire.
2. Execute this script.
***/
string $hairmeshArr[] = `ls-sl-o`;
string $hairmesh = $hairmeshArr[0];
polyToCurve -form 2 -degree 1 -conformToSmoothMeshPreview 1;
rebuildCurve -ch 1 -rpo 1 -rt 0 -end 1 -kr 0 -kcp 0 -kep 1 -kt 0 -s 3 -d 3 -tol 0.01 `ls-sl`;
DeleteHistory;
FreezeTransformations;
wire -gw false -en 1.000000 -ce 0.000000 -li 0.000000 -dds 0 100000 -w `ls-sl` $hairmesh;
생각해보니 Wire Deformer보다는 Skeleton으로 모양 잡는 게 더 편할 것 같습니다. 빠른 시일 내로 Skeleton를 적용한 스크립트도 올려보도록 하겠습니다.