2012년 6월 26일 화요일

mel script에서 배열 내용을 무작위로 섞어 보기

python("import maya.cmds as cmds");
python("import random");
//선택된 아이템을 배열에 넣기
python("testArray = cmds.ls( selection=True )");
//파이썬 배열을 mel 배열에 넣기
string $melArray[] = python("testArray");
//배열 출력
print "-----Original Array-----\n";
print $melArray;
print "\n";
//파이썬을 이용해서 배열 셔플
python("random.shuffle (testArray)");
//파이썬 배열을 mel 배열에 넣기
$melArray = python("testArray");
//셔플된 배열 출력
print "-----Shuffle Array------\n";
print $melArray;


















위 이미지는 파이썬을 이용하여 mel script에서 작성된 스크립트 구문을 실행한것입니다.
선택한 오브젝트를 배열에 넣고 배열을 섞는 동작을 합니다.


참고 ) 기본적으로 mel script에는 배열을 섞는 함수가 없습니다.

다음과 같이 사용자 정의 함수를 만들어 섞어 쓸수도 있으며
global proc string[] shuffleArray(string $array[])
{
    for ($i=0;$i<size($array);$i++)
    {
        int $index = rand(size($array));
        string $tmp = $array[$i];
        $array[$i] = $array[$index];
        $array[$index] = $tmp;
    }
    return $array;
}

제일 위에 적힌것처럼 파이썬의 random.shuffle 을 사용하여 배열을 섞을수도 있습니다.

사용하기 편한 방법으로 배열을 랜덤하게 섞어 쓸 수 있습니다.

댓글 없음:

댓글 쓰기