초등학교 6학년때 나에게 오타쿠 문화를 알려줬던 친구가 있다. 그 친구 덕분에 오타쿠의 길을 걷게 되었다. 그 친구는 애니를 만들고 싶어서 영상쪽의 길을 걷게 되었고 나는 게임을 만들고 싶어서 게임쪽의 길을 걷게 되었다. 우리는 서로 자신이 원하는 일을 열정적으로 하며 살았다. 그러던 중 2020년 초 겨울방학이 끝나갈때 쯤 그 친구와 함께 고기를 먹으며 이야기를 나눴다. 이야기를 하다보니 자연스레 자신이 하고 있는 작업에 대해 이야기를 하던 도중 그 친구가 제안을 했다.
하나의 세계관을 가지고 게임하고 애니를 만들어 보자는 제안이였다. 흥미로운 제안이였다.
그 이유 크게 4가지가 있었다.
1. 새로운 형태의 협력관계를 경험 할 수 있다. 2. 리소스를 제공 받을 수 있다. 3. 자연스레 게임을 홍보 할 수 있는 영상매체가 생긴다. 4. 오타쿠 개발자의 로망!!!!!
이중 리소스를 제공 받을 수 있다는 점이 매우 컸다.
우리 학교엔 아쉽지만 3D 모델링 개발자가 적다. 따라서 3D를 제작하기 매우 힘든 환경이다. 하지만 3D 모델링을 지원 받는다면 정말 큰 도움이 될것이였다.
하지만 애니에서 쓰던 모델링을 그대로 쓰는건 문제가 있어보였다. 그래서 그 친구와 함께 1주일 프로젝트로 애니에서 쓰던 모델링들을 그대로 게임에 적용이 가능한가? 를 테스트 해보았다.
RimLight는 "모든 물체는 기울어질수록 반사가 심해진다" 라는 현상에서 부터 시작됩니다.
이때 역광이 있을때 털이나 반투명 재질을 가진 물체들은 이 현상이 매우 강렬하게 나타납니다.
사진 분야에서 이 현상을 RimLight 라고 합니다.
림 라이트 예제 이미지1
림 라이트 예제 이미지 2
두 예제 이미지를 보면 머리카락이나 옷 부분을 보면 역광에 반사가 심해져 윤곽선 같은 느낌이 나는걸 볼 수 있습니다.
이것이 RimLight 입니다.
2. RimLight를 통해 어떤 효과를 기대 할 수 있는지
기본적으로 게임에서는
1. 배경과 캐릭터의 분리나 강조 효과
2. 캐릭터가 선택 되었을 때나 특정 상태를 표현하기 위한 이펙트
3. 셀 세이딩 효과 같은 특수한 효과를 위해
과장되도록 사용합니다.
RimLight 효과가 적용 되기 전
RimLight가 적용된 이후
RimLight 예제 이미지 처럼 외곽선 부분이 강조된걸 볼 수 있습니다.
이 때문에 배경과 캐릭터가 구분 되는 효과를 볼 수 있습니다.
3. RimLight를 구현하기 위한 프레넬 공식
프레넬?
프레넬 방정식(Fresnel equations) 또는 프레넬 공식(Fresnel's formulas)은 반사계수와 투과계수에 관한것으로 한 매질과 광학적 특성 즉, 굴절률이 다른 매질의 계면에서 반사 또는 투과 진폭을 입사진폭으로 나눈 값을 말한다. 프랑스의 물리학자오귀스탱 장 프레넬이 유도하였다.
( 위키백과 )
라고 하는데
프레넬은 아주 쉽게 말해서 각 재질에 따른 반사 정도를 나타냈다고 이해합시다...
실제로 프레넬은 프로그램에서 대체로 빛을 반사하는 값의 정도를 조절하는 값인 경우가 많다.
근데 RimLight를 구현하는데 왜 갑자기 프레넬이 튀어 나오냐구요?
왜냐면 RimLight는 결국 역광에서 나온 빛이 반사가 되어 생긴 현상이기 때문입니다. ( 글쓴이의 얕은 추론의 결론... )
따라서 반사와 투과에 대한 공식인 프레넬은 림라이트를 포함하는 개념입니다. ( 이것은 아래 레퍼런스 참고..!)
3. RimLight 구현
RimLight를 구현하는 과정을 간략하게 정리해보려합니다.
a. RimLight은 Lembert 공식( N Dot L ) 에서 L을 V로 바꾼것
b. 그 결과값을 1 - 결과값 으로 뒤집어 버린다.
c. 그리고 POW를 통해 값을 급격하게 높혀버린다. 이를 통해 외곽선이 뚜렷하게 보이는 것