숫자 카운트 올라가면서 천단위마다 콤마 찍기






마야의 숫자 표현 한계로 1,410,065,408 까지가 한계이다.
(마야 2014에서는 더 높은 숫자까지 표현이 가능하네요. 마야 버전이 올라갈수록 표현 숫자 한계도 올라가나봅니다. 정확한것은 아니지만 동영상에서 보이듯이 2,123,366,400까지도 되네요.)
더 많은 조단위까지 올라가려면 단순히 수를 콘트롤하기 보단 오브젝트 단위로 콘트롤을 해야할것 같다.
암튼 쉬운줄 알고 덤벼들었다가 꽤나 복잡하고 어려웠던 스크립트였다.
(마야에서 기본적으로 수가 올라가면 자리수가 뒤로 밀리기에 이를 자리수 앞으로 보내기 위해서 로그함수도 써야했고 자리수 카운팅도 해줘야 되고 중간에 콤마 찍히는것 때문에 배열로 재정리했어야했고...ㅠㅠ)






//MEL//
proc creatNumberText(int $inputFrame)
{
string $numberTextFont ="YDI윤고딕360|w400|h-11";
string $isThereList[] = `ls "Number*"`;
int $isThereListSize =size($isThereList);
if($isThereListSize!=0){delete("Number*");}
int $countNumber = $inputFrame%10;
if($inputFrame==0)
{
string $curveName = stringArrayToString({"Number",$inputFrame},"");
textCurves -ch 1 -f $numberTextFont -t $inputFrame -n $curveName;
string $curveShapeName = stringArrayToString({$curveName,"Shape"},"");
int $movingX = -2;
move -x $movingX;
planarSrf -o on -n $curveName;
}
if($inputFrame!=0)
{
int $indexCountNumber=log10($inputFrame);
string $outputText[];
int $decNumber = pow(10,$indexCountNumber);
for ($i=$indexCountNumber;$i>=0;$i--)
{
int $decNumber = pow(10,$i);
stringArrayInsertAtIndex($indexCountNumber, $outputText, ($inputFrame/$decNumber)%10);
}
int $commaPosition=$indexCountNumber/3;
int $j=$commaPosition;
if($j!=0)
{
for($j=1;$j<=$commaPosition;$j++)
{
stringArrayInsertAtIndex($indexCountNumber-($j*3-1), $outputText, ",");
}
}
string $outputTextFinal = stringArrayToString($outputText,"");
string $curveName = stringArrayToString({"Number",$inputFrame},"");
textCurves -ch 1 -f $numberTextFont -t $outputTextFinal -n $curveName;
string $curveShapeName = stringArrayToString({$curveName,"Shape"},"");
int $movingX = size($outputText)*-2;
move -x $movingX;
planarSrf -o on -n $curveName;
}
}

//expression//
creatNumberText(frame);




MEL과 EXPRESSION을 혼합하여 사용해야 하는데 수학적 지식이 좀 있으면 여러방법으로 응용을 할 수가 있습니다. 기본적으로 1프레임에 하나씩 숫자가 올라가기 때문에 높은 숫자를 만들기에는 무척 지루할 수 있습니다. 본문에 첨부된 동영상의 경우는 4제곱 함수를 이용했습니다.

creatNumberText(pow(frame,4)/400);

이것은 4제곱에 400을 나눈 함수로 그래프를 그리면 초반에는 천천히 증가하다가 뒤로 갈수록 기하급수적으로 숫자가 올라갑니다. 응용하기 나름이겠죠?