전체 글 403

[UE4] 머티리얼(Material), 머티리얼 인스턴싱

🌎 머티리얼 (Material) 넓게 보면 오브젝트에 적용할 수 있는 "페인트" 개념이다. 말 그대로 오브젝트가 어떤 재질로 만들어졌는지를 정의하기 때문에 그 색이나 광택, 투과성 등을 정의할 수 있다. 머티리얼의 중요한 사실은, 코드를 통해 생성되는 것이 아니라 머티리얼 에디터 안에서 노드로 엮인 망을 통해 생성된다는 것이다. 각 노드에는 특정 동작을 하도록 설계된 HLSL 코드 스니펫이 들어있다. 즉, 머티리얼을 생성하는 것은 비주얼 스크립팅을 통해 HLSL코드를 생성한다는 뜻이다. 🪐 머티리얼 인스턴싱 머티리얼 인스턴싱은 머티리얼의 비싼 리컴파일(느린 컴파일) 작업 없이 머티리얼의 외양을 바꾸는 데 사용된다. 언리얼 엔진4에서 사용가능한 머티리얼 인스턴스는 두가지 유형이 있다. Material In..

[선형대수학] 벡터의 내적, 벡터의 길이

✔ 벡터의 내적 (Dot Product) a = (a1, a2, ... , an) b = (b1, b2, ..., bn) a · b = a1b1 + a2b2 + a3b3 + ... + anbn => 실수값 예시) a(2,5), b(7,1)의 두 벡터가 있을 때 두 벡터의 내적 값은? 2*7 + 5*1 = 14+5 = 19 ✔ 벡터의 길이 (Length) |a| = 루트(a1^2 + a2^2 + ... + an^2) 원래 알고있던 피타고라스 정리와 동일한 방법으로 길이를 구하면 된다. 예시) 벡터(2,5)의 길이는? 루트(2*2 + 5*5) = 루트(29) 자기자신을 내적한 결과는 길이의 제곱값이 나온다. 즉, 길이의 제곱 = 자기자신의 내적값 또한 벡터의 내적에서는 교환법칙, 분배법칙, 결합법칙이 모두 ..

📚수학공부 2023.01.23

[UE4] 충돌(Overlap/Hit,Block Collision), 콜리전 반응, Collision Enabled

💥 충돌 (Collision) Overlap Hit (Block) Overlap (=겹침연산) - 처음(Begin) 충돌될 때와 충돌 객체를 통과하고 난 뒤 충돌이 끝(End)날 때 Collsion 이벤트가 호출된다. - 충돌되는 객체와 겹쳐진다. Hit (=블록연산) - 물리에 의해 충돌 객체와 충돌된 후 지나가지지 않고 막힌다. ⭐ 오버랩 충돌을 사용하기 위해선 충돌되는 객체들이 모두 Collision을 컴포넌트로 가지고 있어야 하며, 모두 Collision - Generate Overlap Events 체크가 True로 활성화되어야 한다. 충돌되는 객체 둘 중 하나라도 체크되어있지 않다면 충돌되지 않으니 주의하자 ! 또한 오버랩은 Actor 오버랩 구현과 Component 오버랩 구현이 존재하는데,..

[참고자료] 코딩테스트 유용한 함수&자료

[ 헤더 파일 뭉탱이 선언 ] #include : 표준 라이브러리 헤더파일을 한번에 선언하는 것 [ 올림, 내림, 반올림 ] #include 추가 - 올림: ceil(double, float, long double N); -> 4.2 = 5 - 내림: floor(double, float, long double N); -> 4.2 = 4 - 반올림 방법1: round(double, float, long double N); - 반올림 방법2: floor(N + 0.5); -> 4.2 = 4 / 4.6 = 5 - ceil 없이 올림: int num = (A / B) +1; [ 특정 내용으로 배열 채우기 ] - 헤더파일 #include 추가 - (Visual Studio에서는 헤더파일이 없어도 되지만, 백준에서..

[UE4] 애니메이션 몽타주 (Montage), Blends(본마다 레이어로 블렌딩), 몽타주 슬롯 이전구간 초기화 문제

📚몽타주란? 몽타주를 사용하면 블루프린트 또는 C++ 코드를 통해 애니메이션 애셋을 바로 제어할 수 있다. 또한 여러 애니메이션 시퀀스를 하나의 애셋으로 합칠 수 있고, 이를 여러가지의 섹션으로 나눠 일부를 조합하여 재생하는 것도 가능하다. 몽타주 안에서 노티파이를 호출하여 애니메이션 구간 중 특정 부분에서 이벤트를 발동시키면 사운드나 이펙트같은 게임 작업을 구현할 수 있다. 위 화면에서는 몽타주의 DefaultGroup을 UpperBody로 설정하여 해당 Attack 애니메이션을 상체에만 Blend하여 적용시켰고, 애니메이션이 끝날 즘 End Action 노티파이를 호출하여 애니메이션이 끝났는지를 체크하는 함수를 호출하였다. 📚 Blends 노드 / 본마다 레이어로 블렌딩합니다. Blends 노드는 뼈..

[UE4] 노티파이 호출 시 확인사항

🎮 노티파이 호출 Player 애니메이션에 노티파이를 생성하고 호출하면 Player에서만 노티파이가 호출될 것만 같다. 그러나 노티파이는 프로그램이 런타임 이든지 런타임이 아니든지 언제나 호출될 수 있다. Animation BluePrint(ABP)의 좌측에 띄워지는 캐릭터가 AnimationEditorPreviewActor인데 그 객체 안에 들어있는 Pawn이 Player이기 때문에 ABP를 호출하면 노티파이가 실행된다. 또한 애니메이션 창에 존재하는 캐릭터도 AnimationEditorPreviewActor 객체이기 때문에 게임모드 중이든 아니든 노티파이가 계속해서 콜(호출) 될 것이다. 따라서 노티파이를 호출해서 사용하려 할 때 게임이 실행되고 있는 상태에서 잘 호출되는 것이 맞는지 체크하는 작업이..

[CS] 객체지향 설계원칙 (SOLID)

✔ 객체지향 설계원칙 (객체지향 5원칙, SOLID 원칙) S (Single Responsibility Principle, SRP) = 단일 책임 원칙 객체(클래스)는 오직 하나의 책임을 가져야 한다. 객체는 오직 하나의 변경의 이유만을 가져야하며 그 책임을 완전히 캡슐화해야 한다. O (Open-Close Principle, OCP) = 개방-폐쇄 원칙 객체는 확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 한다. 즉, 기존의 코드는 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다는 원칙이다. 더보기 어떤 기능을 구현했을 때, 기능에 문제가 생기면 클래스를 변경하지 않고 상속이나 Wrapping과 같은 방법으로 문제를 해결할 수 있어야 한다. L (Liskov Substitutio..

[UE4] 벡터의 성질 실습으로 증명하기

🚩 벡터의 구분 - 방향벡터: 어느 방향으로 가는지 방향 정보를 담은 벡터 방향벡터는 항상 1로 만드는 정규화(Normalization) 과정을 수행해야 한다. - 위치벡터: 좌표의 원점 0을 시작점으로 하여 공간 내의 임의의 한 점(끝점)으로 하는 벡터 ✔ A위치 + B위치 = 위치 ✔ A위치 - B위치 = B->A 방향 ✔ A위치 + (B방향 * 거리) = 위치 ex) Player위치 + (Player거리 * 속도) = Player가 이동한 위치 💻 증명 * 1번째 증명 실행 전 실행 후 첫번째 공식인 A위치 + B위치 = 위치 를 블루프린트로 증명해본 결과이다. 빨간색 큐브 객체에 블루프린트를 생성하여 현재 위치값을 받아오고 특정 Location(100, 100, 0)을 더해준 결과 원점으로 표시해..

[선형대수학] 선형결합, 선형생성, 선형독립, 선형종속

🚩선형결합 - 여러개의 벡터 v1, v2, v3,,,vn 가 존재할 때 단순히 다 더하라는 뜻 - 일차결합과 같은 말로 수학에서 각 항에 상수를 곱하고 결과를 추가함으로써 일련의 항으로 구성된 식 벡터들의 합의 결합에 임의의 상수배를 한다는것은 c1, c2, c3,,,cn 의 실수들을 c1v1 + c2v2 + c3v3 + ... +cnvn 으로 더하는 것이다. 다른 선형결합의 예시를 들어보자. 벡터 a = (1,2), 벡터 b = (0, 3) 두 벡터가 존재할때 두 벡터의 선형결합은? 임의의 실수 0이나 3,2를 벡터에 연산해보자 0a + 0b = (0,0) 3a - 2b = (3, 0) 위와같은 연산들이 바로 선형결합이다. 이들을 그냥 결합이라고 부르지 않고 선형결합이라고 부르는 이유는 "상수배"를 하..

📚수학공부 2023.01.19

[UE4] Animation Notify, Notify State

✔ Animation Notify, Notify State 애니메이션 노티파이(Animation Notify)를 이용하면 애니메이션의 시퀀스 도중 특정 지점에 이벤트가 발생하도록 구성할 수 있다. 예를 들어 걷기나 달리기 도중의 발소리같은 이펙트를 추가하거나 애니메이션 도중 파티클 시스템을 스폰시킬때도 주로 사용된다. 노티파이는 커스텀 유형으로도 쉽게 만들어 사용이 가능하기 때문에 어떤 유형의 게임이라도 다양하게 맞춰 제작할 수 있다. * 노티파이(Notify)와 노티파이 스테이트(Notify State)의 차이점 노티파이는 단순히 시작 지점에서 발동되어 이벤트를 발생하지만, 노티파이 스테이트는 Begin(시작), Tick(틱), End(끝) 세 개의 이벤트가 존재한다. 노티파이 스테이트는 단순히 시작해..

[UE4] VectorLength, Player 회전, BlueprintSpace, State

✔ VectorLength 벡터의 길이를 반환하는 Vector Length함수가 여러개 존재한다. VectorLengthXY : 높이인 z축을 제외하고 평면상에서 거리를 구할 때 사용된다. VectorLengthSquared : 길이를 구하는 공식에서 각 항을 제곱하여 x2 + y2 = c2(거리의 제곱)로 도출되는 제곱된 거리값을 사용할 때 사용된다. ✔ 마우스 회전을 통한 시점 회전 & Player 회전 마우스의 움직임에 따라 시점을 회전시키고, 해당 Forward 방향으로 Player가 바라보게 하고싶다면 다음과 같은 설정이 필요하다. (입력에 Forward, Right 축매핑 추가하는건 기본) * Character Movement - Orient Rotation to Movement 체크: 캐릭터..

[UE4] 3D공간, 멤버변수 변경, 오브젝트 상속구조

✔ 3D 공간 월드공간/절대공간: 절대공간에서의 x방향은 무조건 전방이다. 로컬공간: 나 자신의 기준으로 내가 바라보는 x축 방향의 전방으로 이동한다. 상대공간: 상위 객체의 간격을 그대로 적용하여 배치하는 것 - A component의 위치가 (0,10,0)일때 자식인 B component가 (0,20,0)이라면 실제 B는 A의 10 간격을 더한 (0,30,0)에 출력된다. ✔ 멤버변수 변경 블루프린트 창 내에서 "인스턴스 편집가능 체크" 버튼을 클릭하면 메인 창에서 해당 멤버변수의 값을 변경할 수 있도록 생겨난다. 해당 값을 변경하면 해당 객체의 멤버변수'만' 값이 변경된다. 예를 들어 A obj, A obj2 두 객체가 있는 경우 obj 객체의 멤버변수 값을 변경했다면 obj2의 멤버변수 값은 변경..

🎮Unreal4/Basic 2023.01.18
728x90