꽃미남 프로그래머 김포프가 창립한 탑 프로그래머 양성 교육 기관 POCU 아카데미 오픈!
절찬리에 수강생 모집 중!
프로그래밍 언어 입문서가 아닌 프로그래밍 기초 개념 입문서
문과생, 비전공자를 위한 프로그래밍 입문책입니다.
jobGuid 꽃미남 프로그래머 "Pope Kim"님의 이론이나 수학에 치우치지 않고 실무에 곧바로 쓸 수 있는 실용적인 셰이더 프로그래밍 입문서 #겁나친절 jobGuid "1판의내용"에 "새로바뀐북미게임업계분위기"와 "비자관련정보", "1판을 기반으로 북미취업에 성공하신 분들의 생생한 경험담"을 담았습니다.
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는 단순하니까.. [본문으로]
반응형
,