아놀드렌더(Arnold for MAYA)에서 투명 알파맵이 안빠질때 해결/일괄처리MEL
아놀드렌더 이상한 짜증나는 거 하나 발견.
투명 알파 텍스쳐를 맵핑했는데 뷰포트에서 보면 분명 투명한 부분은 빠져 있다. 그런데 렌더링을 걸면 이게 투명으로 안되고 판때기(board)가 그대로 보여지는거다.
또 짜증나서 구글링... 아놀드 홈페이지에 나와있다.
오브젝트 노드 중에 mesh 노드에 보면 Anorld 탭이 있는데, 그 탭 안에 Arnold Translator 부분 보면 Opaque(뜻은 불투명)라는것이 있는데 기본으로 체크가 되어 있다. 즉, "이 오브젝트 메쉬는 기본적으로 불투명한것입니다"라고 아놀드는 선언하고 있는것. 아놀드 탭에 있는것 처럼 이것은 아놀드렌더에만 해당이 된다. 그래서 알파가 있는 투명맵을 쉐이더에 적용을 했더라도 이 mesh에서 '불투명함'을 꺼줘야 한다는 것이다.
그래서 일단 '투명도:알파맵' 문제는 해결... 했으나....
기존에 작업하던 씬이라면... 오브젝트가 수천개 수만개면 수천번 수만번 작업을 해줘야 한다는 것이다. ㅎㄷㄷㄷㄷ. 이것을 아놀드렌더제작진도 두려웠는지 마야의 spread sheet 속성에 추가를 해놓았다고 한다. 스프레드시트 열어서 한번에 바꿔줄수가 있다.
그런데 스프레드시트보다 그냥 직관적으로 MEL이 더 편한 나는 이것을 그냥 MEL로 만들었다. Opaque(불투명)을 꺼야하는 오브젝트를 선택을 하고 MEL을 실행하면 각 오브젝트에서 mesh 노드를 찾아서 들어가서 Opaque를 끄고 임무완료 후 다음 오브젝트로 옮겨가고 뭐 이런식이다.
요것도 매우매우 간단한 MEL ㅋㅋ
string $OpaOnList[] = `ls -sl`;
string $OpaOnObj;
for ($OpaOnObj in $OpaOnList){
string $OpaToOffMesh[] = `listRelatives -type mesh $OpaOnObj`;
setAttr ($OpaToOffMesh[0] + ".aiOpaque") 0;
}