posted by cimple 2019. 8. 29. 12:18

Maya Instance 는 서로 다른 Transform node 가 하나의 shape node 를 공유하는 개념이다.

손쉽게 만드는 방법은 Maya 의 Edit > Duplicate Special 에서 Geometry type 을 Instance 로 바꾸어 준 뒤 실행하면 된다.

Outliner 에서 확인하면 서로 다른 transform 에 동일한 shape 이 들어 있는 것을 확인할 수 있고,

마찬가지로 shape 을 공유하기 때문에 transform 은 각각 자유롭게 움직일 수 있는데 vertex edit 모드에서 shape 을 변형시키면 모양이 함께 바뀌는 것을 확인할 수 있다.

Maya command 에서는 간단하게 다음 명령어로 인스턴스를 만들 수 있다.

import maya.cmds as mc
mc.instance('pSphere1')

이렇게 만들어진 instance 의 관계를 알아보면, 먼저 listRelatives("shape_name", p=True) 커맨드로 체크해보면 outliner 상에는 서로 다른 transform 을 parent 로 가지고 있는 것으로 나오지만 커맨드상으로는 원래 원본 transform 만을 가진다고 나온다. 

- Maya Duplicate vs Maya Instance

PolySphere 1개를 생성하는 것을 duplicate 와 instance 를 통해서 비교해 보았다.

생성 시간 test -

생성 오브젝트 개수 [100, 1000, 2000, 3000, 4000, 5000]

duplicated :[0.14700007438659668, 1.5250000953674316, 3.196000099182129, 4.937000036239624, 6.734999895095825, 9.273000001907349]

instance:
[0.12400007247924805, 2.371000051498413, 14.746999979019165, 57.71499991416931, 162.31100010871887, 361.1760001182556]

Instance 가 생성시간이 이렇게 오래 걸리는 이유에 대해서는 R&D 가 더 필요할 것 같다.

저장 용량 test -

2000 개의 sphere 를 생성했을 때, duplicate 로 생성한 scene 은 60.2MB, instance 로 생성한 scene 은 917KB 로 비교가 안 될 정도로 압도적인 용량 차이를 보여주었다. (약 65배 차이) 참고로, sphere 하나만을 저장했을 때 필요한 저장공간은 50KB 이다.

instance 는 하나 늘어날 때 마다 transform node 가 하나씩 늘어나지만 duplicate 는 mesh shape 정보가 모두 저장되므로, 만약 동일한 shape 을 가진 object 의 transform 만을 조절해서 asset 을 구성할 때에는 instance 가 압도적일 수 밖에 없음을 알 수 있다.