Light

Lights는 사용자의 게임에 개성을 가져다 줄 것입니다. 사용자는 씬을 비추기 위해서 조명을 사용하고 완벽한 비주얼 분위기를 생성하기 위해서 오브젝트를 사용합니다. 조명은 태양, 타는 듯한 조명, 손전등, 발포 또는 폭발등을 시뮬레이션하기 위해서 사용될 수 있습니다.


The Light Inspector

Unity에 세 가지 종류의 조명이 있습니다:

  • Point lights 은 모든 방향으로 일정거리 까지 빛을 보내며 균등하게 빛납니다. 전구
  • Directional lights 는 무한히 멀리 있는 태양처럼 씬의 모든 것에 직선광을 줍니다. 태양
  • Spot lights은 한 방향에 있는 점으로부터 자동차의 헤드라이트처럼 원뿔 안에 있는 오브젝트들만 비춥니다~~. 손전등

조명은 또한 그림자를 만들 수 있습니다. 그림자 설정은 각각의 조명을 기준으로 적용될 수 있습니다.

Properties

Type 조명 오브젝트의 현재 타입:
»>Directional 무한히 멀리 놓여 있는 조명. 그것은 씬의 모든 것에 영향을 미칩니다.
»>Point 그것의 범위 안에 모든 오브젝트들에 영향을 미치면서 그것의 위치에서 모든 방향으로 균등하게 비치는 조명.
»>Spot Spot AngleRange에 의해 정해지는 원뿔안의 모든 곳에 비치는 조명. 이 지역안에 있는 오브젝트들만 조명에 영향을 받습니다
Range 조명이 오브젝트의 중심으로 부터 얼마나 멀리 발산되는지. Point/Spot라이트만.
Spot Angle 원뿔의 각도를 결정.Spot라이트만.
Color 발산되는 조명의 색.
Intensity 조명의 밝기. Point/Spot 라이트의 기본 값은 1입니다. 방향성 있는 조명의 기본값은 0.5입니다.
Cookie 이 텍스쳐의 알파 채널은 다른 장소에서 조명이 얼마나 밝은지를 결정하는 마스크로서 사용됩니다. 조명이 Spot 또는 방향성 있는 조명이라면, 이것은 2D 텍스쳐 입니다. 조명이 Point조명이라면 그것은 반드시 Cubemap임이 틀림없습니다.
Cookie Size Cookie의 투사의 규모를 결정. 오직 방향성 있는조명만.
Shadow Type (Pro only) No, Hard 또는 Soft 조명에 따라 바뀌는 존재하지 않는, 뚜렷한 또는 미세한 shadows. 미세한 그림자는 비용이 더 많이 듭니다.
»>Strength 그림자의 명암. 0과 1 사이의 값을 가집니다.
»>Resolution 그림자의 디테일 레벨.
»>Bias 조명 공간에서 픽셀의 위치와 그림자 맵으로 부터의 값을 비교할 때 사용되는 오프셋. 아래의 Shadow Mapping and the Bias Property를 참고하십시오.
»>Softness 반그림자 영역의 규모 (흐릿한 샘플의 오프셋). 오직방향성 있는 조명만.
»>Softness Fade 카메라로부터의 거리에 따른 소프트 그림자의 퇴색. 오직 방향성 있는 조명만.
Draw Halo 선택이 된다면 조명의 둥근 후광은 Range과 같은 반지름으로 그려질 것입니다.
Flare 조명의 위치에서 그려질 Flare에 대한 선택적인 참조.
Render Mode
»>Auto 그려지는 기법은 조명 가까이의 밝기와 데스크탑 빌드 타겟을 위한 현재의 Quality Settings에 따라 실행시에 결정됩니다.
»>Important 조명은 항상 픽셀당 퀄리티로 그려집니다. 매우 중요한 효과에만 사용해 주십시오 (예. 선수의 자동차의 헤드라이트).
»>Not Important 이 조명은 항상 더 빠르고 점/오브젝트 조명 모드에서 그려집니다.
Culling Mask 조명에 의해 영향을 받는 것으로부터 오브젝트들을 선택적으로 배제하기 위해서 사용됩니다Layers를 살펴보시기 바랍니다.
Lightmapping The Lightmapping 모드: 실행시만, 자동 또는 BakedOnly;Dual Lightmaps설명을 참고하시기 바랍니다.

Details

Unity에는 3가지 종류의 기본 조명 타입이 있습니다. 각 타입은 사용자의 요구에 맞게 맞춤형으로 표현될 수 있습니다.

사용자는 알파 채널을 포함하고 그것을 조명의 Cookie변수에 지정하는 텍스쳐를 생성할 수 있습니다. Cookie는 조명으로 부터 투사되어질 것입니다. Cookie의 알파 마스크는 표현위의 밝고 어두운 점들을 만들면서 빛의 양을 조절합니다. 그들은 씬에 많은 복잡성과 분위기를 첨가해주는 좋은 방법입니다.

Unity의 모든 built-in shaders는 어떤 조명과도 잘 작용할 수 있습니다. 그러나 VertexLit 쉐이더는 쉐도우 또는 Cookies를 보여줄 수 없습니다.

웹 플레이어 또는 독립형의 구축할 타겟을 가지고 있는 Unity Pro에서 모든 조명은 선택적으로 유니티 그림자를 바꿀 수 있습니다. 이것은 각각의 조명의Shadow Type 속성을 위해 . 뚜렷한 그림자 또는 미세한 그림자를 선택하는 것에 의해 행해집니다. 그림자에 대한 더 자세한 정보는유니티 그림자를 참고해 주십시오.

Point Lights

포인트 조명은 모든 방향에서 하나의 점으로부터 빛납니다. 그들은 컴퓨터 게임에서 주로 폭발, 전구등을 위해 사용되는 가장 흔한 조명입니다. 그들은 그래픽스 프로세서에 평균적인 비용을 가집니다 (포인트 조명 그림자가 가장 비용이 많이 듬에도 불구하고).
Point Light

포인트 조명은 쿠키를 가질 수 있습니다 – 알파 채널을 가진 Cubemap 텍스쳐. 이 Cubemap은 모든 방향에서 투사되어 집니다.


Cookie 를 가진 Point Light

Spot Lights

스포트 라이트는 하나의 원뿔에서 한 방에서 비춥니다. 그들은 손전등, 자동차 헤드라이트 또는 램프를 위해서 좋습니다. 그들은 그래픽 프로세서 측면에서 가장 비싼 비용이 듭니다.


Spot Light

스포트 라이트는 쿠키를 가질 수 있습니다 – 빛의 원뿔 아래로 투사된 텍스쳐. 이것은 창문을 통해 비추는 조명의 효과를 생성하기에 좋습니다. 텍스쳐가 테두리에서 검정색을 띄고 Border Mipmaps옵션을 가지고 그것의 래핑 모드가 Clamp로 세팅되는 것은 중요합니다. 자세한 정보를 위해서는 Textures를 참고해 주십시오.


Cookie 를 가진 Point Light

Directional Lights

방향성 있는 조명은 주로 태양과 달빛을 위한 야외 씬에서 사용됩니다. 조명은 사용자의 씬에 있는 오브젝트의 모든 표면에 영향을 줍니다. 그들은 그래픽 프로세서 측면에서 가장 비용이 적게 듭니다. 방향성 있는 조명으로부터의 그림자는(그림자를 지원하는 플랫폼을 위한) this page에서 깊게 설명이 되어 있습니다.


Directional Light

방향성을 가진 조명이 쿠키를 가질 때 그것은 조명의 Z 축의 중심으로 투사되어 집니다. 쿠키의 사이즈는 Cookie Size속성과 함께 변경됩니다. 쿠키 텍스쳐의 래핑 모드를 인스펙터의 Repeat으로 Inspector에사 세팅하시기 바랍니다.
구름모양 같은 쿠키 텍스쳐를 투사하는 방향성 있는 조명

쿠키는 커다란 야외 씬에 빠른 디테일을 첨가하기 위한 훌륭한 방법입니다. 사용자는 움직이는 구름의 효과를 주기 위해서 씬위로 조명을 천천히 밀어넣을 수 있습니다.

Performance considerations

조명은 두 가지 방법 중 한 가지 방법으로 표현될 수 있습니다: 정점(vertex)pixel조명. 정점 조명은 게임 모델의 정점에서의 조명을 계산하고 그 모델의 표면을 통해 조명을 보간합니다. 픽셀 조명은 모든 씬의 픽셀에서 계산되어 지므로 훨씬 비용이 많이 듭니다. 몇몇의 오래된 그래픽 카드는 정점 조명만을 지원합니다.

픽셀 조명이 표현되기에 더 느린 반면, 그것은 정점 조명으로 가능하지 않은 효과를 만들어 낼 수 있습니다. 보통 매핑, 가벼운 쿠키 그리고 실시간 그림자는 오직 픽셀 조명을 위해서 표현됩니다. 스포트 라이트 모양과 포인트 라이트 하이라이트는 픽셀 모드에서 표현될 때 더욱더 뛰어납니다. 위의 세 가지 타입의 조명은 정점 조명 모드에서 표현될 때 이것처럼 나타납니다:


정점 조명 모드에서의 포인트 조명.


정점 조명 모드에서 소프트 라이트.


정점 조명 모드에서 방향성 있는 조명.

조명은 렌더링 속도에 커다란 영향을 미칩니다 – 그러므로 조명의 퀄리티와 게임 속도 사이에 트레이드오프가 있습니다. 픽셀 조명이 정점 조명보다 훨씬 비용이 들기 때문에 Unity는 오직 픽셀 당 퀄리티에서 가장 밝은 조명을 표현할 것입니다. 실제 픽셀 조명의 숫자는 웹 플레이어와 독립형 구축 타겟을 위해 Quality Settings에 세팅되어 질 수 있습니다.

사용자는 조명이 Render Mode속성을 사용해서 정점 또는 픽셀 조명으로서 표현되어져야 하는지를 조절할 수 있습니다. 기본적으로 Unity는 오브젝트가 조명에 의해서 얼마나 많은 영향을 받았느냐에 따라서 자동적으로 조명을 분류할 것입니다.

픽셀 조명에서 표현되는 실제 조명은 객체 대 객체의 케이스에서 결정됩니다. 이것은 다음을 의미합니다:

  • 밝은 조명을 가진 커다란 오브젝트는 모든 픽셀 조명을 사용할 수 있습니다 (세팅의 퀄리티에 의존해서). 플레이어가 이것들로 부터 멀리 있다면 가까이 있는 조명은 정점 조명으로서 표현될 것입니다. 그러므로 커다란 오브젝트를 작은 것들로 나누는 것이 더 좋습니다.

그래픽스 성능을 최적화하기 위한 더 많은 정보를 위해서는Desktop, iOS Android페이지를 참고 하시기 바랍니다.

쿠키 생성

쿠키 생성에 대한 더 많은 정보는 tutorial on how to create a Spot light cookie를 살펴보시기 바랍니다.

Shadow Mapping and the Bias Property

그림자는 그림자 매핑으로 알려진 테크닉을 사용해서 구현됩니다. 이것은 다른 것들에 의해 가려지는 어떤 표면을 결정하기 위해 카메라에 의해 사용되는 깊이 매핑과 유사합니다. 씬은 조명에 의해 밝혀지는 각 표면까지의 거리를 저장하는 깊이 맵을 생성하기 위해서 조명의 위치에서 카메라에 의해 내부적으로 표현됩니다. 이런 종류의 깊이 맵은 그림자 맵으로 표현됩니다. 씬이 주요 뷰 카메라로 표현될 때 그 뷰의 각 픽셀 위치는 그것의 거리가 그림자 맵에서 해당 픽셀과 비교될 수 있기 위해서 조명의 공간으로 옮겨집니다. 픽셀이 그림자 맵 픽셀보다 더 멀리 있다면 그것은 또다른 오브젝트에 의해서 빛으로부터 왜곡되어 지고 그것은 어떠한 조명도 가지지 못할 것입니다.

올바른 그림자를 가진 원기둥

조명에 의해 직접적으로 비춰지는 표면은 때때로 그림자에서 부분적으로 나타날 수 있습니다. 이것은 그림자 맵에서 명시된 거리에 정확하게 있어야만 하는 픽셀이 때때로 멀리 있다고 간주되기 때문입니다 (맵을 위해 낮은 화상도를 사용하는 것의 결과). 결과는 그들이 "shadow acne"라고 알려진 시각 효과를 주면서 정말로 비춰질 때 그림자에서 픽셀들의 임의적인 패턴입니다.

원기둥위의 작은 점들의 형태에서의 Shadow acne

그림자 acne를 방지하기 위해서 바이어스 값이 경계선에서 픽셀이 반드시 정상적으로 비교를 통과할 것이라는 것을 확신시키기 위해서 그림자 맵의 거리에 추가될 수 있습니다. 그림자를 활성화 시켰을 때 조명에 결합된 Bias 속성에 의해 세팅되는 값입니다. 그러나 바이어스를 너무 놓게 세팅하는 것은 실수입니다. 왜냐하면 그것을 변화시키는 오브젝트 주면의 그림자의 영역은 가끔 잘못 비춰질 수도 있기 때문입니다. 이 효과는 "Peter Panning"이라고 알려집니다 (즉, 끊어진 그림자는 오브젝트가 Peter Pan처럼 땅위를 날으는 것처럼 보이게 만듭니다). Peter Panning은 오브젝트가 땅위에서 높게 있는 것처럼 보이게 만듭니다

조명을 위한 바이어스 값은 그림자 acne 또는 Peter Panning이 일어나지 않도록 확실하게 하기 위해서 약간의 조절이 필요할지도 모릅니다. 일반적으로 그것을 계산하려는 시도보다 눈에 의해 정확한 값을 추측하는 것이 더욱 평이합니다.

Hints

  • 쿠키를 가진 스포트 라이트는 창문으로부터 들어오는 조명을 만들기 위해 매우 효과적입니다.
  • 낮은 강도의 포인트 조명은 씬에 깊이를 더해주기에 좋습니다.
  • 최고 성능을 위해서VertexLit쉐이더를 사용하십시오. 이 쉐이더는 사양이 좋지 않은 카드에 훨씬 더 높은 결과를 주면서 정점 조명을 합니다.
TypeError: call_user_func_array(): Argument #1 ($callback) must be a valid callback, class Doku_Renderer_metadata does not have a method "table_align"

TypeError: call_user_func_array(): Argument #1 ($callback) must be a valid callback, class Doku_Renderer_metadata does not have a method "table_align"

An unforeseen error has occured. This is most likely a bug somewhere. It might be a problem in the backlinks plugin.

/var/www/wiki/inc/parserutils.php:535