2005年07月04日

指定した大きさになるようにスケーリングするスクリプト

 

/**************************************

 指定した大きさになるように
 スケーリングする

***************************************/

@script modeler
@name ScaleTo
@version 2.3

main
{
 axis = @"X","Y","Z"@;
 indexAxis = 2;
 val = 1.0;
 rog = true;
 
 reqbegin("Scale to");
 c1 = ctlchoice("Axis", indexAxis, axis, false);
 c2 = ctldistance("Scale to", val);
 c3 = ctlcheckbox("Rest on ground", rog);
 return if !reqpost();
 indexAxis = getvalue(c1);
 val = getvalue(c2);
 rog = getvalue(c3);
 reqend();
 
 fglayers = lyrfg();
 numfg = sizeof(fglayers);
 bbox = @<0.0, 0.0, 0.0>, <0.0, 0.0, 0.0>@;
 for(i=1; i<=numfg; i++){
  tempbbox = boundingbox(fglayers[i]);
  if( tempbbox[1].x < bbox[1].x) bbox[1].x = tempbbox[1].x;
  if( tempbbox[1].y < bbox[1].y) bbox[1].y = tempbbox[1].y;
  if( tempbbox[1].z < bbox[1].z) bbox[1].z = tempbbox[1].z;
  if( tempbbox[2].x > bbox[2].x) bbox[2].x = tempbbox[2].x;
  if( tempbbox[2].y > bbox[2].y) bbox[2].y = tempbbox[2].y;
  if( tempbbox[2].z > bbox[2].z) bbox[2].z = tempbbox[2].z;
 }
 
 if( 1 == indexAxis ) orgScale = bbox[2].x - bbox[1].x;
 else if( 2 == indexAxis ) orgScale = bbox[2].y - bbox[1].y;
 else orgScale = bbox[2].z - bbox[1].z;
 
 if( true == rog ) move(0, -bbox[1].y, 0);
 scl = val / orgScale;
 scale(<scl, scl, scl>);
}

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

メールアドレス:

ホームページアドレス:

コメント:


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