분류 전체보기
[DirectX11] 070 OBB(Oriented Bounding Box) collision
[DirectX11] 070 OBB(Oriented Bounding Box) collision
2023.03.14DirectX11에서 OBB (Oriented Bounding Box) 충돌 검사는 다른 물체와의 충돌을 감지하는데 사용되는 방법 중 하나이다. 이를 위해 OBB의 충돌 분리 축(the separating axis) 이론이 사용된다. OBB는 충돌 검사를 수행하기 위해 일반적으로 모델의 경계 상자로 사용된다. 이 상자는 일반적으로 물체의 모양에 맞게 회전할 수 있다. 이러한 OBB의 충돌 검사는 OBB의 축을 기준으로 수행된다. 목차 OBB(Oriented Bounding Box) collision Shader Framework Objects Collider.h .cpp UnitTest Objects ObbCollisionDemo.h .cpp 생성 Main.h .cpp OBB 충돌 - 분리축 이론 OBB..
[UE] Collsion(trigger, MultiTrigger, Explosion)
[UE] Collsion(trigger, MultiTrigger, Explosion)
2023.03.13충돌(Collision)의 가장 기본적인 방법은 두 물체의 바운딩 박스(Bounding Box)를 비교하는 것이다. 바운딩 박스란 물체를 둘러싸는 사각형 영역을 의미한다. 이 방법은 빠르고 간단하지만, 물체의 모양에 대한 정확한 충돌 검사는 수행하지 않는다. 목차 Trigger 충돌(Collision)의 가장 기본적인 방법은 두 물체의 바운딩 박스(Bounding Box)를 비교하는 것이다. 바운딩 박스란 물체를 둘러싸는 사각형 영역을 의미한다. 이 방법은 빠르고 간단하지만, 물체의 모양에 대한 정확한 충돌 검사는 수행하지 않는다. 보다 정확한 충돌 검사를 위해서는, 물체의 형태를 고려한 검사가 필요하다. 이를 위해 언리얼 C++에서는 물체의 형태를 기하학적인 도형으로 표현할 수 있는 Collisi..
[DirectX11] 069 Collider
[DirectX11] 069 Collider
2023.03.13글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자입니다 목차 Collider Shader Framework Objects Collider.h .cpp UnitTest Objects ObbRaycastDemo.h .cpp 생성 Main.h .cpp Collider Collider.h 더보기 #pragma once struct Ray { Ray() : Position(0, 0, 0), Direction(0, 0, 0) { } Ray(Vector3& position, Vector3& directio..
[DirectX11] 068 Unprojection - 2D 좌표를 3D 좌표로 변환
[DirectX11] 068 Unprojection - 2D 좌표를 3D 좌표로 변환
2023.03.132D 공간을 3D 공간으로 변환한다. 가까운면(근면)부터 거리가 먼면(원면)까지 방향을 구한 다음, 그것을 이어주는 선을 TrytoIntercept에 넣어주면 해당 삼각형의 위치가 나온다. 마우스의 위치를 2D로 변환한 좌표를 활용하여 삼각형을 그려 3D 좌표로 변환한다. 목차 Unprojection - 2D 좌표를 3D 좌표로 변환 Shader Framework Environment Terrain.h .cpp Viewer Viewport.h .cpp UnitTest Terrain GetRaycastDemo.h .cpp 생성 Main.h .cpp Terrain Terrain.h 더보기 #pragma once class Terrain { public: typedef VertexNormal TerrainVe..
[UE] Collision(Overlap, hit)
[UE] Collision(Overlap, hit)
2023.03.09언리얼 C++에서 충돌(Collision)을 다루기 위해서는, 먼저 충돌 검사(Collision Detection)를 해야 한다. 충돌 검사는 물체의 위치와 크기를 고려하여 두 물체가 서로 충돌했는지 여부를 판단하는 것이다. 언리얼 C++에서는 다양한 충돌 검사 방법을 제공한다. 목차 Collision 01_Spawn C01_Properties.h .cppC02_MeshC02_Mesh_SphereC02_Mesh_ConeC03_Spawner.h .cpp02_Profiler C01_Log.h .cppC02_DrawDebug.h .cpp03_Collision C01_ActorOverlap.h .cppC02_ComponentOverlap.h .cpp 생성C03_OverlapAndHit.h .cpp 생성C0..
[DirectX11] 067 Projection
[DirectX11] 067 Projection
2023.03.09목차 Projection IA -> VS -> RS -> PS -> OM VS (World, View, Projection 조정) RS (vp) NDC 공간 z(깊이)는 0~1인 이유는? (카메라) 뒤쪽은 없다. 고로 음수는 쓸 일이 없다. Perspective 원근 투영: 가까울수록 크고, 멀수록 작다.Orthographic 직교 투영: Projection 과정 = 3D 정점 → W, V, P → 2D Unprojection 과정 = 2D → W, V, P → 3D 정점 Picking이란?마우스 클릭 위치에서 far위치로부터의 거리를 활용하여 Unprojection Shader Framework Viewer Viewport.h .cppUnitTest Projection Pro..
[UE] Character Animation, Collsion
[UE] Character Animation, Collsion
2023.03.08언리얼 엔진 C++에서 캐릭터 애니메이션은 게임이나 다른 대화형 경험에서 캐릭터의 동작과 움직임을 제어하기 위해 코드를 작성하는 것이다. 이는 언리얼 엔진의 여러 C++ 클래스 및 함수, 예를 들어 캐릭터 클래스와 애니메이션 블루프린트 시스템을 사용하여 달성할 수 있다. 목차 Character Animation 애니메이션을 가지고 있으면, C++ 코드를 사용하여 애니메이션의 타이밍 및 블렌딩을 제어하고, 플레이어 및 다른 게임 시스템에서의 입력 처리와 같은 작업을 수행할 수 있다. 이는 PlayAnimMontage()와 같은 함수를 사용하여 특정 애니메이션 시퀀스를 재생하고, 애니메이션 상태 기계를 설정하여 애니메이션이 서로 전환하는 방식을 제어하는 것을 포함할 수 있다. 언리얼 엔진 C++에서의 ..
[DirectX11] 066 3D 공간에서 충돌체 선택하기
[DirectX11] 066 3D 공간에서 충돌체 선택하기
2023.03.08글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자입니다 목차 3D 공간에서 충돌체 선택하기 3D 공간에서 충돌체 선택하기 3D 공간을 2D 공간으로 변환 2D 공간을 3D 공간으로 변환 IA → VS → RS → PS → OM IA VS WVP(World, View, Projection) RS Vp(뷰포트 변환) PS OM Viewport Demo Context.h에서 만든 class Viewport* viewport; 사용. ViewportDemo.h 더보기 #pragma once #incl..
[UE] Character, GameMode
[UE] Character, GameMode
2023.03.07언리얼 C++에서 Gamemode(게임 모드)는 게임의 규칙과 플레이어들의 상호작용 방식을 정의하는 클래스다. Gamemode는 게임의 전반적인 진행 방식을 결정하며, 게임의 시작과 종료, 스코어 계산, 게임 오브젝트 생성 등을 담당한다. 목차 Character & Gamemode Gamemode는 C++ 클래스로 작성되며, 기본적으로 AGameModeBase 클래스를 상속하여 사용한다. Gamemode는 게임 내에서 하나의 인스턴스만 존재하며, 해당 인스턴스를 통해 게임의 전반적인 흐름을 제어한다. Gamemode 클래스에서는 다음과 같은 기능을 구현할 수 있다. 게임 시작과 종료: Gamemode는 게임이 시작되었을 때와 종료될 때의 로직을 구현한다. 예를 들어, 게임이 시작될 때 플레이어들에..
[DirectX11] 064~65 Bone 위치에 충돌체 삽입하기
[DirectX11] 064~65 Bone 위치에 충돌체 삽입하기
2023.03.06컴퓨팅 셰이더(Compute Shader)는 그래픽 렌더링에 주로 사용되는 정점 및 픽셀 셰이더와 같은 다른 유형의 셰이더와 달리, Compute Shader는 더 유연하고 다용도적으로 설계되어 있다. 목차 Animation Instancing Shader RawBuffer.fx GetAnimationBone.fx Framework Model ModeAnimator.h .cpp Objects Collider.h .cpp Renders Buffer.h .cpp Render2D.h .cpp UnitTest DirectCompute RawBufferDemo.h .cpp GetAnimationBoneDemo.h .cpp Instancing InstancingFrameworkDemo.h .cpp Main.h .c..
[DirectX11] 063 Compute Shader - GetAnimationBone 구현하기
[DirectX11] 063 Compute Shader - GetAnimationBone 구현하기
2023.03.06Compute Shader는 DirectX 11의 도구로 GPU 상에서 복잡한 연산을 수행할 수 있으며, 애니메이션의 경우 Compute Shader를 사용하여 Skeletal Animation System에서 Bone의 변환을 효율적으로 계산할 수 있어 CPU 오버헤드를 최소화하면서 실시간 애니메이션을 구현할 수 있다. 목차 Compute Shader - GetAnimationBone 구현하기 컴퓨팅 셰이더(Compute Shader)는 그래픽 렌더링에 주로 사용되는 정점 및 픽셀 셰이더와 같은 다른 유형의 셰이더와 달리, Compute Shader는 더 유연하고 다용도적으로 설계되어 있다.Compute Shader에서는 GPU 상의 여러 스레드(multiple threads)에 걸쳐 복잡한 연산..
[UE] Log 출력하기, Draw Debug 구현
[UE] Log 출력하기, Draw Debug 구현
2023.03.03언리얼 엔진에서 Draw Debug는 개발자들이 런타임 동안 다른 게임 시스템이나 코드 로직의 동작을 시각화할 수 있는 기능이다. 게임 엔진에서 일어나는 일을 시각적으로 보여줌으로써 진단하기 어려운 문제나 오류를 식별하는 데 도움이 될 수 있다. 목차 Log 출력하기 CLog 수정 CLog.h더보기#pragma once#include "CoreMinimal.h"//매크로로 치환#define LogLine() { CLog::Log(__FILE__, __FUNCTION__, __LINE__);}#define PrintLine() { CLog::Print(__FILE__, __FUNCTION__, __LINE__);}class U2212_03_API CLog{public: static void ..