posted by cimple 2011. 1. 11. 03:42



Solid Skeleton 이 하루만에 버전 2.0 이 나왔습니다. 사용자 입장에서 조금 큰 폭으로 바뀌었기에 아예 버전을 2.0 으로 한 단계 높였습니다. 강화된 기능은 다음과 같습니다.


1. UI 제공
2. 조인트의 크기와 모양을 실시간으로 변환 가능


다음은 시연 동영상입니다.






쉐이더까지 자동으로 입힐 수 있으나, 렌더링은 각자 용도에 맞게 하시면 되리라 생각되어 구태여 넣지 않았습니다.

그럼 유용하게 사용하세요!





Version 2.1 로 업그레이드 되었습니다.

수정 사항은

- 캐릭터가 하나의 조인트 구조가 아닌 여러 개로 따로 떨어진 조인트 구조를 가졌을 경우, 각각의 조인트의 root 를 선택하고 generate 버튼을 계속 누르는 방식으로 추가할 수 있습니다.

- 물론 처음부터 root 에 해당하는 모든 조인트를 선택하고 generate 버튼을 눌러서 생성할 수도 있습니다.

아래는 시연 동영상입니다.




ThEnd.

posted by cimple 2011. 1. 10. 21:23




캐릭터의 Skeleton 을 렌더링 하고 싶을 때가 있지요. 하지만 조인트는 렌더링 되지 않습니다, 따라서 해당 위치에 sphere 와 cylinder 를 넣어주는 마야 파이썬 스크립트를 짜 보았습니다.

원래 Solid Skeleton 이라는 멜이 있지만, 해당 스크립트는 cone 을 생성하는 방식으로 되어 있어서, 파이썬 버전으로 새롭게 만들었습니다.

사용 방법은 간단합니다.



1. root 조인트를 선택
2. makeSolidSkeleton() 실행



이렇게 하면 됩니다,
(물론, 파이썬 스크립트이므로 스크립트 에디터의 파이썬 탭에서 실행해야 하는 건, 다들 아시죠?)

그리고 파라미터를 조절해서 스켈레톤의 구와 막대의 크기를 조절하는 것이 가능합니다.

makeSolidSkeleton(ballScale, edgeScale)

여기 ballScale 과 edgeScale 의 값을 바꾸어 주면 됩니다. 기본값은 둘다 1.0 으로 되어 있습니다.

ex) makeSolidSkeleton(2, 0.5)
이렇게 하면 구는 두배로 커지고 edge 는 절반으로 가늘어 질 것입니다.


마음껏 사용하시고, 버그나 수정사항이 발견되면 말씀해 주세요!

ThEnd.
posted by cimple 2010. 11. 15. 23:31

Maya 에서 스크립트를 작성하다 보면 무한 루프에 빠지는 경우가 있다.

for 문이나 while 문 (특히 while 이놈!) 을 잘못 쓰면 무한 루프에 빠져 버리는 경우가 있는데,

ctrl+break 가 통하는 것도 아니고 esc 를 아무리 연타해도 안 되고, 마야가 먹통이 되어 버려서 결국에는 작업관리자를 켜야만 하는 처지에 놓이게 된다.

이 때, 반복문 내에 무한루프를 방지할 수 있는 간단한 장치를 마련할 수 있는데, 방법이 조금 독특하다.

'외부 파일을 이용' 하는 방법이다. 


사용 방법은 다음과 같다.




1. 위에 첨부된 파일(BREAKMEL.bat) 를 받아서, 소중한 곳에 잘 간직해둔다.
2. 마야에서 MEL scripting 을 하면서, 무한루프가 의심되는 반복문 안에 다음 구문을 넣어준다.

import os
if os.path.exists("c:/breakMel") : break
3. 만약 스크립팅을 하다가 무한 루프에 빠지면, 첨부된 파일을 실행하기만 하면 반복문이 종료될 것이다.



간단한 예제는 다음과 같다.



위와 같은 구문을 스크립트 에디터에서 실행하면, 아마 지구가 멸망할 때까지 1을 찍어댈 것이다.
이 때, 첨부된 BREAKMEL.bat 를 실행시키기만 하면 무한루프를 중지시킨다.
이 때 임시로 생성되는 파일은 자동으로 삭제되니 신경쓰지 않아도 된다.




이 방식의 원리는 다음과 같다.

1. 반복문이 계속 돌면서, 컴퓨터 내부에 특정 파일이 존재하는지 계속 검사를 한다.
2. 만약 무한루프에 빠지면, 그 특정 파일을 생성시킴으로써 반복문을 종료시킬 수 있다.


여기에서 '컴퓨터 내부를 계속 검사한다' 라는 부분이 상당히 찜찜하게 느껴질 것이다.
하지만, 이 방식을 처음 제시한 저자에 따르면 거의 퍼포먼스의 저하가 없다고 한다.

첨부파일인 BREAKMEL.bat 는 뭐 복잡한 구조를 가지고 있는 것이 아니라, 다음이 전부이다.


즉, c:\ 에 breakMel 이라는 가상의 파일을 하나 만들고, 아무 키나 누르면 그걸 지운다는 거다.


재밌는 방식이고, 꽤나 괜찮은 아이디어이다.
하지만 퍼포먼스의 저하가 '전무' 하다는 것은 사실 믿을 수 없다;; 약간 궁여지책처럼 느껴지기도 하고, 의심이 많이 가는 반복문에서만 사용하는 것이 좋을 것 같다.



아이디어는 다음 블로그 포스팅에서 참고하였다.

http://www.naughtynathan.co.uk/?p=59



ThEnd.