jobGuid 꽃미남 프로그래머 "Pope Kim"님의 이론이나 수학에 치우치지 않고 실무에 곧바로 쓸 수 있는 실용적인 셰이더 프로그래밍 입문서 #겁나친절 jobGuid "1판의내용"에 "새로바뀐북미게임업계분위기"와 "비자관련정보", "1판을 기반으로 북미취업에 성공하신 분들의 생생한 경험담"을 담았습니다. 3ds Max를 사용해서 게임용 3D 캐릭터를 셋업하는 방법
이를 위해 오랜 실무를 경험해 온 저자의 고급 노하우들이 공개
위 내용은 GameDevForever의 저자분들의 홍보를 위하여 운영진 자체적으로 올린 광고이며 일체의 수익이 없습니다.(밥좀사줘요~)
Posted by 대마왕J

넵 11강.

이번 11강부터는 템포를 좀 줄일게요. 욕심부려서 한 회에 한 편을 완료했더니 아주 그냥 부담이 팍팍...
아니 평소같으면 괜찮습니다 사실. 어차피 퇴근하고 밤에는 뭔가 계속 깔짝대면서 공부하거나 글쓰니까요.
근데 요즘은 갑자기 몸이 고장이 난데다가 담주에 일주일간 여행을 갈 일도 있고 해서 하고 싶던 공부도 못하고 저녁에 그냥 쓰러지는 상태라.. OTL 템포를 조금 줄이도록 하겠습니다. 꾸준한게 중요하죠 꾸준한게!!!

이번 시간부터는 에또.. 봅시다. 그동안 10강을 하면서 꽤 많은 것을 했습니다. 특히 10강동안 중요하게 생각했던게, '텍스쳐 블렌딩' 쪽이었지요. 일단 그쪽이 제일 쉽구요. 그렇게해서 일단 익숙해지게 만드는게 우선이었습니다. 아무래도 그래픽 아티스트들에게는 shader가 그렇게 익숙한 것이 아니기 때문이지요

 

 

그래서 이렇게 맛을 들이고 난 후 ...

이번 시간부터가 shader의 진짜 능력인 'Lighting' 쪽을 건드려 보는 시간입니다.
뭐 라이팅이라고 해도 기본적인것만 합니다 기본적인것만. 아직 고급 라이팅을 가르칠 수준도 안되고 , 답답한 노드구조로 고급 라이팅 짜다가는 제가 빡칠 것 같아서 ... -_-;;;

 일단 제가 빡치면 재미있는 강의는 물건너 가는거잖아요 ㅋ

귀찮기도 하구요

 

뭐 어쨌건 오늘은 라이팅 기초 들어갑니다. 
여러 번 말씀드렸듯, 프로그래머들이 Shader 공부하는 것과 완전 반대 과정으로 가고 있어요 :) 공식 증명 같은것도 몰라요. 그냥 알기 쉽게, 제가 이해하는 수준으로 말씀드리고 말래요. 늘 그랬듯 말이죠 :)

 

라이트 개념잡기

3D 공간에서의 라이트는, 재미있는 속성을 가지고 있습니다.
오늘은 일단 라이트의 기본 개념부터 잡고 가도록 하죠.

기본 라이트는 몇 가지 종류가 있습니까?
그래요. 3D MAX좀 만져 보셨다면 다들 아시듯이, 라이트는 3가지 종류가 있습니다.
Directional , Omni, Spot 이렇게 말이죠. [각주:1] 

Directional light는 원통형으로 보통 표시됩니다. 직진하는 빛의 속성을 가지고 있고, 태양빛 등을 표현할때 보통 사용하죠.

Omni light는 사실 그래픽 아티스트만 알아듣는 용어입니다. 프로그래머들은 몰라요. 프로그래머들은 'Point light' 라고 주로 말합니다 . 그래서 게임 엔진에서도 Point light 라고 표현하고 있지요. 한글로는 '점광원' 이라고도 합니다.[각주:2]

Spot light는 말그대로 '스포트라이트' 입니다. 실생활에서 인위적인 조명기구에게서는 많이 볼 수 있는 조명 형태인데, 이상하게도 게임에서는 상대적으로 많이 사용하지 않지요? 후후후 

 

보통 3D 그래픽을 처음 시작하시는 그래픽 디자이너 분들이라면, 이 라이트를 가지고 공부하게 됩니다.

즉, '이게 전부이자 이게 실생활의 빛과 똑같은 것' 이라고 개념을 잡게 되지요.
그러다 보니까 실제 게임 엔진에서와, 실제 세상에서의 빛 차이 같은 경우를 별로 의식하지 않고 생활하는 경우가 있습니다.

하지만 아니예요! 게임에서의 라이트는 조금 달라요! 실생활에서의 라이트도 조금 다르고요!!!

그럼 한 번 그 차이중에서 아주 일반적인거 한 두개만 얘기해 볼까요? [각주:3]

 

우훗 ♡

 

자... 여기 전구가 있습니다.

 

그리고 이 전구 주변에 물체가 있다고 칩시다.  

하나는 가까이에 있고, 하나는 멀리에 있습니다.

이제 퀴즈입니다.

 

 

자, 전구 가까이 있는 물체 A가 밝을까요,
전구에서 멀리 떨어진 물체B가 밝을까요?

 

 

일반적인 학생들은 거의 대부분이 , 전구에서 가까운 물체 A가 밝다고 합니다.

 

 

그렇지만 3D 그래픽에서는 .... 
A와 B는 똑같거나 혹은 B가 더 밝습니다!!

이 개념은 나중에 설명할 라이팅에서 매우 중요하게 취급될 개념이기 때문에 꼭 알아야 하는 개념입니다.
일단 위 내용이 사실인지, 3D max 에서 보도록 하지요.

 

뷰포트에서 봐도 확실히 가까운 곳의 Plane이 더 어두워 보입니다.

렌더링 하면 더 확실해 집니다. 그림자는 어차피 켜지 않았으니까 그냥 빛이 통과된다고 생각하고 보면, 가까이 있는 plane이 멀리 있는 plane보다 더 어두운 것을 볼 수 있습니다.

이 이유는 무엇일까요?

 

 

자, 잘 모르시겠으면 다른 질문 하나 하죠.

지구에서 가장 더운 곳은 어디인가요?

적도지요???

그럼, 왜 봄 여름 가을 겨울 같은 계절이 생기는 걸까요?

넹 그건 지구가 기울었기 때문이지요?

 

무슨 말일까나... ?

 

그림출처 : 네이버 캐스트

 

 

넹 그러니까.. 태양으로부터 '직각' 으로 빛을 받는 면이 가장 덥다는 거지요.

다시 말해서 빛과 '직각' 으로 되어 있는 면이 가장 강한 빛을 받는다는 겁니다.

 

 

그 다음부터는 간단합니다.

Omni 라이트 (Point라이트) 는 빛을 어떻게 쏘아내지요?

 

이렇게 쏘아냅니다. 사방으로요.

 

그러니 위 그림에서 두 면이 받는 빛을 그려봅시다.

 

자! 어느 쪽 빛이 더 직각에 가까운가요?

아니 , 다시 말하지요.

어느 쪽 빛이 직각에 가까운 면적이 더 넓은가요?

넹! 멀리 있는 겁니다! 오브젝트가 멀리 있으면 멀리 있을수록 밝아지는 이유는 이거지요. 직각에 가까워 지기 때문!!!!

이게 진짜 빛의 기본 속성입니다. 3D 그래픽에서도 이 속성을 그대로 구현하고 있구요.

 

 

그런데 실제는 안그렇죠? 손전등을 비춰 봤는데 , 가까이 있는 주전자보다 창 밖에 있는 옆집 창문을 비추는게 더 밝다 ... 뭐 이런 사태는 안 일어나지 않습니까? 역시 3D 그래픽의 빛은 실제와는 다른 걸까요?

 

 

 

그럼 다시 다른 질문 해 보지요. 빛은 왜 잘 가다가 없어집니까? 감쇄 (attenuation) 현상이 왜 일어나는 겁니까?
여러분도 다 알고 있는 거예요. 먼지나 수분과 같은 입자가 공기중에 있고, 그 입자들이 빛을 사방으로 튕겨내기 때문 아닙니까? 다 알고 있으시잖아요. [각주:4]

그럼 여기서 하나 질문 들어가죠.

 

누가 3D Max 안에 먼지 넣어 놨어요?

 

네가 넣었구나.

 

넹, 3D max나 게임 엔진 안에 먼지는 없습니다. 완전한 클린 룸이예요.
그러니 빛이 가다가 감쇄 현상을 일으킬 리가 없지요. 물리학적으로 빛을 완전히 시뮬레이션 하는 것도 아니구요.
그래서 '일부러' 감쇄 현상을 만들어 주지 않는 한은 빛은 사실 '멀리 있을 수록 밝습니다'

 

 

넹 오늘은 진짜 여기까지. 하지만 이게 끝이 아닙니다.
다음 시간에 '그래픽 아티스트들이 잘 모르는 조명의 비밀' 이 계속 연재됩니다.
오늘 배운 얘기를 엎어버릴 얘기도 나오고 막 그러거든요.

내용은... ... 뭐 TA 급만 되시면 다 아실테지만... 저는 일단 다음 시간으로 이어서 연재하도록 하겠습니다 :)

다음 연재일인 3일을 기다려 주세요

 

  1. Area 라이트 같은거 말씀하시면 곤란... 포토매트릭 라이팅 말고 진짜 기본 라이팅 말하는 거니까요. [본문으로]
  2. 알아듣는 분도 물론 계십니다만, 일반적으로는 낮설어 하는 용어입니다 [본문으로]
  3. 전부 얘기하면 그것만 도데체 양이 얼마나 될지 알 수 없으므로... [본문으로]
  4. 물리학적으로는 다른 이유로도 감쇄가 일어난다고 합니다만 3D는 단순하니까.. [본문으로]

댓글을 달아 주세요

  1. Favicon of http://gamedevforever.com 끼로 2012.05.16 09:21 신고  댓글주소  수정/삭제  댓글쓰기

    헙! 벌써 끝나다니! 더 써주세요!

  2. Favicon of http://gamedevforever.com 디퍼드H 2012.05.17 13:56 신고  댓글주소  수정/삭제  댓글쓰기

    흠, 흥미로운 내용이네요. Point Light의 그림자 구현할때에는 또 omni-directional shadow mapping
    이라고 하더군요. omni light가 point light라는게 이해가 가긴해요~!^^ㅋ

  3. Favicon of http://gamedevforever.com ozlael 2012.05.17 14:14 신고  댓글주소  수정/삭제  댓글쓰기

    왜케 짧아요!!(2)

  4. Favicon of http://gamedevforever.com 대마왕J 2012.05.18 03:41 신고  댓글주소  수정/삭제  댓글쓰기

    열화와 같은 성원에 약간 양을 늘렸습니다. 아 새벽은 좋아 (펑)

  5. Favicon of http://gamedevforever.com 끼로 2012.05.18 09:57 신고  댓글주소  수정/삭제  댓글쓰기

    우오오오오 늘었다!!!!!

  6. Favicon of http://baroque2k.net bighey 2012.05.18 11:32 신고  댓글주소  수정/삭제  댓글쓰기

    짧아지니까 적응 안되긴해요..

  7. Favicon of http://lunapiece.net Lyn 2012.05.18 13:11 신고  댓글주소  수정/삭제  댓글쓰기

    음... 그런데 빛이 약해지는건 광자가 퍼지면서 영향을 받는 면적이 거리에 비례해 넓어지기 때문이 아닌가요?

    • Favicon of http://gamedevforever.com 대마왕J 2012.05.18 16:10 신고  댓글주소  수정/삭제

      어쨌거나 퍼지면서 약해지는건 사실이니까요. 그 퍼지는 이유는 공기중에 들어있는 각종 요소들이겠고...

    • 마루 2012.05.30 20:06 신고  댓글주소  수정/삭제

      아티스트 분들에게 물리학을 설명해야 할 것은 아니지만.. 먼지 같은 것에 의한 스캐터링이 아니더라도 거리의 제곱에 반비례해서 밝기가 줄어듭니다.
      혹시 omni 라이트 옵션에 ABC 값이 있는지 궁금하군요. 프로그램쪽에서 라이트는 실제 라이트와 비슷하게 보이기 위해 거리에 따라 밝기가 달라지는 계산을 합니다. 1/(A + B*r + C * r^2 ) 를 보통 씁니다..

    • Favicon of http://gamedevforever.com 대마왕J 2012.05.30 20:48 신고  댓글주소  수정/삭제

      물리학적으로는 광자가 퍼져서 빛이 어두워진다는 말씀인것 같군요. 참고하겠습니다. 3d max에서는 말씀하신 거리에 따른 감쇄가 따로 메뉴로 빠져 있어서 그 옵션을 켜지 않으면 감쇄현상이 일어나지 않습니다. 말씀하신대로 프로그램에서도 거리에 따른 감쇄현상을 일부러 넣어주는 것이니 넣어주지 않는다면 무한대로 가겠지요.

  8. Favicon of http://blog.naver.com/gmeggj 칵어두들두 2012.05.20 02:11 신고  댓글주소  수정/삭제  댓글쓰기

    전혀 몰랐네요... 많이 알아가요

  9. R 2012.05.30 22:21 신고  댓글주소  수정/삭제  댓글쓰기

    약간의 딴지를 걸자면 빛과 '직각' 으로 되어 있는 면이 가장 밝은 것은 결과지만 가장 많은 빛을 받아서 그렇다는 것은 조금 부정확한 설명으로 보입니다. 왜냐 하면 빛이 폭을 가진다고 한다면 면이 빛과 직각일때가 오히려 가장 적은 면적이 되기 때문입니다. 그래서, 빛 자체의 양은 변하지 않고 빛과 면의 각도에 따라 변하는 것은 빛을 받는 면의 면적입니다. 커피원두의 양이 변하지 않는다면 물의 양을 조절해서 커피를 진하게도 혹은 연하게도 할 수 있는 것에 비유할 수 있습니다. 빛이 거리에 따라 감쇠하는 이유 역시 같은 원리로 설명될 수 있습니다.

    • Favicon of http://gamedevforever.com 대마왕J 2012.05.31 08:15 신고  댓글주소  수정/삭제

      감사합니다. 표현이 세련되지 못했네요. 역시 졸면서 쓰면 안 ..... 많은 빛이란건 정말 이상한 것 같네요. 생각은 그랬는데 표현이 부정확했던 것 같습니다. 감사합니다 :)



티스토리 툴바