Code Less, Create More!

Simple but useful code snippets for 3D Graphic Developers

반응형

전체 글 22

간편한 이미지 편집 도구로 PowerPoint를 활용하기

SW 개발자로서 텍스처, 아이콘, 로고 등 다양한 목적으로 이미지 파일을 편집해야 하는 경우가 종종 발생합니다. 작업이 비교적 간단한 경우라면 전문 이미지 편집 소프트웨어를 설치하거나 사용 방법을 배우고 튜토리얼을 시청하는 대신, PowerPoint를 사용할 수 있습니다. 간단한 작업과 빠른 편집을 위해 Microsoft PowerPoint는 전문 이미지 편집 소프트웨어에 비해 편리하고 접근하기 쉬운 대안이 될 수 있습니다. PowerPoint는 인터페이스와 기능에 이미 익숙한 사용자에게 특히 유용합니다. PowerPoint에서는 다음과 같은 기본적인 이미지 편집 작업을 수행할 수 있습니다: 이미지 크기 조정 및 자르기 밝기, 대비, 선명도 조절 이미지에서 배경 제거 기본적인 예술 효과 및 필터 적용 텍..

구의 표면에 점들을 균등하게 분포시키는 방법 (Three.js)

구면 상에 점들을 고르게 분포시키는 문제는 기하학에서 고전적인 문제 중 하나이며, 컴퓨터 그래픽, 분자 모델링, 물리학 등 다양한 분야에서 활용됩니다. 실용적으로 가장 적절한 방법 중 하나는 "Fibonacci Sphere"를 사용하는 것입니다. 이 방법은 피보나치 나선형 구를 기반으로 하여 구의 표면에 점들을 나선형 패턴으로 배치합니다. 각 나선층마다 포인트 수가 피보나치 수열에 따라 증가하여, 결과적으로 점들이 대략 고르게 분포하게 됩니다. 다른 방법으로 "Geodesic Sphere (측지식 구)"를 사용할 수 있는 데, 측지선의 개념에 기반하여 점들을 구에 분배합니다. 측지식 구는 일정한 점의 수를 제어할 수 있지만, 분포가 고르지 않을 수 있으며, 피보나치 구처럼 조절성이 좋지 않습니다. 또 다..

Three.js 2023.04.05

두께를 가진 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

{ } (중괄호)를 사용한 일관된 초기화 (모던 C++)

C++ 프로그래머라면, 최근 몇 년 동안 언어에 추가된 "초기화 리스트", "일관된 초기화", 그리고 "멤버 초기화"와 같은 용어를 들어봤을 것입니다. 이러한 기능들은 간단하면서도 강력하며, 더 표현력 있고 효율적인 코드를 작성하고자 한다면 살펴보는 것이 좋습니다. 이러한 새로운 초기화 방법들은 사실 객체를 값의 목록으로 초기화하는 방법입니다. 다시 말해, 생성자에 여러 개의 인수를 전달하거나 배열에 값을 할당하는 경우에 간결하고 읽기 쉬운 방법으로 이를 수행할 수 있습니다. 1. 초기화 리스트 "C++"에서 "초기화"라는 용어는 새로운 것이 아니며, 과거에도 여러 가지 변수 초기화 방법이 제공되어 왔습니다. 그러나 최신 C++에서 도입된 일관된 초기화 구문과 초기화 리스트는 초기화 프로세스를 크게 단순..

C++ 2023.03.19

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

SinCos() 함수를 사용한 빠른 sin, cos 계산

삼각함수(sin(), cos(), tan())는 엔지니어링부터 그래픽 프로그래밍 등 여러 분야에서 널리 사용되며 회전, 애니메이션 등 복잡한 수학적 연산에 필수적입니다. 특히 회전 연산에서는 특정한 각도에 대해 사용하는 경우가 자주 있으며 이런 경우를 위해 C++를 비롯한 많은 프로그래밍 언어에서는 sin()과 cos()을 직접 호출하거나 SinCos()을 호출하는 두 가지 방법이 있습니다. SinCos() 함수는 주어진 각도에 대해 sine과 cosine 값을 동시에 계산하는 특수한 함수입니다. SinCos()는 sin()과 cos()에 비해 많이 알려져 있지 않지만 이들을 따로 호출하는 것보다 더 빠른 경우가 많아 사용해 볼 가치가 있습니다. 그러면 그 이유는 무엇일까요? Computation ove..

C++ 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
반응형