이 섹션에서는 Unity에서 광원을 만드는 여러 가지 방법에 대해 자세하게 설명합니다.
점 광원(Point lights)은 공간의 한 점에 있고, 광원을 모든 방향으로 균등하게 내보냅니다. 표면에 닿는 광원의 방향은 광원이 닿은 지점에서 라이트 오브젝트의 중심으로 다시 이어지는 선입니다. 광도는 광원에서 거리가 멀어질수록 약해지고, 지정된 거리에서 0이 됩니다. 이를 ‘역제곱 법칙’이라고 하며, 광원이 실제 세계에서 작용하는 방법과 유사합니다.
점 광원은 씬에 있는 램프와 기타 로컬 광원을 시뮬레이션하는 데 유용합니다. 스파크 또는 폭발에서 발생하는 광원이 주변을 실감나게 비추게 하는 데도 사용할 수 있습니다.
스폿 광원(Spot lights)은 점 광원과 마찬가지로 광원이 떨어지는 지정된 위치와 범위가 있습니다. 하지만 스폿 광원은 특정 각도로 제약되므로 조명이 비추는 원뿔 모양의 영역이 발생합니다. 원뿔의 중앙은 라이트 오브젝트의 전방(Z) 방향을 가리킵니다. 또한 광원은 스폿 광원 원뿔의 가장자리로 갈수록 약해집니다. 각도를 넓히면 원뿔의 너비가 증가하고 ‘페넘브라’라고 하는 이 페이드(광원이 약해지는 영역)의 크기도 함께 커집니다.
스폿 광원은 일반적으로 플래시라이트, 자동차 헤드라이트 및 서치라이트 같은 인공 광원으로 사용됩니다. 스크립트나 애니메이션에서 방향을 제어하는 움직이는 스폿 광원은 씬의 작은 영역에만 광원을 비추고 극적인 조명 효과를 만들어 냅니다.
방향 광원(Directional lights)은 씬에서 햇빛 같은 효과를 만드는 데 매우 유용합니다. 여러 면에서 태양처럼 동작하는 방향 광원은 무한한 거리에 멀리 떨어져 있는 광원이라고 생각할 수 있습니다. 방향 광원은 확인할 수 있는 광원 포지션이 없으므로, 라이트 오브젝트를 씬의 아무 위치에나 배치할 수 있습니다. 씬의 모든 오브젝트에는 광원이 항상 같은 방향에서 오는 것처럼 비춥니다. 광원과 타겟 오브젝트의 거리는 정의되어 있지 않으므로 광원이 약해지지 않습니다.
방향 광원은 게임 세계의 범위 밖에 있는 위치에서 오는 크고 먼 광원을 표현합니다. 사실적인 씬에서는 방향 광원을 사용하여 해나 달을 시뮬레이션할 수 있습니다. 추상적인 게임 세계에서는 빛이 정확하게 어디서 오는지 지정하지 않고 오브젝트에 사실적인 셰이딩을 추가하는 데 유용한 방법이 될 수 있습니다.
기본적으로 새 Unity 씬에는 모두 방향 광원이 있습니다. Unity 5에서 방향 광원은 조명 패널의 환경 조명 섹션(Lighting>Scene>Skybox)에서 정의되는 절차적 스카이 시스템에 연결됩니다. 기본 방향 광원을 삭제하고 새 광원을 만들거나 간단히 ‘Sun’ 파라미터(Lighting>Scene>Sun)에서 다른 게임 오브젝트를 지정하여 이 동작을 변경할 수 있습니다.
기본 방향 광원(즉 ‘Sun’)을 회전하면 ‘스카이박스’가 업데이트됩니다. 빛이 지면과 평행하게 측면에 비스듬하게 비치도록 하면 일몰 효과를 얻을 수 있습니다. 또한 빛이 위쪽을 향하게 하면 밤이 된 것처럼 하늘이 검게 변합니다. 빛을 위에서 비스듬하게 비추면 하늘이 주간과 유사해집니다.
스카이박스를 앰비언트 소스로 선택하면 이런 컬러에 따라 주변광이 변합니다.
면 광원(Area lights)은 공간에 있는 사각형에 의해 정의됩니다. 광원은 전체 표면 영역에 걸쳐 균등하게 모든 방향으로 사각형의 한쪽 면에서만 발산됩니다. 면 광원의 범위는 수동으로 제어할 수 없지만, 광원에서 멀어질수록 거리의 역제곱으로 광도가 약해집니다. 조명 연산에는 프로세서 성능이 꽤 많이 사용되므로, 면 광원은 런타임 시점에 사용할 수 없고 라이트맵으로만 베이크할 수 있습니다.
면 광원은 오브젝트를 여러 다양한 방향에서 동시에 비추기 때문에 다른 광원 타입에 비해 셰이딩이 더 부드럽고 섬세합니다. 면 광원을 사용하여 사실적인 가로등이나 플레이어 가까이에 길게 늘어선 불빛을 만들 수 있습니다. 작은 면 광원을 사용하면 실내 조명처럼 더 작은 광원을 점 광원보다 더 사실적으로 시뮬레이션할 수 있습니다.
발광 머티리얼(Emissive materials)은 면 광원처럼 전체 표면 영역에서 빛을 발산합니다. 이 머티리얼은 씬에서 반사광의 강도를 높이며, 게임플레이 중에 컬러와 광도 같은 관련 프로퍼티를 변경할 수 있습니다. 면 광원은 미리 계산된 실시간 GI에서 지원되지 않지만, 발광 머리티얼을 사용하여 유사한 부드러운 조명 효과를 실시간으로 구현할 수 있습니다.
‘Emission’은 스탠다드 셰이더의 프로퍼티로, 이를 통해 씬의 정적 오브젝트에서 광원을 발산할 수 있습니다. ‘Emission’의 기본 설정 값은 0입니다. 이 설정에서는 스탠다드 셰이더를 사용하는 머티리얼이 할당된 오브젝트에서 광원이 발산되지 않습니다.
발광 머티리얼의 범위 값은 없지만, 방사된 광원은 다른 머티리얼과 마찬가지로 2차율을 따라 약해집니다. 방사된 광원은 인스펙터에서 ‘Static’ 또는 ’Contribute GI’로 표시된 오브젝트만 비춥니다. 이와 마찬가지로 캐릭터처럼 정적이지 않은, 즉 동적인 지오메트리에 적용된 발광 머티리얼은 씬 조명의 강도를 높이지 않습니다.
하지만 이미션이 0보다 큰 머티리얼은 씬 조명에 기여하지 않는 경우에도 화면에서 계속 밝게 글로우하는 것처럼 보입니다. 이 효과는 스탠다드 셰이더의 ‘Global Illumination’ 인스펙터 프로퍼티에서 ‘None’을 선택하여 생성할 수도 있습니다. 이런 자체 발광 머티리얼은 네온이나 기타 가시광선 광원 같은 효과를 만드는 유용한 방법입니다.
발광 머티리얼은 씬의 정적 지오메트리에 직접 영향을 미칩니다. 캐릭터처럼 동적인, 즉 정적이지 않은 지오메트리가 필요한 경우 발광 머리티얼에서 나오는 광원을 받으려면 라이트 프로브를 사용해야 합니다.
주변광(Ambient light)은 씬 전체에 있고 특정 광원 오브젝트에서 나오지 않는 광원입니다. 이 광원은 씬의 전체적인 외양과 밝기에 중요하게 기여할 수 있습니다.
주변광은 선택된 아트 스타일에 따라 여러 경우에 유용할 수 있습니다. 예로는 어두운 그림자가 바람직하지 않을 수 있는 밝은 카툰 스타일 렌더링이나 조명을 텍스처에 수동으로 칠하는 경우를 들 수 있습니다. 주변광은 개별 광원을 조정하지 않고 씬의 전체적인 밝기를 높여야 하는 경우에도 유용할 수 있습니다.
주변광 설정은 조명 창을 참고하십시오.