이글에서는 월드 조명의 개념과 기본정도만 다룰거임
기본기 정도만 해도 브챗월드로는 충분함
유니티에서 조명은 하이어라키에 라이트 넣고 끝내도 되지만 그럼 월드가 전혀 사실적이지도 않고 하나도 안예쁨
이번에 만든 월드로 조명작업 전 후를 보여주면
이정도 차이라고 보면 됨
원래 어두컴컴한 월드라서 잘 티나진 않지만 LED조명쪽 빛 반사 효과나 소파에 어두운 조명이 잘들어간거 등의 차이가 있고 vr에서 보면 더 체감이 잘됨
월드들 돌아다니다보면 모델링은 예쁜데 조명이 구데기라서 분위기는 하나도 안예쁜 그런 월드는 조명작업을 안했거나 덜했다고 생각하면됨
하이어라키에 조명들 배치하고 그 뒤로도 작업해야될게 있는데 크게 4가지가 있음
제일 기본으로 해야될건 조명을 굽는것임
조명 굽는건 그림자를 미리 다 계산해서 텍스쳐로 만든 다음 오브젝트에 입혀버린다고 생각하면 됨
이렇게 텍스쳐로 만들어버리면 런타임 때 리얼타임 조명 계산할 필요가 없어서 최적화에 도움되고 품질도 높일 수 있음
Mixed나 Baked모드로 된 라이트들만 구워지니까 원하는 조명들의 모드를 바꿔주고
조명계산에 쓰일 정적 오브젝트들(벽이나 가구 등)을 static으로 바꿔줌
런타임때 움직일 동적 오브젝트들은 여기에 포함시키면 안됨 걔네들은 뒤에 쓰일 라이트 프로브를 써야됨
그 다음 툴바의 Window/Rendering/Lighting 윈도우를 열면
이런창이 뜨는데 Lighting Settings Asset은 New버튼 눌러서 만들면되고 나머지 옵션들은 다 그대로 내두고 밑의 Generate Lighting버튼을 누르면 조명이 구워짐
일단 조명만 구워도 이렇게 훨씬 보기 좋아짐
중간에 있는 소파는 런타임때 온오프 할거라 static 체크를 안해놔서 조명이 약간 따로 놀고 있음
이런 동적 오브젝트들은 뒤에 설명할 라이트 프로브를 쓰면됨
다음으로 해야될건 리플렉션 프로브를 써서 오브젝트에 현실적인 반사효과를 주는것임
오브젝트 쉐이더의 smoothness가 전부 0이 아닌이상 써야된다고 생각하면 됨
하이어라키에 Light/Reflection Probe 추가해주고
인스펙터에서 이 버튼을 눌러서
프로브가 영향을 미칠 범위를 조절해주고
밑의 Bake버튼을 누르면 끝
그럼 이렇게 주변 환경을 찍어서 큐브맵 이미지로 저장해버림
그러면 주변에 있는 오브젝트는 그 이미지를 가져다가 실제 반사하는거처럼 눈속임함
다음으로 라이트 프로브를 사용해서 동적 오브젝트에 쓸 조명정보를 미리 계산해야됨
동적 오브젝트 조명을 리얼타임 라이트로 처리할 수도 있겠지만 최적화 ㅎㅌㅊ라는건 모든 브붕이가 알것임
하이어라키에 Light/Light Probe Group 추가하면
이렇게 이상한 공들이 생기는데 저 공 위치에서의 조명 정보를 샘플링해서 저장함
그럼 런타임때 동적 오브젝트는 월드 내에 위치한 가까운 라이트 프로브에서 조명 정보를 받아서 렌더링됨
라이트 프로브 인스펙터에서 Edit Light Probe Positions버튼을 누르면 공 위치를 옮길 수 있고 새로 추가할 수도 있음
조명 차이가 심하게 나는 부분은 촘촘히 배치하고 그게 아니라면 적당히 배치해주면 됨
그 담엔 맨처음 했던 조명굽기 하면 얘네도 같이 구워짐
여기까지 하고 나면 static이 아니었던 소파에도 어두운 환경조명이 제대로 잘 들어간걸 볼 수 있음
이게 유니티 조명의 기본이고 라이트 매퍼 옵션이나 더 필요한 정보는 검색하면 많이 나오니까 그거 보고 하면됨