Unreal Engine 11

Unreal Build Tool (UBT) & Unreal Header Tool (UHT)

1. Unreal Build Tool (UBT): - UBT는 Unreal Engine 프로젝트를 빌드하고 컴파일하는 데 사용되는 주요 빌드 도구입니다. Unreal Engine은 큰 규모의 게임 및 시뮬레이션 프로젝트를 다루기 위한 복잡한 코드 기반을 가지고 있으며, UBT는 이러한 프로젝트를 빌드하는 데 필요한 도구입니다. - UBT는 Visual Studio, Xcode, 또는 다른 C++ 컴파일러와 통합하여 C++ 코드를 컴파일하고, 게임 모듈 및 플러그인을 빌드합니다. - Unreal Engine의 C++ 코드는 일반적으로 `.cpp` 파일과 `.h` 파일로 구성되며, UBT는 이러한 파일을 컴파일하여 실행 가능한 게임 또는 애플리케이션으로 생성합니다. Unreal Build Tool (UBT)..

Unreal Engine 2023.10.05

Delegate(언리얼 엔진)

C++ 에서는 델리게이트 시스템이 없지만, 언리얼은 자체적으로 델리게이트를 제공하고 있다. 델리게이트를 이용하는 것은 기존에 함수 포인터 등을 이용했던 것보다 간편하며 안전하다. 대리자를 통해 함수를 호출하므로 호출할 함수나 이를 포함하는 객체가 없어져도 대리자가 체크해 안전하게 함수를 호출할 수 있으며, 동일한 형을 가진 함수 여러 개를 대리자가 묶어서 관리하고 필요할 때 동시에 모두 호출할 수도 있다. 가장 간단히 익숙한 C++의 문법으로 델리게이트를 이해하려면 함수포인터 배열이라고 생각하면 된다. 다만, 함수포인터 배열보다는 안정성과 편의성을 조금 더 높였고, Blueprint와의 연계도 고려된 것이 언리얼의 Delegate이다. 델리게이트 오브젝트는 복사해도 완벽히 안전하다. 델리게이트는 값으로 ..

Unreal Engine 2023.10.04

Unreal Reflection(언리얼 프로퍼티 시스템)

공식문서의 내용 C++ 는 어떠한 형태의 리플렉션도 지원하지 않아, 언리얼에는 자체적으로 C++ 클래스, 구조체, 함수, 멤버 변수, 열거형 관련 정보를 수집, 질의, 조작하는 별도의 시스템이 구축되어 있다. 전형적으로 이러한 리플렉션은 '프로퍼티 시스템'이라고 부르는데, '리플렉션'은 그래픽 용어이기도 하기 때문. 리플리케이션 시스템은 옵션입이다. 리플렉션 시스템에 보이도록 했으면 하는 유형이나 프로퍼티에 주석을 달아주면, Unreal Header Tool (UHT)가 그 프로젝트를 컴파일할 때 해당 정보를 수집한다. 헤더에 리플렉션이 있는 유형으로 마킹을 하려면, 파일 상단에 특수한 include 를 추가해 줘야 한다. 그러면 리플렉션이 있는 유형은 이 파일을 고려해야 함을, 시스템 구현에도 필요함을..

Unreal Engine 2023.10.01

Foot Ik(Control Rig)

Foot Ik는 경사면에 따라서 발의 위치를 수정하여 자연스러운 모션이 될 수 있도록 하는 기법이다. Foot Ik가 적용되지 않는 다면 케릭터는 허공에 붕뜬 상태로 서있게 된다. 그러나 Foot Ik가 적용되면 자연스럽게 비탈면에 맞춰 발을 이동시키고 서있을 수 있게된다. Foot Ik의 Ik는 inverse kinematics로 역기구학이라는 뜻을 의미한다. 이는 Foot Ik가 발의 위치를 수정하고나면 발의 위치에 맞추어 모델의 전신을 수정하도록 하기 때문에 이렇게 불리는 것. 연산의 순서는 이렇다. 1. 먼저 발을 기준으로 바닥면의 위치를 검사한다 2. 바닥면의 위치로 발을 옮겨준다 3. 옮겨진 발에 맞추어 케릭터의 중심인 Pelvis도 옮겨준다 간단히 표현했는데 Foot Ik 연산을 하나씩 뜯어..

Unreal Engine 2023.09.30

Material Function(Outline Shader에 사용)

step 노드: Step 머티리얼 표현식은 각 X 값이 Y의 참조 값보다 큰지 작은지에 따라 0 또는 1을 반환합니다. 아래에는 선형 그레이디언트(0에서 1)가 X 입력에 연결되어 있습니다. Y의 값(0.25)이 참조 값으로 사용됩니다. 0.25 미만의 모든 그레이디언트 값은 0(검은색)을 반환하고, 0.25 이상의 모든 값은 1(흰색)을 반환합니다. Fresnel 노드: Fresnel 은 관찰자가 바라보는 각도에 따라 반사되는 빛의 세기가 달라지는 현상을 설명하는 데 사용되는 용어입니다. 예를 들어 물 웅덩이 위에 서서 수직으로 내려다보는 경우, 반사되는 수면이 많이 보이지 않을 것입니다. 머리를 움직여 물 웅덩이의 수면이 시선과 평행이 되어갈수록, 수면의 반사면이 많아지는 것이 보일 것입니다. UE4..

Unreal Engine 2023.09.30

Outline Shader - 2

1. Bug1 해당 방식대로 제작하면 여러가지 버그가 생기는데 그 중 첫번째로 카메라가 바라보는 각도에 따라서 음영과도 같은 검은 부분이 생긴다 이 버그의 원인은 카메라가 바닥 평면과 평행에 가까워질수록 발생하는 문제. 해당 버그를 제어하기 위해 MF_DTM_GrazingAngle 함수를 제작한다. 이 함수는 표면의 법선에 기반하여 값을 변조할 때 사용될 값을 반환한다. 이 값은 깊이 외곽선 임계값에 곱해질 것. 이 함수는 카메라 시야 벡터에 대해 표면이 수직일수록, 합성 커널의 픽셀 간 깊이 불연속성을 고려해야 하는 엣지로 간주해야 할 필요가 더 커질 것이다. Fresnel의 카메라와 마주보면 0을 반환하고 카메라에 수직이 될수록 1을 반환하는 성질을 이용하여 카메라와 표면 노말의 수직 여부를 판별한다..

Unreal Engine 2023.09.29

Outline Shader - 1

Post Process를 이용한 Outline Shader입니다 참조 유튜브: https://www.youtube.com/watch?v=9KvUfnrHcqM&t=1886s ● 기본원리 아웃라인을 씌우는 기본 원리는 한 픽셀을 잡고 상하좌우 네 개의 픽셀과 깊이값을 검사한다. 공식: Variation = abs(Depth왼 + Depth오 + Depth위 + Depth아래 - 4*Depth가운데(타겟픽셀)) 이렇게 구해진 Variation의 값이 정해진 한계치(Threashold)를 넘으면 외곽선에 해당하므로 해당 픽셀의 색을 바꿔주면 외곽선이 그려지는 효과를 얻을 수 있다. 해당 방법은 Depth Edge Detection으로 이 방법으로는 바깥쪽의 외곽선만을 그릴 수 있다는 단점이 있다. 안쪽의 외곽선..

Unreal Engine 2023.09.29

BOTW Climbing시스템(젤다의 전설 벽타기) -3

5. Animation 애니메이션은 참고한 사이트에서 추천하는 Climbing Animation Set을 사용했다. Climbing으로의 전환은 기본적으로 Input을 통해서만 가능하고 Enum값을 통해 애니메이션을 조정했다. Climbing으로의 전환 전에 거치는 과정을 통하여 전환 애니메이션을 실행하고 Climbing Idle로 가도록 하였다. BlendSpace의 기본 구성은 아래와 같다. * Asset에 방향별 애니메이션이 잘 구분되어 있어 따로 작업하지 않고 집어 넣기만 하였다. 각 축의 최소값과 최대값이 -120 ~ 120인것은 멤버변수로 MaxClimbingSpeed가 120으로 설정되어 있기때문. 케릭터가 Climbing을 하기 위해서는 BS에 Up/Down 과 Left/Right에 넣어줄..

Unreal Engine 2023.09.28

BOTW Climbing시스템(젤다의 전설 벽타기) -2

OnMovementUpdated - 등반의 준비가 어느 정도되면 SetMovementMode를 통해 PhyCustom을 호출 할 수 있다. 이때 앞서 설명했듯이 여러종류의 PhysCustom이 존재할 경우 호출할 수 있도록 하기 위해 두번째 매개변수로 Custom Enum을 받는다. 3. Input 등반을 시작하고 중지하기 위해 TryClimbing 및 CancelClimbing의 두 함수와 함께 플레이어의 의도를 저장하는 부울 bWantsToClimb를 만든다. bWantsToClimb이 true인지 확인하여 OnMovementUpdated의 코드를 대체할 수도 있다. *Input Mapping Context에 설정되어 있는 Climbing과 CancelClimbing. 각 입력에서 호출되는 함수에서는..

Unreal Engine 2023.09.28