2005年12月05日

CharacterSet用AnimExport/Import

何故かCharcterSetに対してAnimExport/Importがうまく機能しないので作ったMEL
使い勝手は良くないけど無いよりマシといった感じ
範囲を指定してエクスポート、インポートは出来ない
カレントフレームにAnimをMergeでペーストする
tangentはエクスポートインポート出来ない(これは不便なので改善予定)

2006/03/24 追記
TraxEditorを使ってキャラクターセットのアニメーションをエクスポート、インポートする事が出来ることがわかったので、改善予定は無い。
//export CharAnim

proc getExpCharAnimPath(string $filename, string $filetype)
{
if( "" == $filename ) return;

string $sel[] = `ls -sl -type "character"`;

string $fileParts [];
if (`tokenize $filename "." $fileParts` < 2) $filename += ".cha";

int $fileID = `fopen $filename "w"`;
if( 0 == $fileID ) return;

fprint $fileID "CharcterSetAnimFile\n\n";

string $charMembers[] = `character -q $sel[0]`;
string $mem;
selectKey -clear;
for( $mem in $charMembers ){
selectKey -add -k -t ":" $mem;
int $nKey = `keyframe -query -keyframeCount`;
fprint $fileID ($mem + "\t" + $nKey + "\n");
float $frames[] = `keyframe -q -sl`;
float $f;
for( $f in $frames ){
selectKey -clear;
selectKey -t $f $mem;
float $val[] = `keyframe -q -vc`;
fprint $fileID ("\t" + $f + "\t" + $val[0] + "\n");
}
selectKey -clear;
}

fclose $fileID;
}


proc expCharAnim()
{
string $sel[] = `ls -sl -type "character"`;
if( "" == $sel[0] ){
error "Select CharacterSet.";
return;
}

fileBrowser ("getExpCharAnimPath", "Export", "", 1);
}


expCharAnim();



//Import CharAnim

proc impCharAnim()
{
string $sel[] = `ls -sl -type "character"`;
if( "" == $sel[0] ){
error "Select CharacterSet.";
return;
}

string $filename = `fileDialog -dm "*.cha"`;
//print ( $filename + "\n" );
if( "" == $filename ) return;

int $fileID = `fopen $filename "r"`;
if( 0 == $fileID ) return;

string $buf = `fgetline $fileID`;
if( "CharcterSetAnimFile\n" != $buf ){
error " ";
return;
}
fgetline $fileID;

string $charMembers[] = `character -q $sel[0]`;
string $mem;
int $ct = `eval("currentTime -query")`;
while( 0 == `feof $fileID` ){
$buf = `fgetline $fileID`;
string $tokens[];
int $nTokens = `tokenize $buf "\t" $tokens`;
if( 2 == $nTokens ){
for( $mem in $charMembers ){
if( $mem == $tokens[0] ){
//print ($mem + "\n");
int $nKey = $tokens[1];
for( $i = 0; $i < $nKey; $i++ ){
$buf = `fgetline $fileID`;
tokenize $buf "\t" $tokens;
int $t = $tokens[0];
float $v = $tokens[1];
setKeyframe -t ($ct + $t) -v $v $mem;
//print ($t + " : " + $v + "\n");
}
break;
}
}
}
}


fclose $fileID;
}


impCharAnim();

posted by toka at 18:41| Comment(0) | TrackBack(0) | MEL | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。