🎮Unreal4/Basic 20

[UE4] IK 기본 개념 (Bone 행렬, 애니메이션 행렬, 루트 모션, IK 개념/종류)

2023.02.10 - [🎮Unreal4/BluePrint] - [UE4] IK란?(Inverse Kinematic), Bone 구조, Two Bone IK 솔버(IK+FK), 애니메이션 공간(Mesh/Local/Component) 해당 게시글은 위 게시글에서 Bone들의 Transform 값이 도출되는 원리에 대해 좀 더 부가적인 설명을 정리해둔 글이다. ✔️ Bone 행렬 (월드행렬, 지역행렬) A ㄴ B (월드행렬) A라는 본(Bone)과, B라는 본이 있을 때 A는 부모 본이고, B가 자식 본이다. 이때 B의 월드행렬을 구하고 싶다면 B의 지역행렬 x A의 월드행렬을 연산하면 된다. B(지역) x A(월드) = B(월드) 여기서 x (곱하기)는 산술 곱하기가 아니라, 행렬곱을 수행하는 것이다. 행..

🎮Unreal4/Basic 2023.06.27

[UE4] 비주얼 이펙트(VFX) : 나이아가라(Niagara), 파티클 시스템(Particle System), 캐스케이드(Cascade)

✨ 파티클 시스템 (Particle System) 파티클 시스템은 캐스케이드 시스템을 통해 구현되어 이펙트를 구성하는 작은 입자들을 사용해 시각적인 효과를 생성하는 시스템이다. 입자는 위치, 속도, 크기, 색상 등의 속성을 가지며, 이러한 속성들을 설정하여 입자의 동작을 조작할 수 있다. 🚩 캐스케이드 (Cascade) 캐스케이드는 Unreal Engine 4의 이전 버전에서 사용되던 비주얼 이펙트 시스템이다. 파티클 시스템을 생성, 편집 및 렌더링하는 데 사용되었다. 그러나 Unreal Engine 4에서는 캐스케이드를 대신할 수 있는 더욱 강력하고 유연한 Niagara 시스템이 도입되었다. ✨ 나이아가라 시스템 (Niagara System) 나이아가라 시스템은 Unreal Engine 4에서 도입된 ..

🎮Unreal4/Basic 2023.05.24

[UE4] Component 상속구조 정리

📚 Component 상속구조 상속 구조에서 UObjectBase, UObjectBaseUtility는 언리얼 엔진의 저수준 구현에 속하는 기초 코드로 게임 코드에서 직접 사용하지 않으므로 자세히 보지 않고, UObject는 Unreal4 오브젝트의 기본 클래스이기 때문에 자세히 보지 않는다. 📙 UActorComponent - Component가 될 수 있는 최소한의 기능을 가지고 있다. - UActorComponent에서 변환이 있으면 SceneComponent이고, 렌더링할 수 있다면 PrimitiveComponent이다. 📓 USceneComponent - Transform 정보가 추가되어 SceneComponent부터 실질적인 배치가 가능하다. - 그러나 렌더링이나 충돌 기능은 지원하지 않는다...

🎮Unreal4/Basic 2023.05.22

[C++] 인터페이스(Interface), 추상클래스(Abstract), 추상함수/가상함수(Virtual)

💡 인터페이스 (Interface) 인터페이스 클래스는 무관한 클래스 간의 공통되는 함수를 구현할 수 있도록 하는데 쓰인다. 예를 들어, AActor 클래스에 구현한 함정기능과, APawn/ACharacter 클래스에 구현한 Enemy 객체, 점수를 매길 수 있는 UDataAsset같은 클래스들이 존재할 때, 이 클래스들에 특정 기능을 공유하고자 할 때 공통 조상이 UObject 밖에 존재하지 않는다. 이럴때 인터페이스를 사용하면 된다. 인터페이스의 선언은 세가지만 기억하면 된다. 1️⃣ UCLASS 매크로가 아닌 UINTERFACE 매크로를 사용한다. 2️⃣ UObject를 직접 상속하는것이 아닌 UInterface를 상속한다. 3️⃣ UINTERFACE 클래스는 실제 인터페이스가 아니기 때문에 같은 ..

🎮Unreal4/Basic 2023.04.11

[UE4] 람다식(Lambda), capture절, 람다식 장단점

📚 람다(Lambda)람다는 알고리즘이나 비동기 함수에 전달되는 몇 줄의 코드를 캡슐화할 때 사용할 수 있다. 동기 함수는 스레드 간의 순서를 맞추면서 작동하지만, 비동기 함수는 순서를 맞추지 않기 때문에 어디서 사용될지 모르는 멀티 스레드같은 기능을 구현할 때 사용한다. 또한 람다는 함수의 선언과 수행이 끝난 뒤 그 자리에서 바로 소멸시키기 때문에 간단하게 사용할 때 유용하게 사용할 수 있다. (복잡한 함수를 구현할때는 사용하지 않는것이 좋다) 위 사진은 람다식의 구조를 파악해볼 수 있는 람다 구문의 일부이다.1️⃣ [ ] 캡처절람다식은 익명 메서드인 만큼 익명 이므로 함수 이름이 없다. 대신에 [ ] 기호가 이름을 대체하는 역할을 수행한다. 이러한 [ ] 기호 안에 들어가는 내용을 캡처절(Captur..

🎮Unreal4/Basic 2023.03.24

[UE4] 플러그인(PlugIn), 라이브러리(Lib/Dll), 나나이트

🔌 플러그인 프로그램을 개발할 때 각자마다 쓰는 툴은 전부 다르다. 굳이 본인에게 쓸모없는 툴을 넣어서 프로그램을 제작할 필요는 없기 때문에 필요한 툴만 모아서 한번에 만든 것이 게임 파일이다. 또한 사용자에게는 프레임워크와 게임실행파일정도가 노출될 뿐이지 사용자에게 렌더링 툴이나 모델 툴을 공개해선 안된다. 이렇게 사용하는 툴만 따로 빼서 만들어놓은 것을 플러그인이라고 한다. ✔️ 라이브러리 Lib : 정적 라이브러리로, 프로그램이 실행될 때 프로그램 메모리 영역을 공유하여 사용한다. 즉, 한번 라이브러리를 불러오면 프로그램이 종료될때까지 제거되지 않는다. Dll : 동적 라이브러리로, 프로그램과 별도로 작동하여 원하는 때에 불러올 수 있고 원하는 때에 제거할 수 있다. 🖼️ 나나이트 나나이트는 굉장히..

🎮Unreal4/Basic 2023.03.22

[UE4] 델리게이트(DELEGATE) 종류

💡 델리게이트(DELEGATE)의 종류 이름 사용대상 반환값 (Return) 존재 여부 블루프린트 공개 여부 설명 DECLARE_DELEGATE 1 : 1 O X 함수포인터와 같아서 함수포인터라고 생각하면 쉽다. DECLARE_MULTICAST_DELEGATE 1 : n X X 파라미터 갯수와 타입만 일치시킨다. DECLARE_EVENT 1 : n X X DECLARE_MULTICAST_DELEGATE 와 동일한데 클래스 내부 한정이라는 차이점이 존재한다. DECLARE_DYNAMIC_DELEGATE 1 : 1 O O DECLARE_DYNAMIC_MULTICAST_ DELEGATE 1 : n X O 블루프린트에서 사용했던 이벤트 디스패처와 같다. 파라미터 갯수, 타입, 변수명까지 모두 일치시킨다. DEC..

🎮Unreal4/Basic 2023.03.03

[UE4] UPROPERTY 기능 (EditAnywhere, EditInstanceOnly, EditDefaultOnly, VisibleAnywhere, BlueprintReadWrite)

💡 UPROPERTY 기능 EditAnywhere - EditInstanceOnly 기능과 EditDefaultOnly 기능을 둘 다 사용할 수 있다. EditInstanceOnly - C++클래스에서 기본값을 저장해놓은 뒤, 블루프린트 에디터를 거치지 않고 원하는 객체의 값만 변경할 수 있다. - 즉, 중간에서 편집이 불가능하고 배치됐을 때만 디테일 패널에서 편집이 가능하다는 의미이다. EditDefaultOnly - 블루프린트 에디터나, C++클래스 자체에서만 공용으로 사용한다. - 따라서 블루프린트 에디터 내에서는 EditDefaultOnly로 설정된 멤버변수가 보이는데, 뷰포트 옆 디테일 패널에서는 보이지 않는다. - Default Only 멤버변수 값을 변경하면 같은 클래스로 선언된 모든 멤버변..

🎮Unreal4/Basic 2023.02.27

[UE4] Actor C++ 클래스 기본 생성 코드 (클래스 선언, 직렬화 매크로,

📗 직렬화 사용 A ob; 라는 변수를 선언했을 때 A 객체 자체의 주소에 접근할 수 없다보니 바이트스트림 형태로 바꾸어 접근할 수있다. 따라서 어느 CPU나 어느 RAM이든 문제없이 I/O를 통해 접근할 수 있게 하는 기능이 직렬화 혹은 역직렬화이다. 프로그램을 내부적으로 사용할 때는 에디터에 공개할 필요가 없기 때문에 직렬화를 사용하지 않는다. 그러나 언리얼 엔진에서 게임을 개발할 때 사용하는 블루프린트도 에디터 소속이기 때문에 직렬화를 해줘야 블루프린트에 접근하여 게임을 개발할 수 있다. 즉, 에디터에서 직렬화하여 공개하고, 블루프린트에도 공개하라는 옵션을 설정하면 언리얼 엔진에서 C++을 통한 개발작업이 이뤄질 수 있다. 📙 클래스 선언 일반적으로 클래스를 선언할 때 class (프로젝트명 = 모..

🎮Unreal4/Basic 2023.02.26

[UE4] 직렬화 (시리얼라이제이션, Serialization)

💡 직렬화 직렬화는 시리얼라이제이션(Serialization)을 한글화한 용어이다. 컴퓨터공학에서 직렬화는 현재 오브젝트의 상태를 보관하고, 이른 다른 컴퓨터 환경에서 불러와 동일한 상황으로 만들어주는 기법을 의미한다. 🚩 C++ 시프트 연산자 C++에서는 객체를 옮겨주는 직렬화 기능을 지원하지 않는다. 대신 시프트(Shift) 연산자 를 통해 스트림에 데이터를 전송하는 기능을 제공한다. #include using namespace std; int main () { int i; cout i; cout

🎮Unreal4/Basic 2023.02.26
728x90