https://dev.epicgames.com/documentation/en-us/unreal-engine/point-lights-in-unreal-engine
3D 그래픽스에서 Point Light는 가장 기본적인 광원 중 하나로, 실세계의 전구나 촛불처럼 모든 방향으로 균등하게 빛을 방사하는 점 광원(point source)을 이상화한 모델입니다. 학술적으로 이를 이해하려면, 광원의 특성, 수학적 모델링, 그리고 렌더링 시스템에서의 구현 방식까지 다룰 수 있습니다.
🔹 정의 (Definition)
Point Light는 3차원 공간상의 한 점에 위치하며, 방향성이 없고, 거리 감쇠(distance attenuation)를 가지는 광원입니다. 이는 빛의 파장이 아닌, 지오메트릭 광선 모델(geometric optics)에 기반하여 광선을 추상화한 표현적 조명 모델(explicit lighting model)의 일종입니다.
🔹 수학적 모델링 (Mathematical Modeling)
Point Light는 다음 요소들로 모델링됩니다:
📌 1. 위치 (Position)
광원은 3D 공간상 위치 $\mathbf{p}_L = (x, y, z)$를 가집니다.
📌 2. 방사광도 (Radiant Intensity)
모든 방향으로 등방성(isotropic)으로 동일한 세기의 빛을 방사합니다. 즉, 방향에 무관하게 일정한 방사광도 $I$를 갖습니다.
📌 3. 거리 감쇠 (Distance Attenuation)
빛의 세기는 거리의 제곱에 반비례하며 다음과 같은 감쇠 모델로 표현됩니다:
- : 광원과 픽셀(또는 표면)의 거리
- : 각각 상수, 선형, 제곱 감쇠 계수
이는 물리적으로는 역제곱 법칙(inverse-square law)을 기반으로 하나, 그래픽스에서는 보다 유연한 조절을 위해 계수를 도입합니다.
📌 4. 조명 계산 (Lighting Computation)
픽셀 또는 표면에 대해 Lambertian 또는 Phong 조명 모델 등과 조합하여 다음과 같은 조명을 계산합니다.
예: Phong reflection model에서는 아래와 같은 식으로 나타낸다.
각 항목: • : Ambient term (환경광) • : Diffuse term • : Specular term
📌 각 벡터 및 변수의 의미
기호 설명
- 표면 법선 벡터 (surface normal vector)렌더링되는 픽셀 또는 vertex의 위치에서 바깥 방향으로 향하는 단위 벡터 (normalized vector)
- 벡터표면에서 광원 방향을 가리키는 단위 벡터
- 반사 벡터 (reflection vector) 이 에 대해 반사된 방향
- 뷰어 방향 벡터 (view direction vector)표면에서 카메라 또는 관찰자 방향을 향하는 벡터
- 확산 반사 계수 (diffuse reflectivity, RGB 벡터 또는 스칼라)
- 경면 반사 계수 (specular reflectivity)
- 샤이니니스 계수 (shininess exponent) – 하이라이트의 날카로움 정도
- 광원의 색상 및 세기 (radiance or intensity, RGB 벡터)
- 광원의 RGB 색상 및 강도를 포함하는 스칼라 또는 벡터 값입니다.
- 예: L = (1.0, 0.8, 0.6)이면 주황빛을 내는 광원
- 이 값은 diffuse 및 specular 조명 계산 시 반사 계수와 곱해져 픽셀 색상에 영향을 줍니다.
- 거리 감쇠 함수 (attenuation function)
🔹 법선 벡터 의 역할
- 항은 빛의 입사각과 표면의 각도 차이를 반영합니다.
- 입사각이 클수록 (빛이 표면을 스치듯 비출수록) 값이 작아지며, 이로 인해 diffuse 조명이 약해집니다.
- 따라서 은 표면의 방향성 정보를 통해 빛의 밝기를 조절하는 핵심 요소입니다.
🔹 시각적 예시 (설명)
- ↑ (수직)일 때 → 빛이 정면에서 들어오면 가장 밝음
- ← (기울어짐)일 때 → 빛이 옆에서 들어오면 어두워짐
🔹 렌더링 시스템에서의 구현 (Implementation in Rendering Systems)
🔸 실시간 렌더링 (e.g., OpenGL, DirectX, Unity)
- 일반적으로 씬(scene) 내에 다수의 point light를 설정 가능
- 쉐이더(Shader)에서 표면 셰이딩 시 연산
- 그림자 처리에는 Shadow Mapping 또는 Deferred Shading 사용
🔸 물리 기반 렌더링(PBR)
- point light의 에너지 보존을 고려하여 BRDF와 결합
- 감쇠 모델은 실제 inverse-square law에 더 가깝게 사용
- 표면 반사 모델로 GGX, Cook-Torrance 등을 사용
🔹 참고 문헌 (References) • Pharr, M., Jakob, W., & Humphreys, G. (2016). Physically Based Rendering: From Theory to Implementation. Morgan Kaufmann. • Foley, J. D., van Dam, A., Feiner, S. K., & Hughes, J. F. (1996). Computer Graphics: Principles and Practice. Addison-Wesley. • Shirley, P., Marschner, S. (2009). Fundamentals of Computer Graphics. A K Peters.