MMD 그래픽 따라하기 2.0 – (2) 스튜디오 맵 세팅 및 유니티 광원에 대한 이해

 

 

 

MMD 그래픽 따라하기 2.0 – (1) KKUSS 쉐이더 다루기


MMD 그래픽 따라하기 2.0 – (3) 포스트 프로세싱 이펙트, 유사 갓 레이 연출하기

 




 

 

 

 

00. 개요

 

지난 시간에는 KKUSS 쉐이더에 대해 이해해보는 시간을 가지며 직접 마테리얼에 어떤 식으로 적용하는지 다뤄보았다.

KKUSS 세팅을 무사히 마쳤으면 이번에는 스튜디오로 넘어가서 본격적인 스테이지 세팅을 시작 할 시간이다.

이번 강의는 스튜디오 맵을 KKUSS 쉐이더로 세팅하는 법과 기본적인 광원 세팅법을 다뤄보겠다.

 

주) 본 강의는 런타임 유니티 에디터를 사용하고 있습니다. 런타임 유니티 에디터가 설치되어 있지 않은 분들은 
Github - RuntimeUnityEditor

해당 링크에서 다운로드하여 “게임 설치 경로\BepInEx”에 붙여넣기해서 설치하시기 바랍니다.

 

 

 

 

01. KKUSS 쉐이딩 – 스테이지 맵

 

이전 강의에서 본인은 쉐이더를 최대한 통일해서 사용한다고 말했었다.

캐릭터 프리셋만 KKUSS로 세팅하고 맵은 그대로 두게 된다면 캐릭터쪽 쉐이더와 맵의 쉐이더가 서로 어울리지가 않기에 왠만해서는 스테이지 맵도 KKUSS로 세팅해주고 있다.

 

사진 1. 스튜디오에서 맵 불러오기

 

먼저 스튜디오에서 KKUSS로 세팅한 캐릭터와 아무 맵을 불러오면 대충 사진과 같은 상태일 것이다.

예시로 Star 맵을 불러왔다. (번역 상태에 따라 다른 이름일수도 있다.)

이제부터 맵의 모든 마테리얼을 KKUSS로 바꿔줘야 하므로 맵 오브젝트를 선택해서 마테리얼 에디터를 켜주도록 하자.

 

사진 2. 맵의 마테리얼 에디터.

 

쉐이더를 KKUSS로 바꾸기 전에 우리가 먼저 확인해야 할 것이 있는데, 바로 Shadow Casting Mode다.

Shadow Casting Mode는 외부 광원이 오브젝트를 투과할 때 오브젝트 뒷면에 그림자를 만들지 결정하는 부분으로, On이면 그림자를 만들고 Off면 그림자를 만들지 않는다.

만약 맵 오브젝트에 벽면이나 천장이 존재하면 외부 광원이 오브젝트를 비출 때 스테이지 내부에 그림자가 지게 된다.

그렇게 되면 내부 전체에 빛이 들어오지 못하므로 광원을 사용하는 의미가 없다.

KKUSS 쉐이더로 바꾸게 되면 반드시 벽면이나 천장쪽 마테리얼을 찾아서 이 둘의 Shadow Casting Mode만 Off로 바꿔놓아야 한다.

 

예시로 불러온 맵에서는 사방에 벽과 천장이 있었으므로 Shadow Casting Mode를 Off로 전환시켰다.

 

이후 과정은 지극히 단순하다. 맵의 모든 마테리얼을 전부 KKUSSitem으로 쉐이더로 바꾼 뒤 그대로 두면 끝이다.

맵의 마테리얼이 한 오브젝트에 수십개가 넘는 경우도 있으니 하나도 빠짐없이 전부 KKUSS로 바꿔주자.

경우에 따라 SpecularPower를 0.4로 설정해서 약간의 광택과 빛반사를 주는 경우도 있지만 외부 광원을 두 개 이상 사용하면 과도한 빛번짐이 생길 수 있다.

나중에 숙달되면 취향에 따라 값을 조정해보도록 하자.

 

사진 3. 바닥면의 아스팔트 질감(아래), 자체발광하는 맵의 마테리얼(위)

 

또한 약간의 디테일을 추가하기 위해 맵에도 노멀맵디테일을 추가함으로써 질감을 입혀줄 수 있다.

예를 들면 사진과 같이 아스팔트 재질의 노멀맵을 찾아서 바닥에 입혀줄 수도 있고 합판 재질의 노멀맵을 찾아서 목재 건물에 입혀 사실적인 느낌을 추가해줄 수 있다.

 

1강에서 다뤘던 내용을 응용해서 원하는 질감을 입혀주자.

 

마찬가지로 필요한 경우 맵의 특정 마테리얼을 자체적으로 빛나게 할 수 있다.

이 역시 1강에서 다뤘던 내용을 응용해보도록 하자.

 

사진 4. KKUSS를 전부 적용한 모습

 

맵의 모든 부분을 KKUSS로 전환하고 나면 생각보다 많이 어두운 모습일 것이다.

광원을 두 개 이상 사용할 것을 전제로 세팅했기 때문에 광원이 하나밖에 없는 지금은 어두울 수밖에 없다.

 

이제 광원을 추가할 차례다.

 

 

 

 

02. 광원 세팅

 

사진 5. 정면광, 역광을 동시에 받아 강조된 부위가 빛나는 모습

 

KKUSS 쉐이더를 사용하는 가장 큰 이유 중 다른 하나가 바로 이것이다.

 

유니티 엔진에서 쓰이는 광원은 크게 Directional Light(방향성 광원), Point Light(점 광원), Spot Light(스포트 광원) 이 3가지로 나뉜다.

이 중 태양처럼 맵 전체에 직사광선처럼 특정 방향을 가지고 투과하는 광원이 Directional Light이며, 사진과 같은 연출을 주기 위해서는 기본적으로 각각 다른 각도로 되어 있는 두 개의 Directional Light이 필요하다.

 

스튜디오 자체에 있는 캐릭터 라이트는 기본적으로 Directional Light이므로 D-MODMAP 하나만 추가해주면 된다.

 

사진 6. 캐릭터 라이트 설정값

 

캐릭터 라이트는 다음과 같이 세팅하도록 한다.

정면광을 담당하므로 최대한 빛이 정면을 비추게끔 해야 한다.

 

사진 7. 추가한 D-MODMAP 광원의 설정값.

 

추가한 모드광원은 회전값을 다음과 같이 설정하도록 한다.

역광을 담당하므로 빛이 최대한 후방에서 사선으로 비추게끔 해야 한다.

역광의 밝기는 1.5로 설정하자.

사진 5번과 같이 역광이 빛나게 하려면 그만큼 밝기를 크게 키워줘야 한다.

 

사진 8. 역광을 추가한 모습

 

두 가지 광원을 받으니 어느정도 밝아지기 시작했다.

 

이대로 포스트 프로세싱 이펙트 설정만 해주고 끝내도 그럭저럭 봐줄 만한 퀄리티가 나오지만 아직 마무리 작업이 남았다.

이제부터 런타임 유니티 에디터를 이용해서 광원의 세세한 수치를 다듬어줘야 한다.

 

 

 

 

03. 런타임 유니티 에디터 세팅

 

런타임 유니티 에디터를 아직 설치하지 않은 분들은 00. 개요로 돌아가서 첨부된 링크를 타고 설치 먼저 해주시기 바랍니다.

 

런타임 유니티 에디터는 유니티 엔진 기반의 게임 안에서 실시간으로 각종 오브젝트나 여러 요소들을 직접 수정할 수 있는 플러그인이다.

일종의 유니티 버전 개발자 콘솔이라고 생각하면 쉽다.

본 강의에서는 강의 특성상 Directional Light 부분만 다루지만, 인게임에서 다른 유니티 엔진 요소를 수정하고 싶다면 런타임 유니티 에디터를 이용해서 얼마든지 수정할 수 있으므로 나중에 한 번 탐구해보도록 하자.

 

런타임 유니티 에디터가 설치되었다면 플러그인 세팅에서 단축키를 지정해줘야 한다.

 

사진 9. 런타임 유니티 에디터 찾기

 

먼저, F1을 눌러 플러그인 세팅창을 연 뒤에 runtime를 검색하여 런타임 유니티 에디터를 찾는다.

Open/close runtime editor에 원하는 단축키를 넣어 런타임 유니티 에디터를 불러올 수 있도록 설정해주자.

본인은 F12로 지정했다.

 

플러그인 세팅 창을 나가서 설정했던 단축키로 런타임 유니티 에디터를 불러온다.

 

사진 10. 런타임 유니티 에디터의 검색창

 

그러면 오른쪽 윗부분에 이와 같은 창이 생길 것이다.

빨갛게 강조한 부분이 검색창인데, 여기서 인게임의 여러 요소를 찾아 직접 건드릴 수 있다.

우리는 그중에서 광원을 손보고 싶으니 검색창에 ‘Directional’를 입력해 엔터를 쳐주도록 한다.

사진처럼 바로 아래에 검색 결과로 몇 개의 요소가 나오는데 그중에서 Directional Chara(캐릭터 라이트), Directional Light(D-MODMAP)를 찾아 클릭해주면 된다.

먼저 Directional Chara를 손봐야 하므로 Directional Chara 먼저 클릭해주자.

 

사진 11. Light 체크박스

 

Directional Chara를 클릭하면 하단 Transform 밑에 체크박스와 함께 Light라고 되어 있는 부분이 있을 것이다.

Light 왼쪽에 하얀 점으로 체크박스 활성화가 되어있는데, 체크박스를 눌러서 광원을 비활성화할 수도 있고 다시 활성화할 수도 있다.

체크박스는 건들지 말고 Light를 클릭해서 Inspector 창을 열도록 하자.

 

사진 12. Directional Chara의 Inspector 창

 

우리는 사진 속 빨간 영역 두 곳의 세팅값만 손보면 된다.

상단의 빨간 영역은 광원이 비출 때 그림자를 어떻게 생성할지 결정하는 수치이며 cullingMask는 광원이 어느 오브젝트에 영향을 줄지 결정하는 값이다.

이것도 Render Queue처럼 레이어와 비슷한 느낌의 값인데, 내용이 복잡해지므로 자세한 설명은 추후 다루도록 하겠다.

상단의 그림자 관련 값들도 설명을 생략하고 넘어가도록 하겠다.

직접 수치를 변경해보면 대강 그림자의 어떤 부분을 담당하는지 감이 올 것이다.

 

사진 13. 변경된 세팅값들

 

앞서 말한 값들을 다음과 같이 변경해주면 된다.

Directional Light 역시 같은 방법으로 사진 13과 동일한 값으로 만들어 주면 된다.

만약 Directional Light가 여러개 있어서 어떤건지 구별이 가지 않을 때는 체크박스를 On/Off 해봐서 광원이 꺼지는지 안꺼지는지 확인하는 식으로 찾아보자.

 

주) 런타임 유니티 에디터에서 값을 변경할 때 반드시 기존 수치를 지우고 입력해야 한다.

또한 수치를 입력하고 반드시 엔터를 쳐서 마무리를 해줘야 정상적으로 입력이 된다.

 

이렇게 런타임 유니티 에디터에서 변경한 수치들은 스튜디오 내에서 저장이 안되므로 다음에 씬을 불러오게 된다면 다시 한 번 수치를 입력해줘야 한다.

 

런타임 유니티 에디터를 이용하면 게임상에서는 비활성화 되어있는 요소를 강제로 활성화할 수도 있다.

그 예시 중 하나로 보케 효과를 들 수가 있는데, 관련 강의가 있으니 관심이 있으면 아래 링크를 통해 확인해보도록 하자.

 

스튜디오에서 보케(빛번짐) 효과를 강제로 활성화하는 방법

 

아래 강의는 일종의 응용편으로, 보케를 활성화 한 상태에서 다이나믹한 보케를 주는 강의이다.

 

DOF 초점 흐림을 다이나믹하게 주는 방법

 

 

 

 

04. 끝맺음

 

이번 시간에는 스튜디오 맵 세팅과 유니티 엔진의 광원에 대해 알아보았다.

상당히 긴 분량인데도 여기까지 따라오느라 수고했다.

대략 70프로정도는 온 것 같다고 생각하는데 나머지 분량도 충분히 잘 따라올 수 있을 것이다.

 

포스트 프로세싱 이펙트나 다른 자잘한 효과까지 여기서 한번에 다루기에는 분량이 너무 길어질 것 같으니 이번 강의는 여기서 마치도록 하겠다.