티스토리 뷰
최근 일주일 조금 넘도록 런타임에서 스태틱 메시를 생성하는 방법을 알기 위해서 엔진을 뒤적거렸었습니다. 결과적으로는 시간과 도메인 지식의 부족으로 인해서 후일로 기약하게 되었습니다만, 그동안 알게된 것을 조금 적어보고자 합니다.
이번 포스팅에서는 그 중 런타임 중에 스태틱 메시가 가지고 있는 정점 배열에서 정점을 읽어오는 것을 설명하고자 합니다.
RenderData
스태틱 메시, UStaticMesh 클래스는 런타임뿐만 아니라 에디터 모듈 및 개발자(Developer) 모듈과도 얽혀있는 복잡한 클래스입니다. UStaticMesh 클래스에는 다양한 멤버 변수들과 함수들이 정의되어 있지만, 대부분이 에디터와 관련되어 있어 패키지된 빌드에서 UStaticMesh 클래스에서 가지는 변수, 함수들은 많지 않습니다.
그 중 핵심은, RenderData 변수입니다. RenderData는 UStaticMesh 클래스에더 다음과 같이 정의되어 있습니다.
/** Pointer to the data used to render this static mesh. */
TUniquePtr<class FStaticMeshRenderData> RenderData;
RenderData에는 스태틱 메시에 대한 많은 데이터들을 가지고 있습니다. 정점, UV, 버텍스 컬러 등이 있으며, 이 중 정점 정보에 접근하기 위해서는 다음 코드를 사용하면 됩니다
YourStaticMesh->RenderData->LODResources[LODIndex].VertexBuffers.PositionVertexBuffer.VertexPosition(Index)
여기서 YourStaitcMesh는 UStaticMesh의 인스턴스, Index는 해당 정점 버퍼의 정점에 접근하기 위한 인덱스라고 보시면 됩니다. 만약 특정 스태틱 메시의 모든 정점 정보를 출력하고 싶다면 다음과 같이 할 수 있습니다:
for (int32 LODIndex = 0; LODIndex < InStaticMesh->RenderData->LODResources.Num(); ++LODIndex)
{
for (uint32 Index = 0; Index < InStaticMesh->RenderData->LODResources[LODIndex].
VertexBuffers.PositionVertexBuffer.GetNumVertices(); ++Index)
{
FVector EachVector = InStaticMesh->RenderData->LODResources[LODIndex].
VertexBuffers.PositionVertexBuffer.VertexPosition(Index);
UE_LOG(LogClass, Log, TEXT("Index(%d) : (%s)"), Index, *EachVector.ToString());
}
}
결과
레퍼런스
'개발 > Unreal Engine 4' 카테고리의 다른 글
Unreal UMG와 HUD, 그리고 Slate(Unreal UMG, HUD, and Slate) (2) | 2019.07.13 |
---|---|
언리얼 반복자(Unreal Iterator) (0) | 2019.07.04 |
언리얼 모듈 컴파일(Unreal Module Compile) (0) | 2019.06.08 |
언리얼 경로 함수(Unreal Path Helper) (1) | 2019.06.03 |
언리얼 오브젝트(Unreal Object) - Outer (0) | 2019.06.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- c++ 핫 리로드
- 언리얼 엔진
- P4 Stream
- code copyright
- C++ Compile error
- 퍼포스 개요
- 행렬
- Perforce Streams
- P4 Streams
- UE4
- C7568
- 코드 저작권
- 퍼포스 스트림
- Visual Studio C1083
- visual studio hot reload
- GoogleTest
- 구글테스트
- Auto
- 구간합
- c++ hot reload
- 알고리즘
- MSVC C1083
- visual studio 핫 리로드
- C# 람다식
- C# 익명함수
- C# lambda expression
- game hot reload
- DXGI
- C++
- Perforce Stream
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함