일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 터치디자이너 Instancing
- touchdesigner displace
- 터치디자이너 if
- 터치디자이너 오퍼레이터
- 터치디자이너 python
- 터치디자이너 참조
- 파이썬reference
- 터치디자이너 list
- touchdesinger
- TDableton
- 터치디자이너 reference
- touchdesigner GPU
- 터치디자이너 클론
- 터치디자이너 timeline
- 터치디자이너 강의
- 터치디자이너
- 터치디자이너 파이썬
- 터치디자이너 replicator
- displace
- touchdesigner particle
- 터치디자이너 함수
- 터치디자이너 에이블톤
- 터치디자이너 튜토리얼
- 터치디자이너 interface
- 파이썬
- particleGPU
- 터치디자이너 인터페이스
- 파이썬 if
- TouchDesigner
- ableton live 10
- Today
- Total
caLAB
[유니티 개발] Lighting 본문
유니티에서 visual 퀄리티를 높이는 가장 효과적인 방법은 Lighting이다.
Lighting만 신경써서 잘 작업해두어도 작업물의 퀄리티가 확 올라간다.
유니티에서 제공하는 기본 템플릿에서 라이팅 셋업을 어떻게 해두었는지를 분석해보았다.
주로, 라이팅 및 환경 셋업에 사용되는 요소들은 아래와 같다.
- Reflection Probe
- Light Probe
- Gradient Skybox
- Directional Light
- Point Light
- Volume
- Fog
- Particle (먼지, 빛)
위의 요소들이 환경의 분위기를 만들어내는 매우 중요한 요소로써 작용하고 있다.
이 중에서 Reflection Probe, Light Probe, Volume에 대해서 정리해보도록 하겠다.
Reflection Probe
reflection probe는 환경을 cube map에 저장한 후에 이것을 반사 재질의 material에 적용시키는 것이다.
반사되는 오브젝트의 반사를 주변 환경과 어울리게 변화시킬 수 있다.
reflection을 만드는 방법으로는 volume에서 screen space reflections를 세팅하는 방법과 reflection probe를 사용하는 방법이 있다. screen space reflections의 경우에는 opaque에서만 적용 가능하기 때문에 투명한 material 즉, 유리에는 적용이 힘들다, 주로 젖은 땅에 사용하게 된다. reflection probe는 material의 설정을 통해서 refraction(굴절)을 조절할 수 있다. transparency, smoothness와 thickness 등을 조절하여 사실감 있는 유리의 표현을 할 수 있다. 주로 baked로 설정을 놓고 사용한다. baked는 한 번 환경을 저장한 후 그것을 계속 사용하는 것이라 performance에 유리하다. reflection 데이터를 받지 못하는 경우 반사 재질의 material은 skybox를 기본적인 reflection 데이터로 사용한다.
Light Probe
라이트 맵핑을 실시간으로 처리하는데 비용이 많이 들기 때문에 light probe에 해당 빛에 대한 정보를 샘플링하고 user가 이동할 때 가까운 light probe 끼리 사이 지점을 보간해준다. 그래서 마치 realtime으로 빛에 인터렉션하는 효과를 퍼포먼스를 유지하면서 보여준다. Light Probe를 생성해주는 기준은 그림자의 영향을 받는 사이 혹은 환경 색의 변화가 있는 곳이다. 사이에서 보간을 받아야 되기 때문에 경계를 기준으로 light probe를 양분해서 생성해주면 좋다. light probe에서 bake할 object들은 static으로 설정한다. 종종 Auto Generate로 Light를 설정해두면 In Game모드에서 이상한 현상이 일어나기 때문에 Auto Generate모드를 해제하고 Generate Lighting을 하고 게임을 실행하도록 한다.
Volume
Volume에서는 전체적인 환경이나 분위기 세팅을 할 수 있다. 우선, Volume을 만든 후에 Visual Environment를 추가. Type에서 HDRI Sky를 선택하고 HDRI Sky를 추가해서 HDRI Sky 파일을 추가해서 적용해준다. Bloom을 추가해서 좀 더 주변 환경을 촉촉하게? 만들어준다. Fog를 추가하면 빛이 번지는 효과를 나타낼 수 있다. Project Settings > HDRP Default Settings에서 Volumetric Fog 세팅을 활성화시켜주면 좀 더 풍부한 fog 효과를 볼 수 있다.
Fog를 좀 더 부드럽고 blur되어 보이게 하기 위한 방법은 두 가지가 있다. Filter mode를 설정하거나 Player Settings > HDRP Default Settings에서 Reprojection모드를 선택할 수 있다. 두 개를 같이 쓰면 무겁기 때문에 하나만 쓰는 것을 추천한다.
Density Volume
영역을 설정해서 추가적인 Volume을 더할 때 사용한다. Bounding Box 영역 범위 내에서만 Volume의 효과가 보인다.
[라이팅 관련 개념]
Global Illumination(GI)는 라이트가 다른 곳에 반사되어서 오거나 다른 라이트와의 간섭을 연산해서 표현해주는 것을 말한다. 따라서 해당 기술은 연산 비용이 많이 들어가게 된다. 이러한 문제를 해결하기 위해서 Light map이 존재한다. 라이트맵은 라이팅 정보를 미리 연산해서 이를 텍스처로 담고 있는 것이다. baked light는 고정된(static)한 오브젝트에 적용한다.
앰비언트 오클루전(Ambient Occlusion) 은 주변광(특정 방향에서 발생하지 않는 조명)이 표면의 한 점에 얼마나 영향을 미치는지 대략적으로 나타냅니다. 앰비언트 오클루전(AO)은 서로 가까이 있는 주름, 구멍 및 표면을 어둡게 합니다. 이 영역은 주변광을 가리므로(차단) 더 어두워 보입니다.
미리 계산된 실시간 GI만 사용하는 경우(미리 계산된 조명 사용 문서 참조), 간접 조명에 사용되는 해상도로는 아주 디테일한 부분이나 동적 오브젝트를 캡처하지 못하므로 실시간 앰비언트 오클루전 포스트 효과를 사용하는 것이 좋습니다. 이 효과는 훨씬 더 디테일한 부분을 많이 가지고 있으며, 결과적으로 조명 품질을 향상시킵니다.
[참고]
https://wonsorang.tistory.com/515
https://chulin28ho.tistory.com/446
'Unity > 유니티 개발' 카테고리의 다른 글
[유니티 개발] 타이핑 모션이 들어간 대화창 만들기 (0) | 2021.12.28 |
---|---|
[유니티 개발] FOV 연출 (0) | 2021.12.15 |
[유니티 개발]비디오 플레이어에서 audioSource 받아오기 (0) | 2021.11.21 |
[유니티 네트워크] 애니메이션 동기화 (0) | 2021.11.18 |
[유니티 C#] 캐릭터 이동 회전 스크립트 (0) | 2021.10.18 |