본문 바로가기
툰렌더링 공부

셰이더 연구 #3

by IX. 2022. 4. 14.

4.14

철을 구현할 차례.

MatCap은 말만 많이 들었지, 실제로 써본 적은 없는데...

에..? 정말 이게 끝?

뭐 한게 없는디...

그러니까... 노말값을 UV로 이용한다는 원리다. 이야...어떻게 이런 발상을 하지...? 

명암과 스펙이 어우러져서 좀 난잡해 보인다만, 가성비 최고.

 

다시 등장한 맷캡. 유리 재질에도 효과만점

하지만 맷캡의 최대단점. 평면에선 적용하지 못한다.

큐브맵이 등장할 차례

...일 줄 알았는데 쩜백이 맷캡구울 때 N대신 R을 쓰면 큐브맵 대용으로 쓸 수 있다고 한다.

오...그르네?! 플랫한 유리에선 이걸 쓰면 되겠구나. 어차피 정확하지 않아도 되니까. 

근데 모양이 어째 그냥 V와 비슷하다. 어차피 정확하지 못할꺼, 그냥 V써도 되잖을까? 연산을 좀 더 줄일 수 있잖아.

아. 그르네. 똑같다. 하지만 각도를 돌려보면 이미지가 늘어지는 현상이 있다. ... 하긴, 어쩐지 당연하다. V외에 다른 걸 섞으니까... 뭐 그래도 빌딩창문에 비친 풍경따위를 누가 신경이나 쓸까. 싶어 넘어가기로.

 

이로서 만들고 싶은 셰이더는 끝났다. 이제 이걸 블렌더용으로 포팅해보자. 

작업 후 엉망진창~

4.15

오늘의 실험.

텍스처위에서 노말을 뽑아도 실 모델에 잘 적용되는가.

잘됩니다. 다행.

작은 악세사리들(체인이나 벨트)을 모델링해서 갖다 붙일 때 좋을 듯.

생각해보면 섭디가 이렇게 뽑으니 안될 이유가 없는데, 왜 생각을 못했지...

 

원래 블렌더로 셰이더들을 포팅하려 했는데, 블렌더엔 Light의 정보를 받아오는 기능이 없다. 

더불어 Lerp나, SmoothStep같은 유니티 전용 함수도 없고...

비슷하게 하라면 어떻게든 되겠지만, 지금시점에서 굳이...? 

그냥 셰이더가 쓰일 모델링을 하나 만들어보도록 하자.

 

계획도

제작 중.

4.18

해당 R&D는 회사에서 진행중이라, 주말엔 쉬고 있다. 그런데 주말의 육아가 일보다 더 힘듬. (나도 이랬겠지. 엄마. 미안해. 흑흑)

 

블렌더에서 헤어를 만들 때, 전용 셰이더가 없다면 앤젤링의 위치를 잡기 어려울 것 같다.

게다가 엔젤링을 원하지 않는 곳에 버텍스 컬러를 이용해 마스킹작업도 해야 하므로, 어쨌거나 다른 건 몰라도 블렌더용 헤어 셰이더는 필요해 보인다.

 

블렌더에선 Bitangent에 대한 정보를 제공해주지 않는다. 비탄젠트라고도 읽고, 바이탄젠트라고도 읽는다. 영상마다 그 발음이 달라서 뭐가 맞는지는 모르겠다. 여튼 이걸 해결하기 위해선 비탄젠트를 스스로 구해야 한다. 자료를 열심히 찾은 결과,

 

비탄젠트 = 탄젠트 X 노말 ( X = Cross product. 곱하기가 아니다.) 로 구할 수 있다고 한다.

 

안그래도 내적은 밥먹듯이 쓰는데 외적은 뭐에 쓰는지 궁금하던 차였다. 연산은 컴퓨터가 해줄 것이고, 난 그 결과값이 어떻게 나오는지만 신경쓰면 된다. Dot과는 다르게 결과를 Vector3로 뱉는다. 입력받은 두 백터에 수직인 벡터를 구해준다고 한다. 주의할 것은 입력받은 벡터의 순서가 반대일 경우, 벡터의 크기는 같되, 방향이 반대인 벡터가 나온다고 한다. 당장 이거 사실 비탄젠트 구할 때말고 쓸 때가 있을까... 싶은 생각이지만

 

어쨌거나 덕분에 비슷하게는 포팅을 했는데... 이게 유니티와 느낌이 좀 다르다.

좌표계가 달라서 그른가...

 

옷의 스컬핑. 결과물이 마음에 들지 않아 3번 정도 다시 함.

영어철자가 Sculpting 이라, 스컵팅, 스컬프팅... 다양하게들 부르는데 뭐가 맞는걸까.

4.19

오늘의 실험. 단면폴리곤의 아웃라인 조사.

유니티는 최적화를 위해 뒷면을 안그린다. 이를 Backface Culling이라고 한다.

그렇다면 프릴의 폴리곤을 종이짝으로만 처리했을 때, 윤곽선이 어떻게 나올까?

결과야 당연히 양면이 좋겠지만, 폴리곤갯수를 감수할만큼 좋은가? 그림자는 어떻게 될까?

예상외로 ShadowAtten(셀프쉐도우)은 이거나 저거나 잘 뿌려진다.

프릴의 모양이 폴리곤의 각을 과격하게 꺾어 중간중간 그림자가 비어있을 줄 알았는데 뜻밖에 꽉 차 있는 모습을 보여준다. 윤곽선도 명암이 뚜렷한 스타일리쉬한 게임에선 쓸만할 것 같다.

 

예상하지 못한 결과로, 양면을 사용할 경우 파묻히는 폴리곤에 주의해야 할 듯.

중간중간 끊기는 윤곽선이 깨나 지저분해 보인다. 

 

결론. 그냥 두께 줘야겠다. 최적화는 유저가 하는 거야. ^^

 

 

어디까지를 매핑으로 처리하고, 어디서부터는 폴리곤을 쓸것인가? 를 결정하는 건 늘 어려운 문제 같다.

 

블렌더에는 Curve에 Fillet(모서리 둥글게 만들기)기능이 없다. 못찾은 건가? 싶어 메뉴를 다 뒤져봤는데도 없다. 기본적인 기능이 없으니 당황시러워서 인터넷을 검색하니, 애드온 형태로 지원되고 있었다.

그럼 그렇지. 기본 기능을 뭐 숨겨놨어...싶어 애드온(Add Curve : Curve Tool)을 켰는데, 하... 버그가 많아서 쓸 게 못된다. 

오늘의 교훈. 블렌더에서 애드온 형태로 존재하는 기능은 그럴만한 이유가 있다.

그냥 폴리 커브를 사용하는 것이 속편하다.

 

 

많이 한 거 같은데 왜 어제와 똑같은 거 같지...

댓글5