3D 게임제작 강좌

언리얼엔진
2015.02.05 20:25

[UE4]004.광원(Lights)에 대해#1

조회 수 2368 추천 수 1 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부


본래는 3-1이나 3-#2이런식으로 진행하고자 했습니다만, 뭔가 굉장히 난해하고, 없어보일거 쓸모없는 용어가 난무하는 것 같아서 굳이 하위 넘버링을 거치지 않고 바로 4로 넘어왔습니다. 애초에 인터페이스라는 단어 역시 언리얼엔진에 난무하는 잡다한 버튼을 총체적으로 지정하여 지칭하기위해 가칭을 붙인것이라, 강좌를 처음부터 읽지 않았다면 접근성이 상당히 떨어질것같아서 대부분 수정을 거쳤습니다. 이에따라, 이전 강좌의 제목 역시 하위 넘버링을 삭제하고 제목역시 수정이 이뤄졌음을 밝힙니다. 내용까지는 여력이 없어서 귀찮아서 못했네요(...)

                                                       


p.s어쩌다가 자동저장한게 올라가버렸네요. 하룻밤 자고 나니까 이따구로 되어있어 급하게 수정했습니다 :/

p.s.2.자다깬뒤 비몽사몽으로 쓴 글이라 영 고르지 못하군요. 다시 읽어보니 절실히 느꼈습니다(...). 추후 수정하겠습니다 ㅜㅜ.


자, 본격적인 강좌에 들어가기에 앞서서, "빛"이란것은 무엇일까요?

입체적으로 생각하려고하지말고 단면적으로 생각하는게 이해에 편합니다. 빛의 특성이나 정의를 알아두어야하는 이유는 언리얼엔진에서는 빛을 놓기는 쉬워도, 빛을 이용한 환경조성이나 좀 더 미려한 그래픽을 연출하는 것은 어렵기 때문입니다. 실제로 빛은 언리얼엔진 그래픽의 절반이상을 좌우하고 있습니다.


흔히 라이팅이라고 말하는 이 빛은 말 그대로 사물을 비추는 역할, 즉 시각효과가 활성화되는 것을 담당합니다. 매우 단면적으로만 보자면, 빛이 있기에 배치된 액터와 사물들을 우리가 파악할 수 있는거죠. 이는 현실에서도 마찬가지고, 언리얼엔진4에서도 똑같다고 볼 수 있습니다. 언리얼엔진은, 대부분의 물리법칙이나 광원효과, 즉 지구에서 적용되는 대부분의 "규칙"을 자동적으로 구성해내고있습니다. 이를테면 빛의 파장이라던지, 굴절, 중력등이 있겠군요. 물론 즉각적으로 활성화되는 바는 아니고

, 제작자가 나름의 노하우에 맞춰서 약간의 조정성을 가해줘야합니다. 이번 강좌에서는 그 중, "광원"을 다뤄보도록합니다.

강좌1.jpg

▲빛이 없다. 때문에 아무것도 보이지 않고, 제대로 된 판단이 불가능하다. 이는 뷰포트에서도, 실제 게임플레이에서도 동일하다.


상단사진의 뷰포트를 봅시다. 십자무늬가 미세하게 그어진 거대한 세계가 있다는 점을 제한다면, 아무것도 보이지 않고 판단하기가 굉장히 난해합니다.

한치앞도 내다보기가 굉장히 힘들지요. 하지만, 눈으로 보기는 힘들지라도 분명 저 앞에는 지난 강좌에서 배치해두었던 정육면체의 액터가 존재합니다. 개발자의 입장에서는 단순히 뷰포트 인터페이스에서 빛을 포함하지 않는 뷰로 바꿔버리면 무리없이 물체를 볼 수 있습니다.


2-1.jpg2-2.jpg


하지만, 인게임에서는 그렇지않죠. 당장 시범 플레이를 활성화시켜도 물체는 커녕 바닥조차 보이지 않습니다.


3.jpg

▲뷰포트옵션중, 「라이팅 포함」을 「라이팅 제외」로 바꿔준 형태. 물체의 실루엣과 스태틱 메쉬에 입혀진 머티리얼까지 모두 판단할 수 있으나, 어딘가 부족해보인다.


이 사물을 볼 수 없는 비가시영역에 귀속된 액터에서, 직접 시각으로 판별할 수 있는 가시영역에 포함되는 액터로 바꿔주는 것이 "빛"입니다.

UE4에서는, 지난 버전과 넘버링 시리즈에 비해 빛을 처리하는 능력이 굉장히 진화되어있습니다. 빛의 색조가 은은하고 유려해서 단순히 반사와 굴절각을 제외하고 빛의 기본적인 느낌만을 비교하더라도, 전혀 상투적이지않고 상당히 미려한 느낌을 자아냅니다.


4.jpg

▲빛의 굴절과 반사, 파장등을 좀 더 직접적이고 세밀하게 관찰하기위해 바닥을 깔았다.


직접적으로 빛을 설명하기 위해 넓은 판자를 깔았습니다. 판자를 만드는 방법은 지난 여러 강좌에서 설명해드렸듯이, 단순히 정육면체의 스태틱메쉬액터를 배치한 뒤, 디테일창에서 크기조절을 가해주시면 됩니다.  


아직 상단의 사진에는 빛을 적용시키지 않았고, 빛을 제외하는 옵션으로 설정을 마쳤기때문에 물체를 볼 수 있습니다. 물론, 느낌은 전혀 없죠.

그럼 예시를 보여드리기 전에, 간단히 언리얼엔진이 지원하는 빛의 종류를 살펴보도록합니다.


일단 모든 빛은 공통적으로 트랜스폼 옵션에서 빛의 위치나 방향, 각도등을 설정할 수 있습니다. 물론 빛의 속성이 다른만큼 같은 옵션을 변경해도 나타나는 효과는 조금씩 다릅니다. 해당 관련 강좌는 굳이 적을 필요없이 직접해보는게 백배는 나으므로 생략하도록합니다.


1.포인트라이트

포인트라이트는 광원을 중심으로 사방팔방 뻗어져나가는 빛을 의미합니다. 포인트라이트를 설치한 곳이 빛을 발산하는 광원이며, 특별한 장애물이 없는 한 빛은 포인트라이트가 미치는 일정범위내를 밝힙니다. 일정범위의 한계점에 다다를수록 빛은 약해지며, 어느순간 빛은 보이지 않게됩니다.  텅스텐전구랑 유사한느낌이 짙으며 빛의 볼륨효과로 인해 "아늑하다"라는 느낌이 납니다. 게임에서는 촛불, 횃불, 실내전등등으로 사용되어지는 경우가 빈번합니다.

5.jpg


상단의 기재된 사진이 포인트라이트로, 확실하게 빛이 "퍼진다"라는 느낌이 납니다. 해당 포인트라이트는 요전번에 설치한 정육면체의 액터 바로 위에 설치되어있으며, 때문에 마치 정육면체를 중심으로 빛을 발산하는 것처럼 보입니다.  사진을 클릭해보면 알 수 있겠지만, 이 포인트라이트 액터 ─ 액터는 게임내에 설치된 모든 자재들을 의미한다고 했었죠? 때문에 빛 역시 액터에 해당합니다. ─의 디테일은 전번에 등재하였던 스태틱메쉬 액터의 디테일과는 판이하게 다릅니다.


사진이 보이지 않는다면 클릭해서 대비해주시면 되겠습니다.


Light

  • Intensity - 빛의 "밝기"를 나타냅니다. 빛이 얼마나 밝은지를 표시하는데, 이 수치는 기본 5000이며, 0에 다다를수록 빛은 어두워지고, 0에 이르면 빛의 밝기는 0이 되어 보이지 않게됩니다. 많은 분들이 착각하시는 것이 있는데, 빛의 밝기를 늘려주는것이지 빛의 범위를 늘려주는 것이 아닙니다. 쉽게 풀어 설명하자면 "일정범위내에 미치는 빛의 밝기"정도가 되겠군요. 기본 범위가 10이라고 가정한다면, 범위 10내에 미치는 빛의 양이 얼마나 많은지를 의미한다고 볼 수 있겠습니다.
  • Light Color - 빛의 "색깔"입니다. 실제 생활에 용례를 들어보면, 촛불도 빛을 발산해내고, 전조등 역시 빛을 만듭니다. 하지만 두 빛의 느낌은 정말 판이하게 다르죠. 이는 빛의 색깔이 다르기때문인데, 전조등은 백색광에 가까운 반면 촛불의 빛은 붉은 적색에 가깝죠. 해리포터에서 나오는 플루가루(...)는 초록색 빛이겠군요.
  • Attenuation Radius - 영어엔 나름 자신이 있었는데 처음보고 졸라 엄청 어려운 단어라 의미를 파악하는데에 꽤 오래걸렸던 기억이 나는 이 옵션은, 빛의 "감쇠"를 의미합니다. 즉, 빛의 범위량을 나타낸다고 볼 수 있습니다. 빛의 밝기에서 빛이 미치는 가시범위, "일정범위" 그 자체를 설정하는 것으로, 강조하지만 빛의 밝기를 늘리지는 않습니다. 같은 빛의 밝기로 일정범위를 비추되, 그 범위가 어느정도일지를 판단합니다.
  • Soruce Radius - 반사체위로 퍼지는 빛의 크기를 조절합니다. 여기서 제 판단미스가 비롯되는데  보다 정밀한 강좌를 위한다면 아마 액터에 머티리얼을 씌울게아니라 금속성을 가지는 액터를 실험예제로 써야했을듯합니다. 죄송합니다. 이는 추후 수정하거나, 다음 강좌에서 설명하도록하겠습니다. 여기서 처음 말을 들으면 이해하기가 난해할 수 있는데, "반사체"에 비치는 빛의 크기를 의미하지, 빛을 굴절시키거나 빛을 아예 봉쇄하는 물체에 해당하는 것이 아닙니다. 빛을 "반사", 즉 빛의 경로를 완전히 꺾어버리는 물체가 빛을 꺾었다는 행동을 보여주는 것을 의미하는데, 쉽게 설명하자면 철로 만들어진 공 위에 빛을 비추면 빛이 응어리지면서 철공위에 일렁이는것을 볼 수 있습니다. 그런겁니다(...). 임시적으로 덧붙이는 사진은 바로 하단에 기재되어있습니다.

6.JPG

붉은 색 테두리 안에 응어리진 빛의 반사에 따른 표시.

  • Soruce Lenth - 반사체위로 퍼지는 빛의 "모양"을 조절합니다. 일반적으론 동그란 모양이지만 원한다면 크고 아름다운 직선으로도 할 수 있고, 역량이 있다면 별모양(...)도 가능합니다.
  • Affect World - 해당 빛이 게임에 영향을 미칠것인지 조절합니다. 그냥 체크해두세요(...).
  • Cast Shadow - 해당 빛이 그림자를 만들어낼것인지 조절합니다. 일반적으로 그림자가 없다면 삭막하고 저퀄같아보이지만, 실제 게임에서는 수백개의 빛이 설치됩니다. 그런 빛들이 모두 그림자를 양산하면 게임을 진행하는것이 불가능하죠. 때문에 몇개의 조명같은경우는 그림자를 없애기도합니다. 은근히 자주사용될 수 있는 요소니 게임을 직접 만들게된다면 체크할것인지 말것인지 확인하도록합시다.



2.디렉셔널 라이트

디렉셔널라이트는 태양광과 같이 무한히 먼, 적어도 인간의 오감과 육감으로는 변화를 감지할 수 없을정도의 먼 거리에서부터 뻗어져나오는 빛을 의미합니다. 때문에 빛의 방향역시 포괄적인편이며, 아무리 멀리떨어져도 같은 레벨 내에서는 빛은 무한히 따라옵니다.


7.jpg


빛이 볼품없어 보일수도 있는데, 사실 이건 어떠한 환경의 조작과 빛의 세기,밝기,범위등을 처리하지않은 그냥 생짜로 설치한 빛입니다. 또한 빛이 닿는 물체에도 반사효과나 굴절효과를 일절 집어넣은게없어, 시각효과는 전혀 구현되어있지 않다고 볼수도있죠. 때문에 그냥 이상태로는 미려한 빛을 연출할 수 없습니다. 좀 더 아름답고 미려한 그래픽을 가진 빛을 연출하는 방법은 바로 다음 강좌인 넘버링5에서 하도록 하겠습니다.


역시 해당 라이팅도 포인트라이트처럼 디테일이 조금씩 다릅니다...라고 할것도 없이 포인트라이트에서 몇개가 빠진 형태라 굳이 설명할 필요가 없을 듯 합니다. 추가된 다른 점이 하나 있긴한데, 이건 넘버링5에서 "하늘"을 재현할때 설명하도록합니다.


3.스포트라이트

스포트라이트는 방향성을 갖고 일정범위를 ㅂ비춰내는 빛을 말합니다. 대표적으로 손전등, 천장에 달린 조명등이 있겠습니다. 포인트라이트와 은근히 겹치는 요소가 많습니다만, 명확하게도 스포트라이트는 팔방향중 하나정도만을 비추는 반면, 포인트라이트는 모든 방향을 포괄적으로 비춘다는 점에서 서로 다릅니다.  사우론의 눈(...), 등대불빛, 전조등, 차량헤드라이트 정도가 스포트라이트겠군요.

8.jpg


기이하게 생겼습니다. 스포트라이트는 한 방향으로 내리쬐는 빛이고, 상단의 사진처럼 위에서 아래로, 혹은 오른쪽에서 왼쪽으로, 혹은 플레이어가 움직이는 액터의 방향으로 비추는 것 등이 가능합니다만 일정범위를 초과하면 빛이 약해지다가 소멸하므로 태양광같은 거대한 빛은 표현할 수 없습니다. 스포트라이트는 포인트라이트나 디렉셔널라이트와는 판이하게 다른데, 옵션을 살펴보도록합시다. 공통적인 밝기와 빛의 색깔등은 생략했습니다.


  • Inner Cone Angle - 스포트라이트는 두개의 원뿔궤도로 구성된 빛의 모형입니다. 그중 Inner, 즉 내부의 원뿔을 의미합니다. 참고로 내부의 원뿔이 외부원뿔의 크기를 넘을 수는 없기때문에 외부원뿔의 궤적량을 초과하면 외부원뿔의 크기역시 같이 늘어납니다. 해당 옵션은 빛을 받는 가시영역의 증감을 설정합니다. 크기가 클 수록 빛을 받는 영역이 상승합니다.
  • Outer Cone Angle - 외부원뿔입니다. 개별적인 효과는 딱히 없습니다만, 빛의 감쇠를 조절할 수 있습니다. 요컨대, 내부원뿔과 바깥원뿔은 그 크기가 다를 수밖에 없습니다. 내부원뿔의 부피는 외부원뿔의 부피를 넘어설 수 없고, 항상 이하상태를 유지해야하기때문에 부피값의 차이, 즉 내부원뿔과 외부원뿔의 궤도가 가진 부피의 차가 생길수밖에 없습니다. 그 부피의 차의 거리만큼 빛의 감쇠가 일어납니다. 다시말해, 내부원뿔과 외부원뿔의 궤적차에서는 빛이 점차 약해지고 강해지는 효과가 발생한다는 의미입니다!
  • Attenuation Radius - 이는 포인트라이트에서도 설명했던 부분입니다만, 괴팍하게도 스포트라이트에도 있습니다. 언뜻보면 말이 안됩니다. 해당 옵션역시 빛의 감쇠를 조절합니다만, 그렇게되면 Outer와 Inter Angle과의 설정이 겹칠수밖에 없습니다. 이건 정말 말로하기 애매한데, 여러 상호작용이 있겠지마는, 굉장히 단층적으로 구분해봅시다. 초등학교때의 각도기억을 되새김질하여, 두 직선을 이루는 각을 생각해봅시다. 편의상 예각으로 하고, 예각을 이루는 두 선을 직선, 즉 무한히 뻗어나가는 거대한 선이라고 정의합니다. 첫번째 직선을 A, 두번째 직선을 B라고 가정하면, 교차점에서부터 시작하여 A,B 35m지점에서 이뤄지는 각도와, A,B 5m지점에서 이뤄지는 각도는 서로 같습니다. 하지만 두 지점사이의 거리는 달라지죠. 요컨대, 외부원뿔과 내부원뿔의 부피차로 빚어지는 빛의 감쇠는 이 각도자체를 바꿔버리는 것이라고 볼 수 있습니다. 즉 두 직선이 이루는 각도를 늘리거나 줄여버린다는것이죠. 반면,  이 옵션은 그 길이를 늘렸다줄였다합니다. 다시말해서 외원뿔과 내원뿔의 끼인각의 크기는 같되, 내원뿔과 외원뿔 사이의 각을 이루는 거리가 달라진다는 의미입니다. 존나게 어렵습니다.


사진용량첨부가 2MB를 넘어서면 안되는 점때문에 남은 잔여강좌는 #2로 나누어 진행하겠습니다. #2는 바로 강좌 005번과 밀접한 관계가 있기때문에 당장 작성하지않고 내일 오후중으로 올릴생각입니다. 강좌 [UE4]004.광원(Lights)에 대해#2]에서 이어집니다.






















Who's Todd

profile

List of Articles
분류 제목 글쓴이 날짜 조회 수
유니티3D "아이폰과 안드로이드 개발(빌드)에 대해서" - 스마트폰(앱스토어)관련 2 소프트아이스크림 2012.09.05 7077
유니티3D [기초강의] 1. 인터페이스 5 아방스 2012.09.01 6177
유니티3D [중급강의] 7. GUIText, SendMessage (2/2) 아방스 2012.09.07 6143
언리얼엔진 [UE4]001.언리얼엔진에 대해서 알아보자! 2 file Todd 2015.01.23 4914
유니티3D [중급강의] 5.Instantiate 1 아방스 2012.09.07 4902
유니티3D [중급강의] 6.Instantiate 2 아방스 2012.09.07 4716
유니티3D [중급강의] 3.Collision, Destroy 아방스 2012.09.05 4660
유니티3D [중급강의] 7. GUIText, SendMessage (1/2) 아방스 2012.09.07 4567
유니티3D [기초강의] 4. Light 아방스 2012.09.01 4554
유니티3D [중급강의] 4.Trigger Collider (2/2) 아방스 2012.09.05 4396
유니티3D [중급강의] 4.Trigger Collider (1/2) 아방스 2012.09.05 4360
유니티3D [중급강의] 2.Rigidbody, Move , Collision (3/3) 아방스 2012.09.05 4118
유니티3D [중급강의] 1.iPhone Build (1/2) 아방스 2012.09.05 4082
유니티3D [중급강의] 2.Rigidbody, Move , Collision (2/3) 아방스 2012.09.05 4046
유니티3D [기초강의] 5. Game Object 1 아방스 2012.09.01 4037
유니티3D [기초강의] 7. Materials, Texture(2/2) 아방스 2012.09.01 4011
유니티3D [기초강의] 8. Prefabs 1 아방스 2012.09.01 3994
유니티3D [중급강의] 1.iPhone Build (2/2) 아방스 2012.09.05 3991
유니티3D [기초강의] 6. Materials, Texture(1/2) 아방스 2012.09.01 3879
유니티3D [중급강의] 2.Rigidbody, Move , Collision (1/3) 아방스 2012.09.05 3874
Board Pagination Prev 1 2 Next
/ 2