언리얼 엔진 러닝 키트를 불러와 이것저것 만져보며 레벨을 꾸몄다. 몇 가지 새롭게 알게된 것들을 정리해보았다.
스카이 애트머스피어 컴포넌트 Sky Atmosphere Component
하늘의 색깔을 바꾸는 다양한 방법을 알아보다가 Sky Atmosphere Component 에 대해 자세히 찾아보게 되었다.
처음에는 그냥 색깔 바꿔주는 건가 했는데, 실제 빛이 공기 중 산란하고 흡수되는 물리적인 상호작용을 반영하여 대기(atmosphere)를 구현하는 컴포넌트이다.
여러 가지 요소 중 래일리와 미에 스캐터링에 대해 알아보았다. Raleigh & Mie ... 포크음악 듀오 같다.
래일리 스캐터링 Raleigh Scattering
공기와 같이 아주 작은 입자에 의한 빛의 산란을 결정한다. 언리얼 엔진에서는 지구의 대기를 기본으로 상정하기에 Sky Atmospherer 컴포넌트를 추가했을 때 공기 중에서 가장 많이 산란되는 파란색이 래일리 스캐터링 색상으로 설정된다.
>> 위의 이미지처럼 핑크색 하늘을 만들고 싶어서 래일리 스캐터링 색상을 분홍색으로 바꿨다.
래일리 스캐터링 스케일
스캐터링 스케일을 올리는 것은 대기의 밀도가 높아지는 것으로 이해할 수 있다.
스케일이 높을 때, 래일리 스캐터링 색상의 광선은 우리 눈에 닿기까지 빽빽한 공기 입자들을 지나며 대부분 산란되기에, 눈에 와 닿는 광선(즉, 대기의 색상)은 보색에 점점 가까워진다.
이것이 노을이 붉은 이유이다. 태양 광선이 더 먼 거리를 지나며 (즉, 더 많은 공기 입자와 부딪히며) 파란색 광선이 대부분 흩어지고 우리 눈에는 그 반대 색인 붉은색 광선이 닿는다.
>> 이 설명을 읽고 래일리 스캐터링 색상이 푸른 상태에서 스케일을 올려보았는데, 대기의 색상이 붉게 변하기는 하지만 레벨을 비추는 빛의 밝기 또한 줄어든다.
>> 래일리 스캐터링 색상이 분홍색인 상태에서 스케일을 올리면 대기의 색상은 보색인 연두색이 된다.
미에 스캐터링 Mie Scattering
꽃가루, 미세먼지 등 비교적 큰 입자에 의한 빛의 산란과 흡수를 구현한다. 빛은 대부분 흡수되지만 산란되는 빛의 경우 조금 더 앞을 향해 산란한다는 것이 반영된다. 위의 이미지처럼 언리얼 엔진에서 미에 흡수 색상과 미에 스캐터링 색상이 프로퍼티로 구별되어 있는 것이 그 이유이다.
직관적으로 말하자면, 뿌옇게 보이는 현상이나 태양 주위에 생기는 헤일로 같은 것이 미에 스캐터링이다.
-
다른 사람의 프로젝트를 보니 SkyLight 의 색상을 변경해서 하늘과 레벨을 다른 색으로 꾸미신 분도 있었다.
여러가지 방법으로 분위기를 조성할 수 있겠군~!
-
머티리얼 수정하며 그래프 익숙해지기 + 블루프린트 강의 내용 복습하기
플랫폼 에셋의 자손 블루프린트 클래스를 만들어 윗부분에 radial disk 메시 컴포넌트를 추가하고 default sprite 머티리얼을 수정해 푸른색으로 빛나게 했다.
default sprite 머티리얼은 위와 같이 particle color 라는 인풋을 받아 설정되어 있었다.
자세히 살펴보니 RGB 값이 이미시브 컬러로, Alpha 값이 오퍼시티로 입력되길래
Constant4Vector를 생성해 RGBA 값을 색상휠로 설정하고 각각 다시 연결하여 위와 같이 수정했다.
이미시브 컬러가 어떻게 결정되는가 보면,
입력한 RGB 값에 0.15를 곱한 값이 A, 원래의 값이 B로 들어가 Lerp (= linear interpolate) 된 게 이미시브 컬러로 들어간다.
그래서 이 머티리얼이 발산하는 빛이 그래디에이션되는 거겠지?
오파시티의 경우... UV 텍스쳐 좌표와 0.5라는 값이 sphere mask 를 통과해 내가 지정한 알파값과 곱해지는데...
전혀 모르겠음...ㅋ
... 자세히 모르지만 대충 눈치껏하면 할 수 있을지도 모른다!!는 자신감이 생겼다. 물론 점점 더 자세히 알려고 노력해야겠지~!
그리고 위아래로 움직이는 텍스트 렌더 액터의 서브클래스도 만들어 배치했다.
-
텍스쳐 수정 적용...하려다 마땅한 방법을 못찾고 꼼수 생각해 냄
레벨에 다양한 섬들이 있고, 그 섬 윗면의 색깔을 바꾸고 싶었다.
머티리얼 그래프에 들어가 베이스컬러를 바꾸면 되겠지 안일하게 생각했는데...
이번에는 눈치가 안 통한다.
머티리얼 어트리뷰트를 결정하는 로직이 구현된 것 같은데...
BaseColor_Texture 라고 되어 있는 노드를 더블클릭해보니 콘텐츠 드로어에 이런저런 텍스쳐 파일이 들어있는 폴더가 등장.
맨 오른쪽 파일이 Grass_Tile 인가보다! png로 익스포트 해서 포토샵에서 색상을 변경했는데...
이제 머티리얼 함수가 이 텍스쳐를 대신 사용하게 만들어야 될텐데 어떻게 하는건지 전혀 모른다.
그래서 생각해낸 꼼수는...
원래의 텍스쳐 에셋을 삭제하면 이 파일을 대신 레퍼런스하도록 업데이트해주는 기능이 있어서 그렇게 적용시켰다.
이 부분도 다음에 더 자세히 알아보도록 하자.
'언리얼_엔진_게임개발_공부 > 언리얼 블루프린트' 카테고리의 다른 글
[언리얼/블루프린트] 플레이어 캐릭터 클래스 (0) | 2024.12.19 |
---|---|
[언리얼/블루프린트] 애니메이션 & 사운드 - 강의 메모 (1) | 2024.12.18 |
[언리얼/블루프린트] 구구단, 슈팅 게임, 가위바위보 로직 구현 (0) | 2024.12.18 |
[언리얼/블루프린트] Enhanced Input 향상된 입력 (1) | 2024.12.16 |
[언리얼/블루프린트] 언리얼 엔진 둘러보기 & 블루프린트 입문 (1) | 2024.12.16 |