Code Less, Create More!

Simple but useful code snippets for 3D Graphic Developers

반응형

Unreal Engine 10

FString과 std::string의 메모리 사용량 비교 (Unreal Engine, C++)

대부분의 C++ 프로젝트에서 문자열은 텍스트, 식별자 및 기타 데이터 유형에 사용되는 기본 데이터 유형입니다. 그러나 문자열은 자주 사용되거나 많은 양의 데이터를 포함하는 경우 상당한 양의 메모리를 소비할 수 있습니다. 메모리를 절약해야 하는 프로젝트에서는 문자열 개체의 메모리 사용량을 신중하게 고려하고 최소화하는 것이 중요합니다. 언리얼 엔진에서 FString은 기능의 편리함과 엔진의 전체 구조와의 무결성으로 인해 사용하기 쉬운 클래스이지만 특정 상황에서는 std::string을 대신 사용해야 할 경우도 있습니다. 문자열 클래스의 메모리 사용량 확인 // 13 characters std::string MyStdString = "Hello, world!"; FString MyFString = "Hello..

Unreal Engine 2023.04.22

여러 객체를 대상으로 카메라 전환하는 방법 (Unreal Engine, C++)

여러 대상 간에 카메라를 전환하면서 사용자의 입력을 처리하는 ​​기술은 게임에서만 필요한 것이 아닙니다. 이 기술은 갤러리, 전시회, 제품 매장 및 시뮬레이션과 같은 여러 유형의 응용 프로그램에서 사용할 수 있습니다. 예를 들어 갤러리 또는 제품 매장 앱은 유사한 시스템을 사용하여 사용자가 다양한 전시품, 예술품 또는 제품의 카테고리 와 개별 제품 사이를 탐색할 수 있도록 할 수 있습니다. 선택한 항목에 초점을 맞추도록 카메라를 배치하여 사용자가 작품을 자세히 볼 수 있도록 합니다. 차량 또는 항공기와 관련된 시뮬레이션 애플리케이션의 경우 사용자는 다른 비행기 사이를 전환하거나 다른 차량 사이를 운전할 수 있습니다. 카메라는 각 개체에 대한 자세한 보기를 제공하도록 배치되어 사용자가 다양한 관점에서 시뮬..

Unreal Engine 2023.04.22

두께를 가진 Polyline을 Procedural Mesh로 생성하는 방법 (Unreal Engine, C++)

경로, 테두리 및 기타 선 모양 형태를 만드는 데 사용되는 사용자 지정 두께를 가지는 폴리라인(Polyline)을 생성하는 것은 3D 애플리케이션 개발에서 흔하게 요구되는 기능입니다. 그러나 시각적으로 매력적이고 그럴듯한 결과를 보여주도록 이 기능을 구현하는 것은 다소 어려울 수 있습니다. Unreal Engine에는 Line(선)을 그리는 데 사용할 수 있는 내장 함수가 없기 때문에, 메시의 지오메트리로 라인 세그먼트들을 만들기 위해서는 직접 계산을 처리해야 합니다. (Unreal Engine은 개발 중 에디터에서 디버깅 용도로 라인 세그먼트를 그리는 DebugDrawLine()이라는 함수를 제공합니다. 그러나 이 함수는 게임의 프레임 속도에 큰 영향을 미칠 수 있기 때문에 성능이 중요한 애플리케이션에..

Unreal Engine 2023.04.01

DrawDebugLine()의 런타임 성능 (Unreal Engine, C++)

언리얼 엔진에서는 물체의 외곽선을 표현하거나 다이어그램을 만들거나 데이터를 시각화하기 위한 여러 목적으로 라인 드로잉을 만드는 다양한 방법이 있습니다. 다음은 언리얼 엔진에서 사용할 수 있는 라인 드로잉 방법의 일부입니다. Draw Debug Line: 이 함수는 언리얼 엔진에 내장된 함수로, 월드 좌표계에서 두 지점을 연결하는 간단한 선을 그릴 수 있습니다. 물체의 경로를 그리거나 충돌 형태를 시각화하는 등 디버깅 목적으로 자주 사용됩니다. DrawDebugLine()을 사용하려면 시작점과 끝점, 선의 색상과 두께를 지정해서 호출하면 됩니다. Material Line Drawing: 이 방법은 재질을 사용하여 더 복잡한 라인 드로잉을 만드는 방법입니다. 커스텀 재질을 만들고 메시나 다른 물체에 적용하여..

Unreal Engine 2023.03.22

Unreal Engine(C++)에서 Material을 로드하는 방법

머티리얼(Material: 재질)은 언리얼 엔진에서 장면을 렌더링할 때 필수적인 요소입니다. 머티리얼은 객체가 어떻게 Shading(음영 처리)되고 텍스처 매핑되어야 하는지를 정의하는, 언리얼 엔진 렌더링 파이프라인의 핵심 구성 요소입니다. 머티리얼은 보통 언리얼 엔진의 머티리얼 에디터를 사용하여 생성합니다. 머티리얼 에디터에서는 머티리얼의 속성을 정의하는 노드 네트워크를 시각적으로 구성하고 편집할 수 있습니다. 머티리얼이 생성되면 3D 장면을 구성하는 객체들의 메시 컴포넌트에 적용하여 사용할 수 있습니다. 언리얼 엔진에서는 C++을 사용해 프로그래밍으로 머티리얼을 불러오고 조작할 수 있습니다. 이를 통해 이벤트나 사용자 상호 작용에 따라 변경되는 동적인 머티리얼을 생성할 수 있습니다. 또한 객체 간에 ..

Unreal Engine 2023.03.15

정다각형(N-gon)을 Procedural Mesh로 생성하는 방법 (Unreal Engine, C++)

다각형은 기본적인 삼각함수와 벡터 수학을 이용해 만들 수 있는 3D 그래픽스의 기본 도형이며 정점과 변으로 정의되는 평면 도형입니다. 특히 모든 측면의 내각이 동일한 다각형을 정다각형(Regular Polygon)으로 부르며 이 포스트에서는 간단히 다각형으로 부르겠습니다. 컴퓨터 그래픽에서는 다각형을 이용해 3D 모델, 게임 환경 및 시뮬레이션 등을 만듭니다. 이들은 삼각형, 사각형 및 직사각형과 같은 단순한 도형을 만드는 데 자주 사용됩니다. 하지만 구와 원통 등과 같은 보다 복잡한 도형을 만드는 데도 사용됩니다. 다각형은 세 개 이상의 변을 가진 기하 도형입니다. 변의 수에 따라 다각형을 N-gon 이라고 부르며, "N"은 변의 수를 나타냅니다. 예를 들어, 삼각형은 3-gon, 사각형은 4-gon,..

Unreal Engine 2023.03.14

Unreal Engine(C++)에서 Actor와 Component 찾는 방법

객체 지향 프로그래밍에서는 모든 것이 객체이기 때문에 프로그래밍 작업 과정은 보통 대상 객체를 찾는 것에서 시작하는 경우가 많습입니다. 객체를 찾으려면 일반적으로 객체를 저장하고 있는 컬렉션 또는 데이터 구조를 검색해야 합니다. 예를 들어, 특정 기준을 충족하는 객체를 찾기 위해 배열이나 리스트를 검색하는 루프에서 이름이나 속성을 확인하는 작업이나 찾아낸 객체의 메서드를 호출하는 등의 작업들이 그러한 사례들입니다. 언리얼 엔진은 GetActorOfClass, GetAllActorsOfClass, FindComponentByClass 및 Iterator와 같이 클래스에 따라 객체를 검색하기 위한 다양한 메서드를 제공합니다. 이러한 메서드를 사용하면 게임 세계에서 특정 유형의 객체를 효율적으로 검색할 수 있..

Unreal Engine 2023.03.12

Unreal Engine(C++)에서 객체의 클래스 상속 관계 확인 방법

C++에서 객체지향의 상속 개념을 사용하면 기존 클래스에서 속성과 동작을 상속받아 새로운 클래스를 만들 수 있습니다. 이를 통해 코드 재사용과 모듈성이 향상되는 등 효율적인 프로그래밍이 가능합니다. Unreal Engine에서 프로그래밍할 때는 일반적으로 UObject 클래스에서 파생된 객체를 사용합니다. 1. UObject의 Class UClass* ObjectClass = RootComponent->GetClass(); UClass* ParentClass = RootComponent->GetClass()->GetSuperClass(); UClass* MeshComponentClass = UMeshComponent::StaticClass(); GetClass() 메서드는 UObject 클래스의 멤버 함..

Unreal Engine 2023.03.12

glTFRuntime Plugin - glTF 3D 모델을 실행중에 로드하는 방법 (Unreal Engine, C++)

언리얼 엔진에서는 변환된 에셋 형식으로 저장된 Content 디렉토리에 저장된 3D 모델을 로딩할 수 있습니다. 그러나 프로젝트에 따라 Content 디렉토리에 저장할 수 없는 런타임에 3D 모델을 로드해야 할 수도 있습니다. 예를 들어, 사용자가 만든 아바타 또는 3D 갤러리에 전시자가 업로드한 작품, 메타버스 환경의 사용자 제작 월드 등의 프로그램에서라면 동적으로 3D 모델을 로드해야 합니다. glTF Plugin 이런 경우에 glTF 포맷과 플러그인을 사용하면 3D 모델을 런타임에 동적으로 로드해서 사용할 수 있습니다. glTF는 3D 에셋 전달 및 교환을 위한 ISO/IEC 국제 표준 형식입니다. 다양한 애플리케이션 및 서비스에서 glTF를 지원합니다. https://www.khronos.org/..

Unreal Engine 2023.03.11

현재 카메라의 위치와 회전값을 얻어내는 방법 (Unreal Engine, C++)

카메라는 게임에서 가장 중요한 요소 중 하나로, 플레이어에게 세계를 보여주는 역할을 합니다. 3D 개발자로서, 객체를 생성하거나 장면의 시점을 지정된 방향을 바라보도록 객체를 조정하는 등의 작업을 수행하기 위해 카메라의 위치와 회전값을 얻어내야 합니다. Unreal Engine에서는 다양한 방식으로 객체들을 조합해서 장면을 구성하기 때문에 복잡한 구조로 부터 빠르게 카메라의 위치와 회전 정보를 얻는 방법을 알아두면 매우 유용하게 사용할 수 있습니다. 1. Player Camera Manager 사용 Unreal Engine에서는 PlayerCameraManager 클래스를 통해 카메라 위치와 회전을 직접적으로 가져올 수 있습니다. PlayerCameraManager는 플레이어의 카메라를 관리하는 클래스로..

Unreal Engine 2023.03.11
반응형