[내일배움캠프 Day87] AI - 애니메이션, 사운드
·
내일배움캠프/TIL
AI NPC의 애니메이션 세팅1) 애니메이션 블루프린트animgraph : state machine을 만들기 위한 그래프event graph : 애니메이션에 관련된 블루프린트를 디자인하는 그래프 2) 플레이어 캐릭터 VS AI NPC 애니메이션 작동 메커니즘 비교AI와 플레이어 캐릭터는 조종 주체가 플레이어냐, 인공지능(시스템) 자기 자신이냐가 핵심 차이점 1. 입력 방식의 차이 2. 애니메이션 전환 방식 AI NPC의 스테이트 머신 설계1) AI 애니메이션 블루프린트 디자인Event BlueprintInitializeAnimation 노드는 BeginPlay노드와 유사. 시뮬레이션이 시작되면 1회 호출된다.해당 로직은 해당 애니메이션 블루프린트를 사용하는 클라이언트 액터(BP_FriendAI)의 Mov..
[내일배움캠프 Day86] AI - 회피, 자동 네비게이션 링크
·
내일배움캠프/TIL
AI 이동 명령 및 경로 찾기(Pathfinding) 알고리즘1) Unreal Engine의 경로탐색(Pathfinding)원리언리얼 엔진의 AI는 A*(A-Star) 알고리즘 혹은 다익스트라(Djikstra) 알고리즘 등과 같이 특정 경로로 이동하기 위한 비용 최적화 경로 탐색 공식을 바탕으로 경로를 탐색한다.언리얼 엔진의 Pathfinding의 알고리즘은 가장 저렴한 비용으로 목표 지점까지 이동하도록 설계되어 있다.위 사진의 경우 Start지점에서 Goal까지 이동하기 위해 가장 저렴한 비용은 3(1+1+1)이다. 2) 언리얼 엔진에서의 경로탐색 알고리즘 응용네비메시는 Runtime 중 동적 생성이 불가능하다. 엔진의 아키텍처 설계상의 이유로 Brush가 Runtime 중 재생성되지 않기 때문이다.이..
[내일배움캠프 Day85] Unreal Engine AI 기초
·
내일배움캠프/TIL
AI 기초1. Unreal Engine AI 개요인터랙티브 경험의 핵심 요소인 Unreal Engine AI게임 등 엔터테인먼트 콘텐츠가 재미있는 이유 중 하나는 인터랙션이다. 게임 속 몬스터를 따돌리고 컨트롤을 이용해서 강력한 상대를 무찌르는 등 게임 속의 룰/오브젝트와 상호작용하며 목표를 달성해내는게 게임의 주요 재미다.몬스터나 NPC, 맵 내의 액터들이 플레이어가 나타나면 기다렸다는듯 인지하고 공격하는 등 액터가 마치 지능이 있는 것처럼 행동하도록 설계하는 기능을 언리얼 엔진의 “인공지능”이라고 한다. 2. Unreal Engine AI 구현Unreal Engine AI는 아래와 같은 3가지 오브젝트로 구성된다.우리 뇌-신경처럼 게임속 AI 액터를 찾아서 움직이도록 조작하는 AI Controller..
[UE Dungeon] Section 1, 2
·
강의/UE Dungeon
해당 카테고리 글들은 '언리얼 엔진 5로 ARPG 게임 처음부터 만들기'를 수강하고 공부한 내용을 정리한 글입니다.강의 바로가기 Section 1: Blueprint Introduction, Section 2: Maze Algorithm and Tile System 의 내용을 정리한 글입니다. 자세한 내용은 강의에서 확인 가능합니다. Lesson 2 - Creating Main Menu위젯 생성 Lesson 3 - Adding Main Menu to Viewport and Quit Functionality게임모드에 위에서 생성한 위젯 뜨도록 구현 Quit 버튼 클릭시 게임 종료 Lesson 4 - Loading Screen Mechanics & Maze Spawning게임을 시작하면 maze genera..
[UE Climbing] 2-2. Climbing Animation
·
강의/UE Climbing System
해당 카테고리 글들은 Unreal Engine 5 C++: 클라이밍 시스템 구축하기를 수강하고 공부한 내용을 정리한 글입니다.강의 바로가기 2-1 정리한 블로그 글에 이어서 '두 번째 섹션 - 클라이밍 움직임' 강의 내용 중 중요하다고 생각한 부분만 정리한 글입니다. 자세한 내용은 강의에서 확인 가능합니다. 32. Ledge 탐지첫 번째 라인트레이스로는 오르막이 있는지 체크하고 만약 없으면, 두 번째 라인 트레이스를 그리는데 이는 걸을 수 있는 표면, 즉 꼭대기를 감지하는 데 사용됩니다. bool UCustomMovementComponent::CheckHasReachedLedge() { FHitResult LedgetHitResult = TraceFromEyeHeight(100.f,50.f); if..
[UE Climbing] 2-1. Climbing Animation
·
강의/UE Climbing System
해당 카테고리 글들은 Unreal Engine 5 C++: 클라이밍 시스템 구축하기를 수강하고 공부한 내용을 정리한 글입니다.강의 바로가기 두 번째 섹션 - 클라이밍 움직임 강의 내용 중 중요하다고 생각한 부분만 정리했습니다. 자세한 내용은 강의에서 확인 가능합니다.먼저, 두 번째 섹션에 대해 정리한 글은 아래와 같습니다.두 번째 섹션에서는 위로 오르기, 아래로 내려가기, 왼쪽으로 오르기, 오른쪽으로 오르기, ledge를 오르내리기, 클라이밍 상태로 들어가고 나오는 방법을 다룹니다. C++에서 캐릭터 애니메이션 인스턴스 클래스를 만들고 기존 애니메이션 블루프린트를 다시 구축하는 것으로 시작합니다. 그런 다음 Mixamo 애니메이션 파이프라인을 살펴보고 Mixamo 변환기를 사용하여 애니메이션을 리타겟팅하..
[내일배움캠프 Day75] 1주차 멀티플레이 팀플
·
내일배움캠프/TIL
이번 팀플에서 캐릭터, AI 제외한 나머지를 맡게 되었습니다.오늘까지 진행한 내용은 싱글플레이 관련 UI로 게임 시작부터 인게임까지 싱글 플레이 관련 구현을 마쳤습니다. 3D 캐릭터를 UI에 보이기위해1. BP_CharacterSelector 안에 SceneCaptureComponent2D를 두어, 3D 캐릭터를 별도의 카메라로 렌더링2. 그 결과를 RenderTarget으로 출력3. 그 RenderTarget을 머티리얼로 감싸서 이미지에 적용이런 방식으로 구현했습니다.  주로 참고한 영상은 아래와 같으며 https://www.youtube.com/watch?v=Ff67XtqgSxchttps://youtu.be/sHq69iYfd9E?si=smireKaY3hTZBdsG 구현한 내용은 아래와 같습니다. 현재..
[UE5] Mixamo Converter
·
Unreal
https://terribilisstudio.fr/?section=LAUNCHER여기서 오른쪽 상단 버튼 클릭해서 다운로드합니다. 압축파일을 푼 뒤에 Terribilis Studio Launcher에 들어갑니다. MIXAMO CONVERTER에 들어가서 play를 누릅니다 여기서 원하는 캐릭터를 클릭하면 해당 파일이 나오는데 https://www.mixamo.com/#/믹사모 페이지에 들어가 UPLOAD CHARACTER을 클릭합니다. 앞에서 나온 파일을 여기에 올리면 됩니다. 그다음 원하는 애니메이션 클릭하고 다운로드하면 됩니다. 여기서 스킨 없는 것을 선택하는 것이 좋습니다. 이렇게 원하는 애니메이션들을 다운받은 FBX를 Mixamo_Converter 폴더에 IncomingFbx 폴더에 들어가 옮깁니..
[UE Climbing] 1. Climbing Movement
·
강의/UE Climbing System
해당 카테고리 글들은 Unreal Engine 5 C++: 클라이밍 시스템 구축하기를 수강하고 공부한 내용을 정리한 글입니다.강의 바로가기 첫 번째 섹션 - 클라이밍 움직임 강의 내용이 많아 그중 중요하다고 생각한 부분만 정리했습니다.먼저, 첫 번째 섹션에 대해 정리한 글은 아래와 같습니다.첫 번째 섹션에서는 클라이밍을 위한 이동을 어떻게 처리할 수 있는지 살펴보고, 기본적인 클라이밍 논리를 처리할 수 있도록 새로운 향상된 입력과 사용자 정의 이동 컴포넌트로 시작합니다. 그런 다음 다양한 트레이스를 사용하여 우리가 필요한 모든 클라이밍 가능한 표면 정보를 얻고, 캐릭터를 사용자 정의 이동 모드로 이동시키기 위해 필요한 물리학 코드를 처리하는 방법을 다룹니다. 물리학이 작동하면, 모든 클라이밍 가능한 표면..
[내일배움캠프 Day62] 블랙보드값 enum 연결 문제 해결
·
카테고리 없음
c++에서 블랙보드값을 enum으로 정의했는데아무리해도 열거형 타입에 c++로 정의한 enum 값이 안떠서 고민하던중 아래 사이트를 통해 알게 되어서 정리하게 되었습니다. https://forums.unrealengine.com/t/can-i-use-the-c-enum-in-ai-bt-blackboard/339672#pragma once#include "CoreMinimal.h"#include "AIStateOfDay.generated.h"UENUM(BlueprintType) enum class EAIStateOfDay : uint8{ Day UMETA(DisplayName = "Day"), Evening UMETA(DisplayName = "Evening"), Night UMETA(Displ..