전체 글 169

231016 랜드스케이프

Landscape 레벨 생성 액터 배치 DirectionalLight 추가 SkyAtmosphere 추가 랜드스케이프 모드로 변경 * 지형을 구성하고 있는 것에서 제일 작은 사각형 하나를 쿼드라고 부른다. * 멀리서 보면 조금 더 두꺼운 사각형을 섹션이라 부른다 * 섹션들이 모여서 컴포넌트가 된다 https://docs.unrealengine.com/5.0/ko/landscape-technical-guide-in-unreal-engine/ 랜드스케이프 테크니컬 가이드 랜드스케이프 야외 터레인의 구성 및 치수에 관해 알아봅니다. docs.unrealengine.com https://ansohxxn.github.io/ue4%20lesson%203/ch2-1/ Ch2-1. 지형과 식물 : 랜드스케이프 - 지형..

언리얼 5 2023.10.16

231013 애니메이션(?) 나이아가라

애니메이션 메쉬 나이아가라가 지원하지 않음 해결방법 입자시뮬레이션은 나이아가라에게 맡기고, 입자 최종 위치 받아와서 입자에 스켈레탈 메쉬를 입힌다 NS_Test 복제한 NS_Test3 생성 사용자 노출값 추가 -> 오브젝트 -> Handler 추가 파티클 업데이트 Export Particle Data to Blueprint 추가 Condition To Export Data 체크 Export Particle Data Interface -> 익스포트 -> 콜백 핸들러 파라미터 * 아래 방향 화살표 -> Link Input -> Velocity 파티클 추가 BPC_Fly 생성 Root 밑에 Niagara Component 생성 디테일 -> 나이아가라 -> 나이아가라 시스템 에셋 -> NS_Test3 으로 설정..

언리얼 5 2023.10.13

231012 나이아가라 (스프라이트) / 벡터 필드

sprite 애니메이션 형태의 나이아가라 (폭발형태) => 퍼포먼스적으로 이득을 볼 수 있다 (연산량이 적음) NS_Explosion 에 사용할 머티리얼 MT_SpriteAnim 생성 NS_Explosion 이미터 업데이트 Emitter State -> Life Cycle Mode Self 로 변경 -> Loop Behavior Infinite 로 변경 * 한 번만 나오는 효과를 하려면 Once 선택. Spawn Burst Instantaneous 추가 -> 입자 1개만 할 거라서 카운트 1 로 설정 * 개수는 변경해도 됨! 파티클 스폰 Initialize Particle -> Lifetime Mode -> Random 4 ~ 8 로 설정 Initialize Particle -> Sprite Attrib..

언리얼 5 2023.10.12

231011 포스트 프로세스 외곽선 효과 / 나이아가라

PostProcess - Outline ScreenPosition -> 현재 위치 이걸 이용해서 중심위치 UV 주변의 깊이를 가져와서 평균값을 가져와서 중앙과 비교해서 비슷하다면 => 평평한 면 외곽선과 걸친다면 평균값이 중앙과 비교하여 이질적인 ? 느낌이 나기 때문에 경계선인지 아닌지 판단할 수 있다. SceneDepth -> 깊이값 추출 BlurSampleOffsets 를 이용해서 위, 아래, 좌, 우로 살짝씩 이동한 위치의 깊이값을 알아낸다. 하지만, UV 로 1 이동은 살짝이 아니라 엄청난 거리이다.. 살짝만 옆으로만 가려면 (픽셀 단위로) ? SceneTexelSize 를 이용해서 픽셀 한 칸만 이동한 값을 Multiply 해서 넘겨준다. 특정 오브젝트에게만 아웃라인 적용 편집 -> 프로젝트셋팅..

언리얼 5 2023.10.11

231010 PaperBurn 효과 제작 및 몬스터에 적용하기 / Post Process

MT_PaperBurn 블렌드 모드 : Masked * 완전 투명하거나 완전 불투명하거나 둘 중 하나의 상태만 적용이 된다. 고급 -> 오파시티 마스크 클립 값이 활성화가 된다 오파시티 마스크 클립 값보다 값이 적으면 화면 상에 이 재질을 적용한 object는 투명상태로 적용이 된다 오파시티 마스크 값을 변수화하기 위해 파라미터를 변수로 변환 노이즈 텍스트 사용 -> 불규칙성 주기 위해 노이즈 텍스쳐 값은 0 ~ 1 이기 때문에, Burn Intence 값이 1이라면 아무리 빼도 0 이하로 내려갈 수 없다. 값이 1 -> 0 으로 값이 내려갈 때, 노이즈 텍스쳐 값을 빼면 0 이하로 내려가는게 생기면서 구멍이 뚫린? 형태가 된다. MTF_PaperBurn (함수타입) 자주 사용하는 것은 함수로 제작! 머..

언리얼 5 2023.10.10

언리얼 랜더링 파이프라인

# 언리얼 렌더링 파이프라인 순서 UE Rendering Frame 1 CPU - Occlusion / Visibility Processes - Visibility Culling - HW Occlusion - SW Occlusion (Mesh LODs) - Precomputed Visibility - Frustum Culling Frame 2 GPU - Early Z Pass - Base Pass - Static - Dynamic - Dynamic Instancing - Basepass Materials - Lightmaps - Lightmass (라이트맵 생성) - Global Illumination / Radiosity - Static Light Actors as placed in the world ..

언리얼 5 연습 2023.09.27

230926 재질

빌보드랑 비슷한 느낌 ( 계속 앞을 쳐다본다 ) 의 액터를 생성 => 문자열을 랜더링 해주는 "텍스트 랜더 컴포넌트" 액터 상속받아서 TextActor 블루프린트 생성 * UMG 로 활용해도 된다 텍스트 랜더 컴포넌트는 기본적으로 빌보드기능을 제공하고 있지 않아서, 따로 재질로 처리를 할 것이다. 사용하고 있는 재질 복제해서 MT_Text 를 생성한다. * 빌보드 컴포넌트는 카메라가 언제나 앞을 쳐다보게 하고 회전을 시킨다 (재질에서 하지 않음) 방법 : 월드 포지션 오프셋 이용 카메라를 향해 정렬할 수 있게 오프셋량을 계산해주는 Node 를 언리얼상에서 제공하고 있다 => AlignMeshToTheCamera * 재질은 무조건 "적용"버튼을 눌러야한다.. 사용 방법 : 초보자용 안내문? * 디테일에 광..

언리얼 5 2023.09.26

230925 인벤토리 설명 UI tooltip / 마우스 / 빌보드 컴포넌트

인벤토리 설명 UI ( Tooltip ) => 아이템에 마우스 올렸을 때 아이템의 설명이 나온다 UUserWidget 상속받은 Tooltip_Base 생성 #include "CoreMinimal.h" #include "Blueprint/UserWidget.h" #include "Tooltip_Base.generated.h" UCLASS() class UNREAL_3TH_API UTooltip_Base : public UUserWidget { GENERATED_BODY() private: class UTextBlock* m_Description; public: UTextBlock* GetTextBlock() { return m_Description; } public: virtual void NativeCo..

언리얼 5 2023.09.25

230922

오늘 할 것 1. 아이템창 켜놓은 상태에서 아이템 먹었을 때, 개수 실시간 반영 UCLASS() class UNREAL_3TH_API UInvenMgr : public UObject { GENERATED_BODY() private: void ResetWidget(); }; void UInvenMgr::ResetWidget() { // 현재 게임모드를 체크 AUnreal_3thGameModeBase* pGameMode = Cast(UGameplayStatics::GetGameMode(m_World)); if (!IsValid(pGameMode)) return; // 게임모드로부터 메인 HUD 가져오기 UMainHUD_Base* MainHUD = pGameMode->GetMainHUD(); // MainHU..

언리얼 5 2023.09.22

230921 인벤토리 설비 및 아이템 설비

인벤토리 설비 및 아이템 설비 처음 게임을 켰을 때, 인벤토리창 안보이게 설정 void UMainHUD_Base::NativeConstruct() { Super::NativeConstruct(); m_Inventory = Cast(GetWidgetFromName(FName("Inventory"))); if (!IsValid(m_Inventory)) { LOG(LogTemp, Error, TEXT("Inventory 위젯 못 찾음")); } else { m_Inventory->SetVisibility(ESlateVisibility::Hidden); } } 게임인스턴스랑 연동해서 게임모드를 가지고 있을 것 GameInstance_Base #include "CoreMinimal.h" #include "Engi..

언리얼 5 2023.09.21