빛 이란, 과학적으로 설명된것을 인용하자면

빛에 대한


즉, 일정한 에너지를 갖도록 셀 수있게 되어 있다에 초점을 둘 수 있다.

이런 빛 입자가 물체에 부딪치면, 흡수되어 지거나, 반사되어 진다.
각 물체의 재질에 따라 흡수 또는 반사 되어지는 빛 입자 종류가 다르며, 이런 차이로 서로 다르다는 것을 분별할수 있게 된다. 그런 분별력으로 각 차이의 명칭을 정했다. 이것은 색이라 불리며, 빨강색, 녹색, 파랑색 등의 세부 명칭을 둘수 있다.


빛의 흡수와 반사는 물체와 빛의 위치에 따른 입사각에 의해서 달라 질수 있다.
원리는 입사각이 0도 ~ 180도에서 90도가 원래 빛의 량을 받는다 했을 때, 90도가 전후로 그 빛의 량이 넒은 면적으로 흩어져 단위면적당 빛의 량이 줄어든다.

그림을 예로 들자면


이런 식을때, 빛의 입사각을 Θ 라고 했을때, 빛의 입사각에 따라 면적은  1 / cosΘ 만큼 늘어난다.
빛의 입사된 면적 1 일때 빛의 분포도가 1k로 들어어온것을 1Light 라고 했을 때 해당 식이 성립된다.

면적 * 분포도 = 빛량
1 * 1k = 1Light
가 성립된다.

면적 1 / cosΘ 에 도 똑같은 빛량 1Light 가 있어야 하므로(왜냐하면 들어온 빛량이 1Light 이니까, 최종적으로 벽에 부딪이는 빛량도 1Light 이다), 분포도가 더 높아졌을 것이다.  얼마 만큼의 분포도로 높아졌는지 모르지만, 방정식으로 이용하여 식을 만들면

면적 * 분포도 = 빛량
1 / cosΘ * χk = 1Light

이때 빛의 분포도는 cosΘ 가 된다.

이 도출해 낸 공식을 말로써 정리하자면, 빛의 입사각에 따라, 빛의 량은 갖지만, 빛의 분포도는 달라지며, 입사각이 90도일때, 이 분포도가 1이 된다는 것이다. 이 분포도는 0 ~ 1 사이의 값을 갖게 된다.

이 빛의 분포도에 따라, 그 빛을 받는 물체의 빛량은 달라진다는 것이다.

이런 분포도로 인하여 물체가 받는 빛의 량이 달라지는 경우나, 앞에 물체있어, 빛량이 달라짐에 따라, 한 물체에 상대적으로 어두운 부분(음영)이 생기고, 이로써 우리 눈에 입체감이 생기게 되는 것이다.

이것이 쉐이딩의 기초, 음영의 원리이다.


PS. ... 머리로 이해 한 후 국어로 옮기는 작업은, ... 프로그래머로써 코딩과 별반 차이가 없지 않을까 한다;


신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요