본문으로 바로가기
반응형

이번 튜토리얼은 UV 작업에 관한 것이다. 쉽게 생각해서 mesh 표면을 최대한 플랫하게 펴 놓는 작업을 말한다.(겉 껍데기를 펼쳐놓는다 생각하면 이해가 편할듯)[각주:1]

modifier menu에서 U키를 누르면 뜬다

모디파이어 메뉴에 Unwrap UVW를 선택하면 메뉴가 활성화 된다.(자주 쓰이는 키이기에 단축키 설명에서 이야기 했듯 U에 키를 매핑). 지겹도록 누르게 된다. 단축키를 지정해두자~!

언렙창이 활성화되면 아마 케릭터에 녹색줄이 보일것이고 Ctrl+E 키를 누르면 이렇게 언렙창이 뜨는걸 볼 수 있다(가끔 맥스 오류로 이창이 안 뜨는경우가 있는데 이럴때는 용쓰지 말고 맥스 초기화 하는 방법을 인터넷에서 찾아보면 있다. 초기화 실행후 단축키를 다시 불러오는걸 권장한다 -- 단축키 백업은 수시로 해둘것)

edit poly menu와 비슷하게 숫자 단축키를 눌러보면 1은 vertex, 2는 edge, 3은 face에 매핑된걸 확인할수 있다. 점, 선, 면 단위로 움직일수 있다.(모르면 눌러보자.. 이쯤되면 이정도야 쉽게 이해라리라 생각한다)
X축 가로 값은 U, Y축 세로값은 V에 대응된다. 맨 아래 U 0.0 V 0.0 같은 슬롯에 좌표값을 직접 넣어서 선택된 버텍스 포지션을 0~1사이의 값에 위치시킬수 있다.

기본적인것만 다루어 본다면
녹색선은 Seam이라 불리는 경계선이라 생각하면 된다. 무슨말인고 하니 이 녹색선을 경계로 맵핑에서 면이 잘린다.

좀 더 간단한 이해를 위해 BOX를 하나 불러서 언랩창을 켰다. 그리고 Mapping의 Flatten mapping을 누르면 저렇게 여섯개의 면으로 펼쳐준다. 맥스의 기본 알고리즘은 대략 90를 기준으로 seam을 잘라준다라고 생각하면 얼추 들어맞는다.
이럴경우 각각의 면마다 Seam이 잘리므로 매핑을 하면 텍스쳐가 끊어지기 때문에 맵핑 texture를 만들때 번거롭다(이걸 seam처리라고 보통 이야기 한다)

그래서 보통 저렇게 육면체를 종이접기 하듯 펼치도록 작업을 한다. 이렇게 하더라도 끊어지는 면이 보이기는 하지만 UV작업을 하게되면 어쩔수 없는 부분이다.(어거지로 이어 붙일려고 하면? 당연히 면이 찌그러진다.) UV 작업에서 이것만 기억하자.

1. 면을 최대한 이어 붙이는게 좋지만 UV에서 낭비되는 면적이 너무 크다면 떼낼수 있는건 떼어낼 필요는 있다. 하지만 seam 처리에 자신이 없다면 그냥 이어 붙이는걸 권장한다. 그리고 texture에서 재질이 달라지거나 선이 지는 부분을 잘라주는것도 하나의 요령이다.

2. 90도 단위로 꺾이는 면은 떼어도 크게 상관이 없다. 엣지 부분 처리는 매핑을 하다보면 요령도 생길테니(배경쪽에서 특히 중요하다). 하지만 텍스쳐가 이어진다면 seam이 두드러지게 보일수 있다. 이것 역시 선택의 문제. 보통 seam을 잘라내는 기준은 플레이어에게 잘 보이지 않는 면을 최대한 활용한다.

3. 맞닿는 엣지 면적이 큰쪽을 위주로 이어 붙인다.

앞의 정 육면체와 다르게 높이가 낮아짐으로 인해 세로선의 길이가 줄어들었다. 이럴경우 윗면에 맞닿는 네개의 면이 가지는 길이가 훨씬 크기 때문에 심을 세로면을 떼어주는 방향으로 UV를 펴줬다. 아랫면은 보통 쓰지 않지만 쓸경우가 있을때는 면을 만든다. 노출 빈도가 위가 크고 아래가 낮으니 아랫면의 seam을 떼어줬는데 이경우 다른 모서리 한쪽에 붙여서 펴줘도 괜찮다.

4. 직선면적이 큰 평면은 일그러질경우 보기가 나쁘지만 작은 면이 많은 폴리의 경우 부분적으로 찌그러질수도 있다. 이걸 활용하면 전체적으로 균등한 면을 seam을 적게 잘라낼수 있게 펼 수 있다

5. 언랩하기전 utilities 항목의 Reset Xform을 꼭 실행해주고 하길 권장한다. 실행하면 modifier창에 XForm이라 뜬다. 그걸 다시 editable poly를 눌러서 적용해주면 된다. 이걸 하는 이유는..

메쉬 내부의 각 버텍스의 좌표값은 이동, 회전, 크기를 적용해도 변경된 값 그대로를 가지는 것이 아닌 내부 좌표값을 가지고 있는 방식으로 연산이 된다(X축 값이 10이라면 10>>15로 이동시 15가 되는것이 아닌 10+5의 형태). 이 값을 지금 화면에 보이는 값에 대해 고정좌표로 고정시키는것이 이 Reset Xform이다. UV 좌표를 펼칠때 자동 명령(Flatten mapping이라던가 Unfold등)을 적용할때 원 좌표값을 기준으로 펼치기 때문에 발생하는 오류를 줄이기 위함이다(그래도 100% 정확하게 안 펴준다.. 어떤 툴도 100% 작업하기 좋으면서 보기도 좋게 완벽하게 펴주지는 않는다. plug-in이나 여타 툴로 작업을 편하게 할 수는 있어도 마지막에는 결국 직접 마무리 하는것이 가장 깔끔하고 이쁘게 UV 펴는 방법이다. 번거롭다고 귀찮다고 UV 작업 대충해서는 결코 좋은 작업을 만들수 없다. 손에 익숙해지면 나중에 좋은 툴을 사용해서 작업시간을 줄이는건 필요하지만 공부하는 단계에서는 UV작업은 직접 많이 해보기를 권장한다.)

하나만 기억하자 UV 작업은 노가다다.!!


6. 가급적 모든 메쉬의 면적은 균일하게 펴주는 쪽을 권장한다만 너무 작은 면적을 가지는 경우는 임의로 조금 키워주는건 좋다.

7. texture size 결정은 대한 부분은 아래 링크의 9 page 디스플레이 및 도트피치 항목 참고
http://www.slideshare.net/illustor/kgc2013-defense-technicaconverting-26684837


실무에서는 배경은 좀 작게 쓰는 경향이 있으며, 무조건 texture를 크게 작업하고 쓴다고 좋은거 아니다.(256쓸 텍스쳐 1024에 작업해봤자 시간대비 효율도 나쁘며 resizing에 따른 이미지 손실은 덤.. texture 작업 잘하면 resize해도 안깨진다고 하는데 contrast를 강하게 작업하면 그렇게 보이는것처럼 한데 퀄하고 아무 상관없다... 디지털 이미지 처리 알고리즘에 대해 찾아보면 나오니 궁금하면 검색~!)

대강의 개념은 이걸로 잡혔으리라 생각한다. UV에서도 면을 이어붙이고 떼는(Attach, Detach) 작업이 중요하고 반복되는데, 면을 이어붙이는 stitched 명령은 기본 단축키가 지정되어 있지 않다. 손에 익숙한 키를 매핑하고(많이 쓰게된다) detach 명령은 Ctrl+D 이다.

대게 stitch명령은 엣지 상태에서(바느질하는걸 연상해보자. 그래서 sewing이라고 한다.) 떼네는건 face상태에서 주로 하게 된다. stitch 명령을 주면 엣지에 어어지는 면이 알아서 붙게된다. 이렇게 면을 차례로 이어가면서(바느질하듯) 면을 붙여나가는데 face상태에서 이걸 하게되면 면이 이그러진다(엣지 기준이 아닌 face기준이니). 그래서 엣지상태에서 이을 엣지만 선택해서 하는것.

면이 균등하게 펴지지 않았을때는 Relax 아이콘을 한번 눌러주면 (이미지의 Reshape Elemnents 아래 번개무늬 아이콘) 적당히 조절이 되는데 특정 면의 경우 면이 일그러진다. 적당히 사용하는걸 권장.. 제일 좋은건 눈으로 직접 버텍스 당겨가면서 맞추는게 제일 좋다. 노가다....

1) 맨 처음 설명한 1,2,3에 매핑된 점, 선, 면. 하얀 박스에 작은 박스표시는 element와 비슷하게 생각하면 된다. seam에 이어진 모든 UV 영역을 선택. 그 옆은 grow, shirnk, ring, loop에 해당하는 역할을 한다.(기억안나면 지난번 포스팅 찾아보자)

그 옆 작은 빨간 삼각형은 선택된 UV만 보여준다(아이솔레이션이라 생각하면 된다)

2) Pack menu. 이걸 선택하는 이유는 UV창에 꽉 차게 알아서 펴주기 때문이다. 맥스가 버젼업되면서 가장 똑똑해진 기능. 단 면을 겹쳐서 쓴 경우에도 면을 분리시켜 버리기 때문에 겹쳐 펼친 경우가 많다면(작은 기둥같이 같은 UV를 쓰는 경우 일일이 다 매핑하는것이 아닌 겹쳐서 펴주는게 편하다) 해당 UV는 빼고 선택해주는게 좋다. 이후에 lightmapping UV 펼칠때 매우 유용하다.

그렇다고 알맞게 딱 펼쳐주는것이 아닌 버리는 면이 많이 나온다. 선택후 대강의 스케일을 맞췄다면 손으로 다시 배치하는걸 권장

3) UV창에 texture를 표시해준다. 맨위 checker pattern을 누르면 현재 면의 균일도를 확인할 수 있다.(해보면 쉽다. 그외에 material에서 checker를 적용하거나 texture를 쓰는등 방법은 많다. 필자의 경우 귀찮아서 그냥 UV창의 이걸 그냥 쓴다)

4) 스냅. UV창에도 스냅이 있다. 단축키 매핑이 안되어있는데 많이 쓰므로 알아서 매핑 하도록. grid snap의 경우 vertex에 딱 붙는데 pixel snap을 하면 안붙는다... UV해상도 설정과 관련되어 작동하는듯...

5) 오른쪽 창에 보면 display setting이 있다. Map seam이 녹색선이고 peel seams라는 메뉴는 파란색 선이다. 얘는 뭐하는거냐면 심을 정해서 잘라낼때 슨다.(pelt 기능과 물려서 사용. 이건 다음기회에 설명)

6) 일단 면을 펼치는건 U기준 V기준 W기준 그리고 sphere 등 옵션은 무지 많은데 결과값이 제대로 안나온다. 가운데 선택된 quick planer map의 경우 선택된 면을 알아서 펼쳐주는데 그나마 제일 많이 쓴다. 하나하나 면 펼칠때 사용

요약하면 reset X form >> UVWrap 켜고 >> Ctrl+E >> Mapping >> Flatten mapping >> stitch 하던 UV 정리 끗..

이긴 한데 케릭터의 경우 이렇게 손으로 이어 붙여도 되고

Peel 메뉴의 pelt를 활용하면 곡선면을 적당히 알아서 펴준다. 방법은 pelt 선택후 start pelt 쓰면 최대한 펼쳐준다. 그 후 Relax를 눌러 적당히 조절해준뒤 Commit 누르면 완료.

pelt는 약간의 요령이 필요한데 우선 seam을 어떻게 잘라주느냐에 따라서 결과물 퀄리티가 결정이 난다. 제대로 면이 안 펼쳐질 경우에는 pelt로 선택된 seam의 형태를 잘못 잡은거다. 둘째는 vertex숫자가 많아지면 좋은 결과물이 나오지 않는다. 로폴이 아닌 중폴 정도의 경우 이럴때 한번에 큰 면적을 다 펼치려 하지말고 잘라서 몇개를 이어 붙이는 쪽이 잘 나온다. 셋째, Relax를 너무 믿지 말고 일단 펼친이후 relax를 주지 않고 버텍스를 살짝 손으로 튜닝하던지 relax옆의 setting에서 옵션을 지정해 조금만 relax를 적용후 편집하는쪽이 잘 나온다.

대강의 UV 정리가 끝났으면 마우스 우클릭에서 render UVW template 를 누르면 렌더창이 뜬다. 거기서 해상도를 결정하고(512면 512, 1024면 1024.. 왜냐면 렌더에 따른 padding값 두께가 달라지기 때문) 렌더가 되면 저장.(jpg로 해도 되고 뭐 맘대로...)

이걸 포샵에서 불러와서

레이어 맨 상단에 올려두고 레이어 옵션을 screen으로 걸어두면 seam 만 표시된다. 그리고 열심히 매핑 하면 된다. 물론 매핑 다하고 레이어를 꺼주면 되고... 매핑 어떻게 하냐.. 포토샵 어떻게 쓰는지는 셀프.... 그걸 모른다면 맥스가 문제가 아니라 기초부터 다시 롤백~!.

UV 작업은 일을 해보면서 느끼는거지만 일단 많이 해보는것 말고는 답이 없다는거다. 이건 경험이 쌓이고 열심히 공부하면 자연스럽게 느는 영역이니 우선 많이 해보길 권장한다. 처음엔 많지 않은 폴리를 가지고 툴에 익숙해지고 그 이후에 점점 면이 많은걸 연습하는 방식으로..

  1. 3D vertex당 계산하는 UV좌표에 대한 값은 U와 V만을 사용하지만 Texture coordinate가 오브젝트에 적용되기전 행렬을 곱하여 일부 변형을 적용하여 변형하기 위해 사용한다. 이외에 특별한 경우(예 : shadow mapping)에 보통 주로 사용한다. 여기서는 이 부분에 대해 자세히 다루지 않는다.

    Before the texture coordinates are applied onto an object, they are multiplied by a texture matrix to apply some transformation to them (such as scaling, translation or rotation). This effect is sometimes animated in games to make it appear as though something is moving across an object without having to move the object itself... the texture is simply scrolling across it. When the texture matrix is multiplied by the texture coordinates, it produces 2 values that are used to look up the texel to plot (lets call them s and t). These are generated automatically from u and v even when the texture matrix is not set; it is the equivalent of multiplying u and v by an identity matrix.

    This is where the w coordinate comes in, though it isn't used that often. It is an extra parameter to multiply the texture matrix against and is usually used when you want to take perspective into account (such as in Shadow Mapping). It works the same as when you transform a location in object-space to screen-space via a world-view-projection matrix. By multiplying the UVW with a projection transform, you end up with 2 coordinates, the s and t which are then mapped onto a 2D texture.
    https://gamedev.stackexchange.com/questions/6911/what-exactly-is-uv-and-uvw-mapping 
    [본문으로]
반응형