본문 바로가기
프로젝트A

앨리스 모델링 #2

by IX. 2023/09/18 00:09:23

9.18

셰이더 정립을 해보자.

이걸 먼저 하는 이유는 셰이더에 따라 UV의 형태가 달라지기 때문이다.

원래는 명암경계를 얇은 2톤으로 하려고 했었으나, 임계점으로 짜르다 보니 2톤 사이의 두께가 균일하지 않은 문제가 있다. 이걸 머리싸매고 이틀간 고민해봤는데, 아...결국 해결하지 못했다.

예전 미호요의 기술문서 중에 원신의 셰이더가 이 얇기를 극복하기 위해서인지 경계명암을 부드럽게 하거나 칼처럼 보이는 기술을 선보인 적이 있었는데, 당시에는 뭘 그렇게까지 하나 싶었지만 이제는 왜 그랬는지 이해할 것 같다.

계속 테스트... 무엇이 맞는가.

결국은 돌고 돌아 기본이다.

툰렌더야 겉보기엔 거기서 거기인데 디테일한 부분에서 조금씩 차이가 있다.

테스트 사항 정리

  • 언랩은 윤곽선이 필요한 부분에 한해 박스로. 텍스처가 필요한 부분은 별 수 없이 기존대로 펴야 한다. 
  • 크리즈 라인을 고려한다면 크리즈가 필요한 소재에 한해 다 펴야 한다. 하지만 이것은 여전히 고민이 된다. 툰렌더에서 크리즈라인이 그럴만한 가치가 있는가?
  • 셰도우 맵은 버텍스 컬러 R채널을 쓴다. 하이라이트와 묶어서 회색(0.5)베이스로 위로가면 하이라이트, 아래로가면 셰도우로 표현한다. 
  • 맷캡은 G채널, 이미시브는 B채널을 쓴다.
  • 하지만 이렇게 되면 붉은 명암 마스크가 모자라다. 고민이 필요하다.
  • 노말맵은 사용하기 싫었으나 갑옷의 디테일을 위해 어쩔 수 없다. 셰이더를 분리해서 사용하기로 하자. 
  • 피부셰이더 또한 분리하자. 명암의 색깔과 부드럽게 퍼지는 하이라이트 등을 표현하기 좋다. 또한 엔진이라면 패스가 분리되기 때문에 페이크 SSS를 표현할 수도 있다. 
    • 버텍스 컬러의 R채널은 바디셰이더처럼 하이라이트/셰도우를 표현하고 G채널은 얇은 피부의 붉은 색조를 표현한다. 이렇게 되면 굳이 맵을 사용할 필요조차 없어진다.
  • 얼굴 셰이더는 피부와는 또 다르다. 맵이 필요하고, 기분 표현을 위한 얼굴의 음영등이 추가되어야 한다.
  • 윤곽선은 매우 얇게 표현할 예정이라 특별한 셰이더는 필요치 않다.

거의 있는둥 마는둥 한 윤곽선

9.19

계속 고민이다. 크리즈 라인을 긋자니 귀찮고, 안하자니 밋밋하고....

그럼 하는 것이 맞는데 어떻게 효율적으로 할 수 있을까.

폴리곤으로 떼워보자. 5만쯤 되니 이 정도 늘어나는 건 이제 티도 안난다♬

필요한 애드온 기능 :

  • 트랜스폼 정렬(...왜 이게 없어!?)
  • 로컬로 90도 돌리기
  • 아웃라인 메쉬 제거

오늘의 교훈 : 

크리즈를 만든 다음 라인을 만드는 게 좋다.

 

매핑 중

매핑 : 512x512

격자 : 32x32

찔끔찔끔

선굵기에 따른 느낌을 보자

크리즈 + 아웃라인 2배
아웃라인만 2배

9.20

애드온 기능 변경할 것:

  • 아웃라인 생성 기능을 지오메트리 노드로 처리. Shrink/Fatten(Alt+S)으로는 인스턴싱이 불가능한 문제가 있다. 
    • 아웃라인 생성을 위해선 머티리얼을 변경해야 하는데 인스턴싱된 메쉬는 머티리얼도 바뀐다. 지오메트리 노드까지는 따로 지정할 수는 있었다.

라인 생성 지침

  • 크리즈라인 : 0.001
  • 아웃라인(내부) : 0.001
  • 아웃라인(배면) : 0.0015

앨리스 신발 굽 높이 오프셋 : 2cm

앨리스 모델 스케일 : 1.0

 

갑옷의 문양은 도무지 폴리곤을 짤만한 각이 나오지 않아 별 수 없이 노말맵을 써야 한다.

일단 준비.

...그런데 노말맵 계산법을 모르겠다.

자료 뒤져봐야 하는데 시간이 없다! 오늘은 여기까지

9.21

메인라이트에서 떨어지는 노말을 계산하려면 그냥 Principle의 노말 항목에 노말맵을 넣으면 된다.

근디...그래도 뭔가 이상하다.

문제는 맷캡이다. 맷캡은 Normal을 View프로젝션해서 이것을 View벡터와 내적한다.

그러러면 노말맵이 계산된 노말이 필요하다. 그러려면 결국 노말맵의 탄젠트, 바이탄젠트, 노말을 행렬로 구해서 이를 노말맵과 곱해야 하는데, 야이... 블렌더는 행렬곱 노드가 없다.

수동으로 곱해준다(...)

이거 맞나? 싶어서 라이트 벡터와 내적 테스트. 제대로 넘어오는 것은 같다.

이제 맷캡을 해보자.

오.. 성공이다. 그런데 이게 좀... 미묘하게 한쪽으로 치우쳐져 있는데... 내가 뭘 잘못한 거지

비율이 생각보다 많이 안예쁘네?! 내일 다시 도전

 

---

 

블렌더에서 던져주는 버텍스 노말 노드의 맷캡은 잘나오는걸로 봐서 내가 어디선가 노말 계산을 잘못한 모양이다.

어차피 프리뷰니까 상관없다. 정확한 결과물은 유니티에서 만지기로 하자.

갑옷 앞부분에 보석을 박아넣고 나니 맷캡이 강/약 2개로 분화될 필요가 있어 보인다.

이제 본격적으로 셰이더를 만들어 보자.