인디에서 언리얼이랑 유니티 때깔이 가장 큰 차이를 보이는건 사실 언리얼은 기본세팅이 어느정도 되어있기 때문임.
유니티는 기본세팅이 하나도 없고, 그냥 하나하나 전부 추가해야되고.
그래서 몇년동안 유니티를 다뤄본 아트 아니면 기능들을 제대로 쓰질 못함.
PC기반으로 때깔을 올리기 위해 해야되는 기본적인 것들을 법을 공유해봄.
뉴비거나 비아티스트 기준이고, 이미 유니티에서 어느정도 때깔을 낼수있는 경력자는 볼필요 없음.
(편의상 255로 변환된 숫치값은 사용하지 않음...프로그램상에서 0은 블랙이고 1이 화이트임)
1.매테리얼(비아티스트는 이부분은 볼필요 없을듯?...뭐 보고 아트팀한테 이렇게 해야된다고 시키는것도 나쁘지 않긴 함.) 유니티 기본 매테리얼기준
알베도>기본색상
메탈릭>텍스쳐의 R채널을 가져와서 사용. 금속,비금속분류하는 역할.
대부분의 경우 0과 1로 금속과 비금속을 구분짓는데 사용함. 중간값은 몇몇 특별한경우 아니면 사용하지 않음.(ex.몬헌은 역전몬스터에 중간값의 메탈릭을 사용해서 일반몬스터보다 더 쌔보이는 느낌을 줌.)
수치값이 기록된 텍스쳐니 임포트 옵션에서 SRGB 체크 해제해야됨.
스무스니스> 설정에따라 메탈릭이나 알베도의 알파값을 가져와서 사용..1이 빤질빤질한제질, 0이 거친제질...1이나 0에 해당하는 질감은 현실에 존재하지 않으니 왠만하면 피하는게 좋음.
많이 실수하는게 여기다 러프니스맵을 그대로 넣는건데 러프니스는 1이 거친제질이고 0이 빤질빤질한 제질임...
포토샾 같은데서 반전시키던지, 임포트 옵션에서 RGB전부 1-R,1-G,1-B로 바꾸던지 해서 반전시켜야 제대로나옴...
약한 웨더링(물자국,지문자국,먼지등)은 다른 텍스쳐에 손대지말고 여기에서 디테일을 넣어주는게 이쁘게나옴..
수치값이 기록된 텍스쳐니 임포트 옵션에서 SRGB 체크 해제해야됨.
노말> 하이폴과 로폴간의 노말벡터(XYZ)차이를 텍스쳐(RGB)에 기록해놓은 맵. 베이스 메쉬의 노말에 대응하는거라 메쉬를 함부로 변경하면 퀼리티가 확 떨어짐..
이것도 많이 실수하는게 그린채널인데, 다이렉트 기반이랑 오픈지엘 기반의 그린채널 처리 방식이 반대임.
확인하고 반대로되있으면 임포트 옵션에서 1-G로 뒤집어줘야됨..특히 언리얼이랑 반대라 엔진간에 애셋 옮기는경우 반드시 뒤집어줘야됨..
애셋을 넣었는데 애가 좀 쪼글쪼글하고 우울하고 빛이 이상하게 밑에서 올라오는거 같다..높은 확률로 노말 그린채널 뒤집힌거임...
다른확률은 메쉬 수정되서 노말 바뀐거...(이건 노말 새로 뽑지않으면 수정 불가)
참고로 유니티는 G채널이 위에서아래로 빛을 받는 느낌이고, 언리얼은 아래에서 위로 빛을 받는 느낌임.
헤이트맵> 시차맵핑인데 너무 구려서 잘 안씀.
앰비언트오클루젼> 텍스쳐의 G채널을 가져와서 사용. 그림자 내부에 물체와 물체가 서로 닿아있는 지점에 퍼져나가는 그림자를 추가해줌.
라이트를 받는부분은 적용되지 않아서 처음보면 이게뭔가 하는경우가 있는데 그림자 퀼리티를 확 잡아줌.
특히 입안이나 콧구멍 같은 안쪽으로 들어간 부위는 이거 없으면 리플랙션 받아서 싼티나게 반짝반짝 빛남...
가끔 커스텀 쉐이더 같은거 만들다가 이걸 0으로 설정하고 질문글 올라오는경우가 있는데 이거 0이면 빛받는 부분을 제외한 모든부분을 블랙으로 덮어버림...주의...
이미션> 그냥 빛나는부분...블룸때리면 반짝반짝 빛남..
기본적으로 알베도,메탈릭,스무스니스,앰비언트오클루젼은 PBR기반이면 다 쓰는게 좋음...애셋을 샀는데 없는게 있으면 뭐....아쉬운거고...애셋이 그렇지뭐...
2.리플랙션
또 많이들 하는 실수가 리플랙션프로브 세팅 안하는거임.
PBR개념이 주변의 환경값을 받아와서 랜더링을 하는건데, 환경값을 실시간으로 받아오면 무거우니 베이킹해놔야됨.
이걸 하는게 리플랙션 프로브임...PBR에서 이건 무조건 있어야됨...이걸 세팅 안하고 기본값(스카이박스로 되어있음)그대로 쓰니 게임들이 다 시퍼런 하늘만 반사해서 퍼렇게 떠있는거임.
사용법은 간단함...리플랙션 프로브 씬에다 놓고 영역 설정하고 베이킹 딸깍 하면됨.(라이트 베이킹시 기본적으로 같이 베이킹됨)
빛을 저장해야되니 HDR로 베이킹할것. 해상도는 굳이 높을필요 없음.
방같이 사방이 막힌 공간이면 BoxProject를 켜고 공간크기에 영역을 딱 맞추면 거의 완벽하게 딱 맞는 반사를 얻을수있음.
형태가 사각형이니 한개만 설치하는거 아니고 각 구역별로 하나씩 설치하는게 좋음.
오브젝트중 스태틱체크 하위메뉴에서 리플랙션스태틱으로 설정되있는 오브젝트만 베이킹함.
3.라이트 베이킹
유니티는 2번째 UV채널을 라이트맵에 강제로 사용함..이부분은 최대한 전부 붙여서 손으로 직접 UV를 펴주는것이 가장 좋고 이게 안되면 걍 메쉬 임포트할때 자동 돌려도됨.
(조각조각나면 그부분 그림자가 칼같이 잘림..손으로 안펴고 자동으로 돌리면 이게 심함)
리얼타임 GI는 왠만하면 쓰지말것(배필3때 사용했던 실시간 GI엔진인데 그냥 실시간라이트 쓰는것보다 무겁고 퀼리티도 떨어짐...역동적인 라이트변화가 없으면 티도 안남)
라이팅은 베이킹하는게 무조건 좋음. 스태틱 메쉬들의 퀼리티가 확 살아나고 무게는 확 줄어듬.
그리고 생각보다 라이트의 반경을 크게쓰고 강도도 높게 때려야됨. 그리고 후처리에서 노출값을 줄이는게 맞음.
라이트세팅에서 Mixed나 Baked로 되어있는 라이트만 베이킹이됨. 간단하게 움직이는 라이트는 RealTime, 고정된 라이트는 Baked나 Mixed 로 쓴다고 생각하면 됨.
그림자가 소프트쉐도우일 경우 베이키드 쉐도우 앵글이나 라디우스 항목이 생기는데 여기 값을 이용하면 멀어질수록 흐려지는 굉장히 멋진 그림자가 베이킹됨.(나는 0.1이나 0.2정도씀...너무 높으면 완전히 뭉게져서 그림자 자체가 없어짐)
단점은 베이킹된 라이트는 스펙큘러 하이라이트가 안생기고 리플렉션만 적용되서 좀 건조하거나 밋밋한 느낌이됨...
라이트베이킹은 옵션마다 특징이 다름
섭트랙티브 > 가장 가벼움. 세팅 상관없이 그냥 모든 라이트를 베이킹함, 다이나믹 오브젝트에는 디렉셔널 라이트의 가짜 그림자가 생김. 쉐도우 컬러에서 이 그림자 색깔을 베이킹된 그림자랑 맞춰주고 쓰면됨.
베이키드 인다이렉트> 라이트 속성이 믹스드로 되어있는 라이트의 간접광을 베이킹함.사실상 그냥 간접광이 추가된 실시간 라이트임.더 이뻐지는거 말곤 최적화에서는 큰의미 없음.
쉐도우마스크 > 가장많이 쓰는방식. 베이키드로 설정된 라이트는 그냥 베이킹하고 믹스드로 설정된 라이트는 간접광과 그림자를 분리해서 베이킹함.
분리된 그림자텍스쳐를 이용해서 쉐도우디스턴스 거리 안쪽은 실시간으로 돌리고 거리 바깥쪽은 분리된 그림자텍스쳐를 덮어서 베이킹된 라이트로돌림.
덕분에 옵션에서 그림자 거리를 짧게 설정해도 캐릭터 그림자만 사라지고 배경그림자는 베이킹된 데이터로 전환되기때문에 퀼리티와 최적화를 둘다 잡을수 있음.
제한사항은 그림자 텍스쳐를 RGBA에 각각 저장하기때문에 라이트맵 한장당 믹스드 라이트를 최대 4개이상 쓸수 없음.
4개이상일경우 유니티는 강제로 지가 판단하기에 중요도가 떨어지는 라이트들을 베이키드로 전환해서 베이킹함.
그외 라이팅 창에서 신경쓸거는 가능하면 무조건 GPU베이킹(베이킹이 10배정도 빠름),바운스 횟수 3회이상, 유닛퍼텍셀 세가지임
뭐 샘플갯수 같은건 그냥 노이즈 안보일정도로만 적당히 올리면됨...나같은경우는 대충 512 1024 때려넣음...
유닛퍼 텍셀은 1유닛당 들어갈 라이트맵 픽셀갯수임...이게 10이면 1미터당 10픽셀의 라이트맵이 구워지는거임. 대충 10정도 놓고 베이킹 반복하면서 수정하다가 만족스럽다 싶으면 올리면됨.
4.라이트프로브
스태틱 메쉬는 라이트를 베이킹하면 되는데 다이나믹은 베이킹이 안되잖아...그래서 이걸 설치해야됨.
설치하면 공8개짜리 박스가 하나 생김.
베이킹을 하면 이 공 하나하나 마다 주변 라이팅 정보가 저장되고 캐릭터같은 다이나믹오브젝트는 가장가까운 공3개의 값을 조합해서 라이트를 반영함.
에디트 누르고 공들을 복사해서 라이트가 크게 변화하는 곳에 가져다 깔아두면됨.뭐 그림자의 경계라던가...라이트의 색상이 변화하는 곳이라던가...
특히 그림자경계랑 안쪽,바깥쪽에 충분히 설치해줘야 그림자에 들어갈때 캐릭터가 맞춰서 어두워짐...안그러면 그림자에 들어가도 애가 혼자 밝게 빛나는 불상사가 생김
몇년전에 모바일에서 100개 정도 써도 큰문제 없다고 했으니 갯수는 크게 신경 안써도 될듯.
유니티6은 APV가 생겨서 그거 쓰면 언리얼처럼 자동으로 깔림
순서가 라이트베이킹 밑에있긴 한데 이거 설치하고 라이트베이킹을 해야 이것도 같이 베이킹됨
5.후처리(포스트프로세싱)...가장 중요한 부분임.
이제 거의 다옴.
일단 카메라에서 HDR무조건 켤것.(URP나 HDRP는 프로필에 있음)
HDR 안켜면 아무리 조명이나 이미션을 강하게 넣어도 1이상의 값이 잘려나가기 때문에 블룸같은게 제대로 먹지 않음.
그리고 후처리에서 무조건 넣어야되는게 3개있음.
Bloom이랑 ToneMapping..그리고 Color Adjustments
블룸은 Thredhold 값 0으로 쓰고 화면이 뭉게지지 않도록 강도는 0.1이하로 낮게 설정함..(언리얼이 이렇게하더라)
그리고 카메라에서 HDR 켜고 실제로 라이트강도나 이미션값을 높게 때려서 정확한 블룸효과를 얻는게 가장 때깔이 좋음.
Thredhold값 올려서 밝은영역잡고 블룸강도 올려서 세팅하는거 아님...이건 HDR없던 2000년대 초반에 쓰던 방식이고,
그래서 당연히 이렇게하면 플스2~3시절 게임같은 짜치는 퀼리티가 나옴...
그다음 카메라에서 HDR켰으면 무조건 들어가야되는게 톤매핑...
HDR을 켜면 빛나는 부분이 1이상의 색상값으로 저장되고 블룸의 이걸 빛의 강도로 판단해서 정확하고 이쁜 블룸이 들어가는데,문제는 모니터는 1이상의 값을 출력할수 없음...
그래서 블룸까지 다 계산한뒤 색상범위를 다시 0과1사이 값으로 꾸겨넣는게 톤맵핑임.
추천하는 방식은 ACES...
뭐 다른방식 써도 결국 좀 이뻐보이게 만지다 보면 결국 ACES비슷하게 되더라...
특별히 원하는 톤이 있지 않는이상은 ACES가 가장 좋은듯...
그리고 위에서 라이팅 쌔게때리고 노출값 조절하라고 했었는데 노출값은 칼라어드저스트먼츠 에서 Exposure 값 내리면됨.
HDRP나 빌트인은 자동노출 있어서 그거 넣으면 알아서 조절되는데, URP는 자동노출이 없어서 이렇게 수동으로 내려줘야된다.
아니면 애셋스토어 가서 URP용 Auto Exposure 를 사던가...
그리고 여기서 Contrast나 Saturation도 좀 올려주는게 좋음...PBR이 원래 좀 색감이나 채도가 떨어지게 나오기 때문에 만져줘야됨.
색수차 같은걸로 좀더 실사같은 느낌을 살릴수도 있고..
쉐도우,미들톤,하이라이트 같은걸로 영화나 드라마같은 톤도 낼수있고...
여기까지하면 이제 돈받고 팔만하다 싶은 때깔이 나올거임...
대충 필요한 기능들 설명까지 하니까 길어져서 존나 어려워보이는데 실제로 하는건 딸깍딸깍 몇번 하는 수준이라 별로 안어려움...
요약
매테리얼 세팅잘하고
리플랙션 프로브 설치하고
라이트프로브 설치하고
유닛퍼텍셀값 조절한다음 라이트베이킹한번 눌러주고
후처리에 블룸이랑 톤맵핑(ACES) 넣어주면
이제 돈받고 팔아도 꿀릴거 없겠다 싶은게 나옴.
딸깍 5번정도면 충분하네..
6. 추천애셋
-Bakery
베이킹하면 스펙큘러가 없어져서 캐릭터가 좀 밋밋해지는거 때문에 쓰기 시작한건데 , 라이트 베이킹에 있어서는 애셋스토어 탑인듯...
전용쉐이더 쓰면 베이킹된 라이트도 스펙큘러 하이라이트나 좀더 정확한 리플랙션이 생기고, 원래쓰던 쉐이더 있으면 쉐이더그래프 기반이라 병합하기도 그다지 어렵지 않음.
라이트 베이킹해서 프리팹으로 묶어서 여기저기 쓸수도 있고, 구간별로 나눠서 베이킹도 되고, 라이트프로브 보다 좋은 캐릭터용 볼륨 베이킹 시스템도 있고...
좀 복잡해서 메뉴얼이랑 쓰래드 보고 좀 공부좀 해야되긴 함.
그리고 엔비디아 기술 기반이라 라데온은 못씀..
VRchat에서 퀼리티 좋은 맵들은 다 이거쓰더라.
너무 길어서 잘못된 내용 있을수 있음...그럼 뭐 아쉬운거지..
진짜 뭔말인지 1도 모르겠는데 일단 개추 ㅋㅋ
추가로 메탈릭은 R채널, 앰비언트오클루젼은 G채널, 스무스니스는 A채널만 사용하니 이거 3개는 한장으로 묶어서 써도됨...이유는 모르겠는데 B채널은 안쓰더라... 역시 3개다 계산된 수치가 픽셀에 입력된 텍스쳐니 임포트 옵션에서 srgb는 꺼줘야됨...
정독했습니다.. 현업 TA신가여? 평소 궁금했던 부분 싹 뚫어주시네여 감사합니다
TA는 아닌데 TA가 없어서 땜빵 하느라....
무슨말인진 모르겠지만 우선 와드
캐릭터를 번쩍번쩍 잘 반사되게/흙이나 모래처럼 둔중한 느낌을 주게 만들 때에, 메탈릭은 저어어어어어정말 특별한 경우 아니면 0, 1 둘 중 하나 유지하고 스무스니스/러프니스에서 해결을 봐야 함. 각 사물의 러프니스/스무스니스 값은 구글에서 검색해보면 실제로 계측한 값이 나오기도 함
알려줘도 흡수하기 쉽지 않지 기술이랑 때깔 보는 안목 둘다 필요한데 희귀종족임 ㅋㅋ 글에 나온 기술 완벽하게 적용해도 아트센스가 있어야 pp 값들 0.01~0.1 씩 조절하면서 아웃풋이 예뻐짐 TA는 어렵다... - dc App
ACES 특유의 뿌연느낌이랑 강한 대비, 파티클/VFX 색상 왜곡이 맘에 안들어서 None으로 뒀었는데 이걸 감안하고 보완해서라도 ACES로 넘어가는게 낫나여?
ACES는 대충 영화같은 느낌의 기본값이라 생각하시면 되고요...실사 느낌은 보통 영화스럽게 만드는게 목적이니까요... 본인이 원하는 특별한 다른느낌이 있으면 Natural 쓰시고 좀 뿌연거 같다 싶으면 ColorAdjustments에서 Saturation 이랑 Contrast 적당히(한 15~20정도값) 주시면 잡힐겁니다..Natural이 ACES싫으면 직접 잡으라고 있는거거든요... 이러면 기본적인 톤 유지하면서 너무 밝아서 덩어리 지던것만 딱 잡아줘요... 이게 잡히면서 VFX같은것들 블룸같은게 좀 아쉬워진 느낌이라면 해당 효과의 Emission값을 좀더 올리시면 됩니다... 덩어리지는게 컨셉이면 그냥 톤맵핑을 안쓰셔도 되긴 합니다...어짜피 아트는 정답이 없고 이쁘면 장땡이거든요...
맵이 절차적 생성을 해서 베이킹을 할 수 없는 경우 어떻게 해봐야할까요 - dc App
HdriHaven << 여기가셔서 게임내 분위기랑 가장 어울리는 HDRI이미지 받은다음 텍스쳐임포트 옵션에서 Shape를 큐브로 설정하면 파노라마 큐브맵으로 쓸수 있습니다...이걸 스카이박스로 넣고 인바이런먼트 칼라랑 글로벌리플랙션을 스카이박스로 세팅하면 어느정도 보정이 될거구요...대신 이방법을 쓸경우 하늘이 필요하면 뒤집힌 커다란 스피어를 만들어서 별도로 넣어주셔야 됩니다. 아니면 인바이런먼트 칼라의 경우 그라데이션으로 써도 색만 잘 잡으면 어느정도 커버가 가능합니다.이경우는 글로벌 리플랙션도 커스텀으로 해서 아까받은 HDRI이미지 넣어주시면 되고 스카이박스는 따로 추가할 필요가 없습니다.
리플랙션 프로브는 커스텀으로 할경우 원하는 맵을 넣거나 큐브맵을 구워놓고 쓸수 있습니다. 각 지역별로 대표할만한 방이나 복도등을 미리 만들고 리플랙션 프로브를 설치해서 베이킹을 한다음 , 절차적 생성할때 중간중간 넣어주셔도 되고요.. 절차적 생성이 완전100%가 아니라 방이나 복도 프리팹을 구간별로 미리 만들어놓고 랜덤배치하는 방식이라면 리플랙션프로브를 커스텀으로 넣고 미리 베이킹해서 프리팹에 같이 묶어놔도 됩니다. 만약 구간별 프리팹을 미리 만들어놓고 랜덤배치하는 방식이면 Bakery애셋에 라이트맵과 볼륨을 구워서 프리팹으로 묶는 기능이 있는데 이부분을 쓸수 있을지 확인해 보시는것도 방법이 될수 있습니다.(구매전에 문서가 잘되있으니 먼저 확인해보세요)
지금 프로젝트야 specular 쓰긴하는데 만약 유니티로 좀 기깔난 거 만들고자 하면 Bakery 에셋 구비해두는게 좋음?
기깔난거를 언제 만들거냐에 따라서 달라짐... 라이트베이킹 하는 툴이라 실시간 GI를 부담없이 쓸 시점이면 필요 없어질 애셋이긴 함...얼마 안남은 느낌이긴 하지... 일단 지금당장은 유니티 기본 베이킹보단 좋아서 추천이긴 함...
단점은 기존 유니티방식 말고 좀 괜찮은 방식 쓸려면 전용 통합 쉐이더 쓰거나 쉐이더그래프에서 필요한것만 잘라와서 원래쓰던 쉐이더에 붙여야 되는데... 통합쉐이더다 보니 존나 복잡하게 되있어서 하나하나 잘라와서 수술하는데 하루 이상 걸림...
아 그리고 엔비디아쪽 기술 기반이라 라데온은 못씀...
너무 좋은글인데 삭제말고 계속 유지해주세요!
아직 2d게임을 하는중이라 필요없지만 이후를 위해 와드!
아.. 유니티 얘기였군.. 저는 언리얼 유저라서 ㄲㅂ
뭐 언리얼도 루멘이랑 니나이트쓸거 아니면 라이트매스 볼륨 깔고, 주요지점 마다 리플랙션 프로브 깔고, 라이트빌드하고, 포스트 프로세싱값 조절하는건 비슷하긴 합니다...
bloom 쓸 때마다 왜 이리 구려보이지 했는데 값 설정이 잘못된거였네 - dc App
Bakery 프리팹에 묶어서 불러오면 라이트맵 자동으로 들어감?