2012년 12월 4일 화요일

Maya 2012 OpenEXR 압축방식

maya 2011 까지는 mental ray file output 에서 OpenEXR(exr) 을 선택 할 경우 활성화 되지 않던 압축 방식을 지정하는 부분이 2012 에서 활성화가 되었습니다.

OpenEXR 은 비손실 압축을 지원하므로 지금까지 render passes 셋팅으로 단일 파일에 레이어를 다 포함하여 랜더를 걸경우 이미지 한장당 100M 넘기는건 우스운 일이었습니다.(half float -16bit 일경우에도 어마어마한 용량을 보여주죠..)


위 그림처럼 Image compression 탭이 활성화가 됩니다.

간단한 테스트로 900x1200 사이즈의 캐릭터를 랜더를 걸었으며
패스는 다음과 같습니다.(기본적으로 제가 mental ray 를 사용하여 랜더를 할때 2d 에 넘겨주는 패스 구조 입니다.)


이러한 셋팅에 frame buffer 에서 리니어 워크 플로우를 적용 한뒤 랜더를 걸었습니다.
위는 32bit floating point 셋팅입니다.

이처럼 랜더를 하였을때 각 압축 방식별 용량입니다.

위처럼 b44 압축 방식을 제외 하고 랜더를 걸어 보았습니다.

비손실 압축 외에 pxr24 압축 방식도 테스트를 해 보았으며 b44 방식은 손실이 많다고 하여 테스트에서 제외 했습니다.

실제 용량문제로 인해 여태까지 영화 작업을 하면서 half float (16bit) 형태로 랜더를 걸었었으며 2d 합성중에 손실로 인한 문제가 발생 하지 않았기에 pxr24 방식은 랜더를 걸어 보았습니다.

위중에 zip 방식과 pxr24 방식은 시퀀스 랜더를 통해 nuke 에서의 로딩 속도등도 테스트 할 예정이며(언제가 될지는 잘... ^^;) 실제 걸어본 이미지를 nuke에서 간단하게 gamma 와 gain  을 조절 하며 밝기가 극명한 부분과 어두운 부분의 픽셀 포인트를 비교 해본결과 무손실 압축인 rle와 zip 방식은 무압축인 none 과 동일 하였으며 pxr24 방식의 경우 간혹 0.00001~0.00002 의 오차가 확인 되었습니다.

실제 컴퍼지팅에서 얼마나 문제가 될지는 알 수 없지만 32bit 를 24bit 로 압축하는것이니 half float 형태로 진행해왔던 그간 문제가 되지 않았기에 문제가 없을것으로 판단됩니다.(지극히 개인적인 견해 입니다.^^;)

시퀀스로 랜더를 하였을경우 nuke 에서 로딩이 얼마나 차이가 나는지는 다시 체크를 해보아야겠지만 실제 랜더된 이미지의 사이즈 만으로도 크게 부하가 줄 것으로 예상됩니다.

http://en.wikipedia.org/wiki/OpenEXR

위는 위키의 OpenEXR 포맷에 관련된 페이지 입니다. 참고 하시면 도움이 되실 겁니다.


추가)  한글로 된 문서가 있어 추가 합니다.

http://ettrends.etri.re.kr/PDFData/19-1_033_042.pdf