일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 다형성
- lua
- resource management class
- 티스토리챌린지
- reference
- 반복자
- virtual function
- 언리얼
- 메타테이블
- effective stl
- Effective c++
- more effective c++
- 예외
- 참조자
- implicit conversion
- 스마트 포인터
- 루아
- 암시적 변환
- c++
- operator new
- exception
- 비교 함수 객체
- UE4
- 오블완
- 영화
- Vector
- Smart Pointer
- 상속
- 영화 리뷰
- 게임
- Today
- Total
목록언리얼 (8)
스토리텔링 개발자
데칼이란 예컨대 마법진처럼 임의의 무늬를 표현해야 할 때가 있습니다. 위치를 유동적으로 처리해야 하므로 머터리얼을 바꾸는 방식으로는 대처하기 어렵습니다. 단순하게 생각해보면 무늬용 오브젝트를 설치하면 될 것 같습니다. 그리고 데칼이 바로 그 '무늬용 오브젝트'입니다. 설치 데칼을 사용하는 방법은 간단합니다. 우선 액터를 배치하고, 디테일 창에서 Decal Material을 적용해주면 됩니다. 유의점 Sort Order 소트 오더의 값이 높을수록 상단에 위치하게 됩니다. 데칼이 중첩되어 있으면 소트 오더가 가장 높은 데칼이 가장 위에 표시됩니다. 데칼 머터리얼 데칼 머터리얼에 머터리얼을 적용하기 위해서는 머터리얼의 'material domain' 속성이 'deferred decal'이어야 합니다. 애니메이..
개요 이전에 밉맵에 대해 정리한 적이 있습니다. [UE4] 텍스쳐 스트리밍 시스템(Mipmap) 개요 최적화를 위해서 여러가지 것들을 해볼 수 있을텐데요. 그 중 한가지 선택지가 바로 텍스쳐의 품질을 조절하는 것입니다. 하지만 무턱대고 저품질 텍스쳐를 떡칠하면 게임의 퀄리티가 무 delightlane.tistory.com 이에 착안하여 다음과 같이 생각해볼 수 있겠습니다. 다양한 품질의 텍스쳐로 밉맵을 구성했듯, 메시의 품질(폴리곤 수)도 조절할 수 있지 않을까? 이에 해당하는 기능이 바로 LOD 입니다. LOD 설정 LOD 설정은 스테틱 메시에 적용합니다. LOD를 설정하는 가장 심플한 방법은 아래와 같습니다. LOD 레벨에 따라 FBX 파일을 임포트 LOD 레벨에 따른 스크린 사이즈 비율 설정 LOD..
개요 애니메이션 노티파이는 애니메이션과 함께 여러 동작들을 처리하고 싶을 때 사용하는 기능입니다. 아래에서 좀 더 깊게 알아보겠습니다. 애니메이션 노티파이란 애니메이션 시퀀스 특정 지점에서 이벤트를 발생시키는 기능입니다. 일반적으로 연출(이펙트(발자국 소리 등)나 파티클(흙먼지 등)을 스폰)에 사용합니다. 노티파이는 애니메이션 시퀀스의 노티파이 트랙 오른쪽 마우스를 눌러 추가할 수 있습니다. 기본적으로 엔진에서 범용적으로 사용 가능한 노티파이를 여럿 준비해 두었습니다. 또한 커스텀 노티파이를 생성하여 자신이 원하는 기능을 구현할 수도 있습니다. 애니메이션 노티파이 스테이트란 애니메이션 노티파이의 종류는 두 가지입니다. 애니메이션 노티파이 애니메이션 노티파이 스테이트 애니메이션 노티파이가 특정 시점(점)을..
개요 언리얼 엔진에 있는 타입을 크게 나눠보면 아래와 같습니다. UObject를 위시하는 클래스 타입 구조체 타입 이 중 2번, 구조체에 대해서 정리해 보았습니다. 구조체의 선언 선언부는 UObject 기반 클래스와 같습니다. GENERATED_BODY() 매크로로 리플랙션 관련 함수들을 추가 생성자 선언 / 정의 USTRUCT() struct FTempStruct { GENERATED_BODY() public: FTempStruct() {} }; 구조체와 클래스의 차이 구조체를 사용하는 이유는 UObject 클래스가 구조체보다 무겁기 때문입니다. 구조체에서는 대표적으로 아래와 같은 기능들을 제공하지 않습니다. 가비지 컬렉팅 불가 구조체는 가비지 컬렉션의 관리를 받지 않습니다. 즉, 동적 할당을 한 경우..
개요 언리얼에서 레벨은 맵을 의미합니다. 엄밀하게는 맵과 맵 위의 모든 오브젝트들을 포괄하는 상위 오브젝트입니다. 어떤 오브젝트의 Outer 체인을 타고 올라가다 보면 반드시 그 끝에선 레벨 오브젝트를 만나게 된다는 뜻입니다. [UE4] 상위 객체 (Outer / Owner / AttachParent) 개요 이런 저런 객체들을 다루다 보면 의아할 때가 있습니다. 그러니까 객체들의 상위에 있는 객체가 분명한 네이밍인데 네이밍이 여러개일 때요. 저의 경우 Outer와 Owner가 굉장히 헷깔렸습니다. delightlane.tistory.com 다수의 레벨 구성 게임 전체의 맵과 오브젝트를 표현하기엔 단 하나의 레벨로는 무리입니다. 게임 내에 존재하는 그 수많은 오브젝트를 하나의 레벨에 담아 관리하는 건 부담..
개요 언리얼은 오브젝트 생성에 대한 다양한 방법을 제공합니다. 어떤 상황에서 어떤 메소드를 사용하는 것이 좋을까요? 오브젝트 생성 오브젝트를 생성하는 대표적인 메소드들입니다. ActorSpawn / NewObject 생성자에서는 사용할 수 없습니다. 일반적으로 BeginPlay에서 사용합니다. CreateDefaultSubobject 생성자에서만 사용 가능합니다. 생성자의 매개변수인 FObjectInitializer를 전달해야 하기 때문입니다. 즉, 해당 함수로 오브젝트를 생성하려면 사용할 수 있는 FObjectInitializer가 있어야 합니다. 오브젝트는 서브 오브젝트(혹은 컴포넌트)로 생성됩니다. 각각은 생성자에서 사용하느냐, 아니냐로 구분됩니다. NewObject의 매개변수 NewObject 메..
개요 언리얼의 리플렉션에 대해 정리하겠습니다. 리플렉션이란 위키백과에서는 리플렉션을 아래와 같이 정의합니다. 런타임 시점에 사용되는 자신의 구조와 행위를 관리(type introspection)하고 수정할 수 있는 프로세스를 의미한다. 즉, 자신의 정보를 런타임에 해석하고 활용할 수 있는 기능 이라 할 수 있습니다. 예를 들어보겠습니다. 변수 enum을 string으로 가져오고 싶을 때. 클래스 인스턴스가 특정 함수를 가지고 있는지 string으로 확인하고 싶을 때. 클래스 인스턴스의 클래스 이름에 어떤 문자열이 포함되어 있는지 확인하고 싶을 때. 언리얼 리플렉션 시스템 리플렉션 기능은 엔진에서 제공하는 기능입니다. 엔진에서 리플렉션을 지원하는 시스템이 언리얼 프로퍼티 시스템 혹은 언리얼 리플렉션 시스템..
개요메모리 관리는 C++의 난점 중 하나입니다. 스택에 할당된 메모리는 범위만 잘 지켜주면 대부분은 괜찮지만,힙에 할당한 메모리는 물가에 내놓은 갓난 아이처럼 끝까지 잘 지켜봐 줘야 합니다.자칫 잘못하면 그대로 소중한 메모리의 누수로까지 이어집니다. 좀 더 편하게 메모리 관리를 할 수 있는 방법은 없을까요? 그런 고민에서 생겨난 것이 이름처럼 스마트한 스마트 포인터입니다. 이 스마트 포인터는, 이젠 준 필수 기능이 되었습니다.이전까진 시험적으로 사용해오다가, 모던 C++부터는 정식 라이브러리에 완전히 편입되기까지 했죠. 또한 언리얼 역시 이 C++ 라이브러리가 제공하는 스마트 포인터와 거의 동일한 것을 제공하고 있습니다. 오늘 이야기해 볼 것이 이 언리얼의 스마트 포인터 입니다. 스마트 포인터의 종류..