Posted: December 1, 2017
Version: Houdini 16
Packed Primitives 란?
원론적인 의미는 메모리 사용량을 줄이기 위해 지오메트리를 렌더타임에 만들어내는 테크닉이다.
즉, 작업하는 동안은 지오메트리 정보를 숨기고(Packed) 최종 렌더링시 다시 꺼내오는 식이다.
지오메트리 정보란 Point, Vertex, Primitive 번호 또는 동반되는 어트리뷰트, 그룹 등의 디테일을 말한다.
Packed Primitives 특징
Packed Primitives 는 편집하거나 수정할 수 없다.
이는 Packed 지오메트리는 디테일 정보가 숨겨져 있기 때문이다.
Packed Primitives 는 일반 지오메트리보다 여러 단계에서 효율적이다.
후디니 씬뷰에 지오메트리를 디스플레이 해주는 속도가 빨라진다.
RBD 시뮬레이션 속도가 빨라진다.
Packed 지오메트리를 RBD 소스로 만들면 처리속도가 놀라울 정도로 빨라진다.
IFD 파일이 가볍게 된다.
IFD 이란 후디니가 렌더러(Renderer) 에 보내는 Scene Description 텍스트 파일을 말한다.
IFD 파일은 컴퓨터의 디스크 공간을 쉽게 잡아먹을 수 있다.
IFD 파일이 가벼워지면서 자연스럽게 렌더링 속도 또한 빨라진다.
Packed Primitives 예제
Copy SOP 은 복잡한 물체를 복사시 자칫 작업을 무겁게 만들 수 있다.
이때, Packed Primitives 는 그 힘을 발휘한다.
후디니를 열고 네트워크 뷰에서 /obj 에 지오메트리를 하나 만든다.
만들어진 'geo1' 노드를 더블클릭하여 Geometry 레벨로 들어간다.
TAB 메뉴를 이용해서 다음 3개의 SOP 노드를 만든다.
Pig Head 는 후디니에서 제공하는 기본 테스트 오브젝트들 중 하나이다.
- Grid
- Test Geometry: Pig Head
- Copy to Points
만들어진 3개의 노드를 다음과 같이 연결한다.
여기까지는 단조로운 Copy SOP 의 결과이다.
Pig Head 가 그리드 각 점에 복사되어 백 개가 된다.
마우스 중간버튼으로 'testgeometry_pighead1' 의 노드 정보를 보자.
한 개의 Pig Head 를 생성하는데 대략 360KB 의 메모리를 쓰고 있다.
이번에는 복사 결과인 'copytopoints1' 의 노드 정보를 본다.
백 개의 Pig Head 를 복사하므로 메모리 사용량도 42MB 로 껑충 뛰었다.
Points, Primitives, Vertices, Polygons 개수들도 백 배가 된다.
원래의 Pig Head 에 있는 모든 어트리뷰트와 모든 그룹들도 그대로 복사된다.
이제 Packed Primitives 를 활용해서 그 차이점을 보자.
'copytopoints1' 노드의 Pack and Instance 옵션을 켜준다.
그리고 다시 'copytopoints1' 의 노드 정보를 보자.
Pack Primitives 로 만들자 마자 메모리가 약 139KB 로 뚝 떨어진다.
또한 모든 어트리뷰트와 그룹 정보가 사라졌음을 알 수 있다.
대신 복사되는 Pig Head 개수에 따라 100개의 새로운 Packed Geos 가 생긴다.
Points, Primitives, Vertices 개수 또한 모두 100이 된다.
씬 뷰에는 변함없이 100개의 Pig Head 가 있지만 복사되었다고 말하긴 어렵다.
Grid 100개의 점이 동일한 Pig Head 지오메트리를 참조하고 있다고 말할 수 있다.
복사하지 않고 참조만 하므로 메모리 사용량이 대폭 줄어든 것이다.
위의 예제보다 더 복잡한 오브젝트를 더 많이 복사한다고 생각해보라.
Packed Primitives 는 선택이 아니라 필수로 다가올 것이다.