게임 씬 전체에 Post-Processing 효과(예: 색상 조정, 블룸, 그림자 강화 등)를 적용한다.
그래픽이 렌더링된 후, 이미지에 추가적인 효과를 적용하는 기술.
적용 가능한 주요 효과는 다음과 같다.
2D 텍스처가 3D 모델에 어떻게 매핑될지를 결정하는 좌표 체계.
U와 V는 텍스처의 가로(X) 및 세로(Y) 축을 의미하며, 일반적으로 0에서 1 사이의 값을 가짐.
UV 좌표는 3D 오브젝트의 각 정점(Vertex)에 할당됨.
UV를 이용하여 다양한 효과를 줄 수 있다.
텍스처 반복 및 타일링:
UV 좌표를 반복하여 텍스처를 타일 형태로 배치할 수 있습니다. 예를 들어, UV 좌표를 (2, 2)로 스케일링하면 텍스처가 두 배로 반복됩니다.
스크롤 효과:
UV 좌표를 일정 값만큼 이동시키면 텍스처가 움직이는 듯한 스크롤 효과를 만들 수 있습니다. 이를 통해 물이나 구름이 흐르는 듯한 애니메이션을 구현할 수 있습니다.
왜곡 효과:
UV 좌표를 왜곡하여 물결 모양이나 굴곡진 효과를 줄 수 있습니다. 예를 들어, 노이즈 텍스처나 Sine 함수를 사용해 UV 좌표를 약간씩 변형하면 텍스처가 일렁이는 것처럼 보일 수 있습니다.
다양한 텍스처 맵핑:
UV 좌표는 기본 텍스처 외에도 노멀 맵, 메탈릭 맵, 오클루전 맵 등 다양한 텍스처를 효과적으로 매핑하는 데 사용됩니다.
로코코로 모캡 해보려고 했는데 너무 시간 많이 잡아먹고
트러블 슈팅을 시간 안에 못할 것 같아서 포기.
일단 뼈대를 다 만들어놓고 이후에 고려해보자.
자막을 일일이 tmp로 따로 생성하고 타임라인에 별도의 트랙으로 만들어서 관리했는데 이게 best practice일지 궁금.
실제 게임 실행하면 타임라인 싱크 밀리는 문제
실제 게임 실행 시 프레임률이 낮아지거나 타임라인이 느리게 동기화될 수 있습니다. 타임라인 설정에서 Update Method를 Game Time에서 Unscaled Game Time으로 변경하여 시간 지연 문제를 줄일 수 있습니다
모든 버츄얼 카메라가 꺼져있을 때도 마지막으로 활성화됐던 버츄얼 카메라 기준으로 화면을 보여줌
그래서 아예 암실을 만들어보려고 했는데 이것도 안 통함
plane을 띄워서 기본 버츄얼 카메라를 두고 그걸 검은 화면인 셈 치려고 했는데 어색해서 안됨.
panel에 검정 머테리얼 가진 image component 붙인 뒤에 maskable 해제하고 가려야 하는 때만 panel active시켜서 해결
했다고 생각했는데 한 번 더 실행시키니까 다시 카메라가 튀어나옴
raw image로 검정 이미지 작은거 스케일 1000배 시켜서 아예 가리니까 그제서야 안 튀어나옴
질기다 질겨
원인을 파악하는게 불가능하니까 개답답하다
아래 강의 따라하다가 또 카메라가 튀어나와서 이것저것 해보다가
hiearchy에서 순서 변경해봤더니 다시 들어감
UI는 hiearchy에서의 순서도 관계가 있는거였나??
강의 따라하다가 설명도 없이 당연히 있다는 듯이 넘어간 게 중요한 거라 다 따라해도 적용이 안됨.
https://www.youtube.com/watch?v=yuq-M1Oh5mA
카메라 컴포넌트 붙어있는 오브젝트에 Post Process Layer 컴포넌트 추가
빈 게임 오브젝트 만들고 Post-process Volume 컴포넌트 추가
특정 영역에 닿고 있을때만 흑백 효과 넣고 싶으면 box collider 추가하면 되는데 난 조건 없이 필요한거니까 Is Global 체크
Post-process Volume에서 새 Profile 만든다. Color Grading 효과 추가한다.
Saturation을 -100으로 설정한다.
이거 다 했는데도 게임 화면이 흑백이 안되는데 어찌된 일이죠
Post Process Layer 컴포넌트를 추가한 카메라에서 Layer 설정이 Post-process Volume이 속한 레이어와 일치하는지 확인하세요.
예를 들어, Post-process Volume을 "PostProcessing"이라는 레이어에 배치했으면, 카메라의 Post Process Layer 컴포넌트에서도 Layer를 "PostProcessing"으로 설정해야 합니다.
-> 해봄. 안됨.
카메라의 Rendering 옵션에 Post-Processing이 활성화되어 있는지 확인하세요.
-> 해봄. 안됨.
ㅇㅋ 이 맵 애셋 뭔가 양념이 돼있어서 포스트 프로세싱이건 뭐건 다 마음대로 안되는 것 같음 일단 포스트 프로세싱 말고 셰이더로 해보기로
애니메이터 새로 만들어서 무한 걷기 애니메이션 만들고
타임라인에서 캐릭터 transform 직접 조절하려고 했더니 안된다고 해서
Empty Gameobject Parent 만들고 그거 transform 조절했더니 그건 됨.
아 근데 이렇게 하니까 설명하기 힘든 온갖 포지션 오류가 생기는데 좀 화나네
https://www.youtube.com/watch?v=jwXW7Q-Bbic
create > render texture
카메라 컴포넌트 > Output > Output Texture에 삽입
UI Canvas 생성 > RawImage 생성 > texture에 만들었던 render texture 삽입
RawImage > rect transform > 앵커 사각형 누르고 alt 누르고 가운데랑 우측 하단 클릭
render texture 수정
(여기까진 잘 됐다)
네가 무슨 렌더러 쓰고 있었는지 기억 안 나면
Project Settings > Graphics > Scriptable Render Pipeline Settings 안에 들어있는거 더블 클릭 > Renderer List에 있을 거다 (Foward Renderer 그딴거 없지만 일단 진행)
스트립트 만들고 https://github.com/Cyanilux/URP_BlitRenderFeature 여기서 Blit.cs 복붙해온 다음에 Render Features에서 추가
Create > Shader Graph > Blank Shader Graph, 만들어진 거 더블 클릭
-> Active Targets에 Universal 추가
-> Material을 Unlit로 바꾸기
-> UV 노드를 추가
-> 점 잡아끌고 Split 노드 추가
-> Split에서 G 잡아끌고 Multiply : A 추가
-> Out 잡아끌고 fraction 추가
-> Multiply - B - X 값 조절하면 나눠지는 정도 조절 가능
->'ScanningLines'라는 Float 변수를 추가
-> 잡아끌어서 화면에 놓은 뒤에 Multiply - B에 연결
-> Fraction - Output 잡아끌고 Step: Edge 추가
-> Multiply와 Fraction 노드 사이에 Add 노드 추가 > B 값 조절하면 움직이기 시작
time 노드 추가
-> time을 잡아끌어 multiply: A 노드 추가하며 연결
-> 'ScanningLinesSpeed'라는 Float 변수를 추가하고 값을 1로 설정
-> 잡아끌어 추가한 뒤 Time에 연결된 Multiply의 B에 연결
-> Multiply의 Out을 Add의 B에 연결
Step의 Out을 맨 처음 존재했던 Fragment의 Base Color에 연결
셰이더에 우클릭하고 Material을 만들기
이게 이 Material을 Blit에 연결하면
(ㅆㅂ 안되네. Forward Renderer 라는게 있어야 됐던거였는듯. 아쉽지만 못 써먹을듯.)