언리얼 5

231017 랜드스케이프

슬뷔 2023. 10. 17. 14:39

머티리얼펑션 MTF 

=> 점점 블루프린트가 길어져서 function 으로 만들어준다.

function 화를 하면 아래와 같이 노드를 정리하여? 표현할 수 있다.

* 현재 레이어를 2개만 연결해도 이미 샘플러가 8개가 사용되고 있다.. (레이어 1개당 4개를 배치해서)

레이어를 2개 더 추가하면 총 16개여서 샘플러가 제대로 동작하지 않을 수 있다.

그래서 샘플러를 Shared 로 변경해준다! 

 

머티리얼 -> 머티리얼 파라미터 컬렉션

* Roughness 

Roughness (러프니스) 입력은 말 그대로 머티리얼 표면의 거칠고 부드러운 정도를 제어한다.

거친 재질에 반사된 빛은 부드러운 재질보다 여러 방향으로 퍼지므로, 리플렉션이 얼마나 희미하거나 선명한지, 아니면 스페큘러 하이라이트가 얼마나 퍼져있는지 모여있는지로 확인된다.

러프니스가 0 인(부드러운) 경우 거울 반사이며, 1 인(거친) 경우 완전히 무광 또는 난반사(diffuse) 이다.

 

메인 HUD 에서 슬라이더 설정

#include "../Header/global.h"

#include "Components/Slider.h"
#include <Engine/Classes/Materials/MaterialParameterCollection.h>
#include <Engine/Classes/Materials/MaterialParameterCollectionInstance.h>

UCLASS()
class UNREAL_3TH_API UMainHUD_Base : public UUserWidget
{
	GENERATED_BODY()
	
private:
	USlider*								m_Slider;

	UMaterialParameterCollection*			m_MPC;
	UMaterialParameterCollectionInstance*	m_MPC_Inst;

public:
	UFUNCTION()
	void SliderValueChange(float _f);
};
#include "MainHUD_Base.h"

void UMainHUD_Base::NativeConstruct()
{
	Super::NativeConstruct();

	m_Slider = Cast<USlider>(GetWidgetFromName(FName("Slider")));
	if (!IsValid(m_Slider))
	{
		LOG(LogTemp, Error, TEXT("Slider 위젯 못 찾음"));
	}
	else
	{
		m_Slider->OnValueChanged.AddDynamic(this, &UMainHUD_Base::SliderValueChange);
	}


	m_MPC = LoadObject<UMaterialParameterCollection>(nullptr, TEXT("/Script/Engine.MaterialParameterCollection'/Game/Landscape/MPC_World.MPC_World'"));
	m_MPC_Inst = GetWorld()->GetParameterCollectionInstance(m_MPC);
}

void UMainHUD_Base::SliderValueChange(float _f)
{
	m_MPC_Inst->SetScalarParameterValue(TEXT("TileingScale"), _f);
}


폴리지모드

https://docs.unrealengine.com/5.0/ko/foliage-mode-in-unreal-engine/

 

폴리지 모드

다른 지오메트리의 표면에 스태틱 메시 또는 액터 폴리지를 렌더링하여 그라운드 커버 이펙트를 연출하는 방법

docs.unrealengine.com

폴리지 설치 -> 좌측 클릭

폴리지 제거 -> 쉬프트 + 좌측 클릭

페인트 밀도 -> 브러쉬 크기 안에 어느 정도의 밀도로 폴리지를 채울 것인지

 

브러시 옵션

-> 페인트 브러시 내 스태틱 메시의 인스턴스 수와 간격을 결정한다.

1번 폴리지 페인트 밀도 1

2번 폴리지 페인트 밀도 0.07

 

페인팅 옵션

-> 폴리지 인스턴스가 이 밀도로 배치되며, 유닛 면적 1000x1000당 인스턴스 수로 지정된다.

1번 폴리지 밀도 / 1Kuu 100

2번  폴리지 밀도 / 1Kuu 8500

https://dev.epicgames.com/documentation/ko-kr/uefn/foliage-mode-in-unreal-editor-for-fortnite

 

폴리지 모드

폴리지 모드를 사용하여 멋진 랜드스케이프를 빠르게 제작하는 방법을 살펴봅니다.

dev.epicgames.com

LOD (Level of Detail)

-> 화면 크기에 따라 디테일의 정도를 다르게 설정할 수 있다.

 

LOD 0 -> 디테일이 가장 많이 있다

LOD 2 -> 디테일이 가장 적게 있다

 

LOD Auto 로 설정하고, 커스텀을 체크하면 수동으로 화면 크기에 따른 디테일의 정도를 다르게 설정할 수 있다.

LOD 0 의 설정값인 0.7 에서 LOD 2 의 설정값인 0.2 로 갈수록 디테일이 적어짐을 확인할 수 있다.

 

제외 랜드스케이프 레이어

-> 폴리지 배치를 원하지 않는 레이어에는 폴리지가 배치안되도록 설정할 수 있다.

 

배치

노말에 정렬

-> 폴리지 인스턴스가 페인트된 표면의 노멀과 일치하도록 각도를 수직에서 멀어지게 조정할지 여부입니다. '노멀에 정렬(Align to Normal)'이 체크되어 있고 '랜덤 요(Random Yaw)'가 체크되어 있지 않은 경우 인스턴스는 회전하여 +X 축이 아래쪽 경사를 가리키게 된다.

좌 : 노말 정렬 적용 O / 우 : 노말 정렬 적용 X


언덕에 Nav 매쉬 설치하기.. (집가서)

https://mingyu0403.tistory.com/251

 

[Unreal] 네비게이션 메쉬 설정하기 (Nav Mesh / Nav Link Proxy)

언리얼 문서 docs.unrealengine.com/ko/Resources/ContentExamples/NavMesh/index.html 내비메시 콘텐츠 예제 Navmesh 콘텐츠 예제에 제공된 샘플에 대한 개요입니다. docs.unrealengine.com 네비 메쉬가 커버하는 영역 생성

mingyu0403.tistory.com