창 - 프리뷰 씬 세팅 체크
그 아래의 Environment cube map을 바꿔 기존 배경을 다른 배경으로 바꿔서 확인해 볼 수 있다.
'개발 > 언리얼' 카테고리의 다른 글
UE5 - Day/Night Cycle 1 (0) | 2022.03.14 |
---|---|
RayMarching - 1. 기본 구형 구현 (0) | 2022.01.08 |
창 - 프리뷰 씬 세팅 체크
그 아래의 Environment cube map을 바꿔 기존 배경을 다른 배경으로 바꿔서 확인해 볼 수 있다.
UE5 - Day/Night Cycle 1 (0) | 2022.03.14 |
---|---|
RayMarching - 1. 기본 구형 구현 (0) | 2022.01.08 |
언리얼 에디터에서 레벨 블루프린트를 열어서
해의 이동 속도를 정할 SunSpeed라는 float 변수를 만든다.
이후 위와 같이 이벤트 그래프를 수정하면 Update Sun Direction에서 에러가 발생한다.
해당 부분은 엔진 콘텐츠 폴더에서 불러온 BP_Sky_Sphere의 에디터 디테일 부분의 Directional light Actor에 아무값도 설정 안된 것을 에디터 내에서 사용되고있는 DirectionalLight를 할당 시켜주면 해결된다.
게임 플레이 시 낮과 밤, 해질녘이 나오면서 자연스럽게 변하는 하늘을 볼 수 있다.
UE5 - Niagara 프리뷰 배경 지우기 (0) | 2022.03.14 |
---|---|
RayMarching - 1. 기본 구형 구현 (0) | 2022.01.08 |
RayMarching 구현, 이해를 위해 포스팅
Material 생성 및 코딩
custom 표현 코드
float distance = 0; // 초기 거리
float Col = 0; // 기본 색상
float3 pos = WorldPosition - ObjPos; // 카메라 위치는 0
for(int i = 0; i < MaxSteps; i++)
{
float distance = length(pos) - Radius; //SDF(구 거리 함수)
if (distance > 400) //거리함수 계산값이 400초과
{
Col = float4(0, 0, 0, 0); //검정색으로 설정
break;
}
if ( distance < 0.01) //거리함수 계산값이 0.01미만
{
Col = 1; //흰색으로 설정
break;
}
pos += CameraVector * distance; //새로운 위치에서 다시 계산
}
return Col; //결과값을 엔진으로 반환
이후 내부에서 제대로 선언되지 않은 변수를 입력 값으로 받아야되니 custom의 입력 파라미터를 추가한다.
CameraVector (카메라 벡터)
MaxSteps (최대 반복 횟수)
Radius (반지름)
WorldPosition (월드 내 포지션)
ObjPos (오브젝트 포지션)
5개 추가한다.
이후 Blend Mode와 Shading Model을 수정해야함
Blend Mode = Opacue
Shading Model = Unlit
설정 완료하고 에러가 발생하는지 확인
에러가 안뜬다면 적용
syntax error가 뜬다면 대부분 세미콜론을 빼먹었거나 오타로 인한 에러일 가능성이 높으니 참고할 것
완성된 코드 사진
이후 머터리얼 인스턴스를 만들어서 Radius를 바꿔가면서 구 형태를 확인한다.
추가 수정
자유롭게 색상을 변경하기 위해 약간의 수정
Blend Mode를 Masked로 변경하고, ConstantVector4 생성
Vec4에서 RGB값을 1~0 사이로 조정해서 원하는 색을 만든 뒤, 이미시브 컬러에 연결
기존의 흰 구는 설정한 색상으로 바뀜
기존 커스텀 노드는 오퍼시티로 이동 시킨다.
그럼 내부의 구만 남게되는데, 이는 opacity로 변환된 Col값들이 1은 불투명도 100%, 0은 불투명도 0%로 처리하기에 일어나는 현상임
수정한 코드
** 추가해야할 것
1. CamVec * -1은 왜 필요한가?
(해보니까 -0.5나 -0.1까지는 되던데 더 줄이면 아예 사라져버림, 양수값은 인식도 못함)
아는 사람은 알려주길 희망함
2. Blend Mode 중 Masked는 뭐고 Opacue는 뭔지, 왜 raymarching에서 필요한지
블렌드 모드는 머터리얼 결과물을 어떻게 블렌딩할지 정하는 것
opacue는 불투명
Masked는 내부에서 어디는 차있고 어디는 비어있는 식의 결과물을 뽑을 때 효과적인 블렌딩 모드라함
세세한 내용은 아래 레퍼런스 링크 참조
https://docs.unrealengine.com/4.27/ko/RenderingAndGraphics/Materials/MaterialProperties/BlendModes/
머티리얼 블렌드 모드
머티리얼 블렌드 모드와 그것이 머티리얼의 렌더링에 어떻게 영향을 끼치는가에 대한 개요입니다.
docs.unrealengine.com
3. Shading Model 은 왜 Unlit으로 하는지
unlit은 라이팅 제외라는 의미, 컬러에 이미시브만 출력하기 떄문에 불이나 빛을 내는 오브젝트에 적합하다함.
다른 상세한 내용은 아래 링크 참조
셰이딩 모델
머티리얼 셰이딩 모델 프로퍼티 옵션에 대한 분석입니다.
docs.unrealengine.com
참고 자료
RayMarching 관련 언어 및 개념 정의 참고 자료
https://rito15.github.io/posts/ray-marching/
레이 마칭(Ray Marching)
레이 마칭이란?
rito15.github.io
RayMarching 구 구현 예제
https://m.blog.naver.com/trashia/222017755988
[연재] First Raymarching Shader for UE4
#3 Hlsl with custom node (UE4) #Raymarching for artists #UE4 이번 시간에는 저번 시간에 이어 C...
blog.naver.com
UE5 - Niagara 프리뷰 배경 지우기 (0) | 2022.03.14 |
---|---|
UE5 - Day/Night Cycle 1 (0) | 2022.03.14 |