기본 콘텐츠로 건너뛰기

250326 머티리얼, 환경

머티리얼

물리 기반 렌더링 PBR : 표면이 현실의 라이트 방식을 모방한다라는 뜻.

머티리얼이 추구하는 것이 현실에 존재하는 다양한 물체의 표면의 형태를 따라하기 때문에 이렇게 부름.

어떤 식으로 설정하는 가는 여기

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/physically-based-materials-in-unreal-engine


Material Domain

머티리얼의 용도 결정

Base Color : 기본 색/텍스쳐

Metalic : 금속성.

비금속 0.

금속 1.

중간 값은 사용하지 않는 게 좋음.

Specular : 빛 반사의 정도.

반사X 0.

전부 반사 1.

일반적으로 0.5.

Roughness : 거침의 정도

부드럽다 (거울) : 0

거칠다(무광) : 1

Emissive Color : 표면 발광.

Shading Model의 설정을 Unlit으로 하는 게 좋다.

Multiply를 통해서 밝기의 강도를 조절 할 수 있다.


Opacity : 투명도
Blend Mode를 Translucent로 설정한다.


Normal : 굴곡 등의 표현으로
표면이 튀어나온 듯한 착시효과.



World Position Offset
월드의 좌표를 조작할 수 있음.
현재의 위치가 바뀌는 것이 아니라 보이는 위치만 바뀜.

Blend Mode

나와 다른 오브젝트가 겹쳤을 때 어떤 식으로 처리할 것인가

Opaque 불투명

Translucent 반투명 : 투명도 조절 가능


Translucent
정교한 투명도를 표현하고 싶을 때 사용. 비용이 비쌈.
Opacity Mask
투명 불투명을 반올림 해서 0과 1로만 표현함. 비용이 저렴.

Additive
더할 수록 밝아짐


Modulate
더할 수록 어두워짐

Two sided
양면. 비용이 커서 비활성화 되어 있음.

머티리얼 인스턴스

베이스가 될 머티리얼을 하나 만든 뒤에, Base Color에 오른쪽 버튼을 눌러 Parameter로 변환한다. 
인스턴스는 기존에 만든 머리얼에 영향을 받아서, 부모가 되는 것들의 파라미터를 추가할 경우 인스턴스에서 얼마든지 설정 할 수 있다.

에디터에서 베이스 머티리얼의 오른쪽 버튼을 누르면 머티리얼 인스턴스를 만들 수 있다.

머티리얼 인스턴스는 기본 머티리얼보다 저렴함.

따라서 앞으로 만들 머티리얼은 머티리얼 인스턴스로 만들어야 함.


Shading Model

빛을 받았을 때에 대한 처리 방식

Lit : 영향 O

Unlit :  영향 X




단축키

1 + LMB : Integer 1개 : RGB값이 전부 적용됨.

2 + LMB : Integer 2개 : R, G 값

3 + LMB : Integer 3개 : R, G, B 값

4 + LMB : Integer 4개 : R, G, B, A 값

T + LMB : 텍스쳐



머티리얼 적용

뷰포트의 액터에 머티리얼을 끌어 넣을 수 있지만 실수 하기 쉬우므로,

액터의 Detail창의 Materials 에서 찾아 넣는 것이 좋다.


Create Dynamic Material Instance
target이 되는 Actor를 설정하고, Source Material을 설정하면, 해당 머티리얼을 액터에 적용한다.
Set Vector Parameter Value
머티리얼 인스턴스의 벡터 값들 : Color, Normal 등을 설정한다.
Set Scalar Parameter Value
머티리얼 인스턴스의 스칼라 값들 : Metalic, Roughness, 등을 설정한다.

Parameter Name을 가져올 때는 가져오고 싶은 것에 오른쪽 클릭 후 CopyDisplayName을 통해 복사 붙여넣기 해서 타이핑 실수를 안할 수 있다.


For each Loop


For Loop
for loop 의 First Index 부터 1씩 더하여 Last Index만큼 실행한다.
Actor Location을 가져오고 Vector를 만들어 z값에 100*index 만큼 더하고 생성한다.

첫번째 루프에서 X좌표값이 0, 100, 200, ~ 900까지 증가한다. 다음 루프 Y좌표가 마찬가지로 100씩 증가하고, 그 다음 루 Z좌표도 100이 증가한다. 결과로는 10x10x10의 형태로 물체가 생성된다.


Is Valid
해당 오브젝트가 유효한지 판단한다.


Environment

ExponentialHeightFog
안개
location값 어느 정도 높이가 높으면 안개가 없는 것이 현실적이므로 존재한다.
density : 맵 전체의 안개 낀 정도
Height Falloff :  거리에 따른 안개가 감쇠하는 정도
Start Distance : 내 위치로 부터 어디서 부터 안개가 존재하게 할 것인지

SkyAtmosphere
대기
Ground Radius : 6360 지구 반지름.
Rayleigh scattering : 대기. 입자 산란 정도 붉어짐
Mie scattering : 먼지. 회색
Absorption Scale : 오존. 보라색- 파란색이됨

Directional Light
직접광
Intensity : 강도
Source Angle : 낮추면 그림자가 선명해짐, 높이면 연해짐.

Sky Light
간접광

Volumetric Cloud
구름

Rendering - Visible : 내 환경에 불필요 하다면 Visible 체크를 해제할 수 있다.

일반적으로 지구의 환경을 다룬다면 많은 것을 건드릴 필요가 없다.
주로 시간의 변화를 줄 수 있는 Directional Light의 Y각도를 바꿀 수 있다.

Ctrl + L : Ctrl 누른 상태로 마우스 이동시, Directional Light의 위치를 이동할 수 있음.


🟩🟦🔸참고

머티리얼 에디터 UI 설명
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/unreal-engine-material-editor-ui

물리 기반 머티리얼(PBR)
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/physically-based-materials-in-unreal-engine

Constant 머티리얼 표현식
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/constant-material-expressions-in-unreal-engine

머티리얼 표현식
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/unreal-engine-material-expressions-reference

수학 머티리얼 표현식
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/math-material-expressions-in-unreal-engine

머티리얼 블렌드 모드
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/material-blend-modes-in-unreal-engine

흐름 제어
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/flow-control-in-unreal-engine

Exponential Height Fog
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/exponential-height-fog-in-unreal-engine?application_version=5.5

SkyAtmosphere
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/sky-atmosphere-component-in-unreal-engine

이 블로그의 인기 게시물

250523 PCG 2

PCG Building Volume Sampler를 사용할 경우 Voxel Size를 맞추어주자. 2m길이를 Transform Points로 Offset을 이동시켜 Difference를 통해 메쉬를 생성한다. 사용시에 Pivot의 위치가 중앙이 아니면 제대로 표현되지 않을 것이다. PCG Landscape Landscape 생성후 PCG Volume 생성. Get Landscape Data - Surface Sampler 안보인다면 Generate Surface Sampler 일반 그리드 패턴으로 서피스 데이터에 포인트를 샘플링합니다. 이 노드에는 다음과 같은 옵션이 있습니다. 포인트 규모(Point Extents) : 서피스의 기본 그리드 셀 크기를 정의합니다. 여유(Looseness) : 변형 가능한 셀 크기를 정의합니다. 실제로 셀 크기는 포인트 규모 * (1 + 여유)입니다. 제곱미터당 포인트(Points Per Square Meter) : 유지되는 셀의 비율을 계산합니다. 이 프로퍼티는 그리드가 클 때 과잉을 제한합니다. Looseness : 기본 1. 0일경우 Extent의 길이 만큼, 1일경우 2배가 됨.  Attribute Filter를 생성하고, Material에 해당하는 Layer를 찾아서 이름을 넣어준다. Type을 Float로 하고 Float Value를 설정하면, 해당 머티리얼이 색칠된 정도 0~1에서 Operator에 의해 >(초과) 0.6초과 일 경우만 생성되게 할 수 있다. 값을 1로 하고 Equal을 이용해서 1인 경우만 생성되게 하는 것도 가능하다. plugin Water body lake를 넣으면, 이또한 Spline이라는 것을 알 수 있다. 따라서 Get Spline Data-Spline Sampler를 통해 사용할 수 있다. GetActorData와 Difference를 통해서 Lake내부를 제거해주기 PCG Mesh Mesh Sampler를 쓰기위해 Get Actor Property를 이용하면, 해당 액터가 ...

250604 저장불러오기

SaveGame 블루프린트 생성 Game Instance 생성, Init 오버라이드 AC_Inventory Save Load

250609 온라인

 Online Subsystem외에도 어느 서버를 사용할 것인지에 따라 플러그인을 추가해주어야 한다. 공통으로 OnlineSubsystem으로 시작한다. 헤더파일 CPP파일 cmd에서 Ipconfig를 통해 Ipv4를 넣어주면 된다. DefaultEngine.ini 수정 https://dev.epicgames.com/documentation/ko-kr/unreal-engine/online-subsystem-steam-interface-in-unreal-engine#%EC%99%84%EC%84%B1%EC%84%B8%ED%8C%85 [/Script/Engine.GameEngine] +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver") [OnlineSubsystem] DefaultPlatformService=Steam [OnlineSubsystemSteam] bEnabled=true SteamDevAppId=480 bInitServerOnclient=true [/Script/OnlineSubsystemSteam.SteamNetDriver] NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection" 전용 서버 없이 클라이언트가 서버를 만들 수 있게 함. 호스팅 Binaries와 Saved파일을 한번 제거해주고, Generate해주기 헤더파일 헤더파일 CPP 파일 CreateSessionComplete, FindSessionsComplete, JoinSessionComplete 생성자 CreateGameSession 세션을 생성하고 존재하면 제거한다. OnCreateSessionComplete ServerTrav...