// 移動の値を、ワールド回転ピボットの値に、一致 // 複数選択可、親ノード選択では、子ノードに影響を与えない仕様 // global グローバル変数 // proc プロシージャの定義 global proc transformEqualWorldRotatePivotKohakunekotarou(){ // ls:シーン内のオブジェクトの名前(およびオプションでタイプ名)を返す // -selection:現在選択しているオブジェクト // -objectsOnly:オブジェクト名のみが返され、コンポーネントやアトリビュートは無視 // -transforms:トランスフォーム オブジェクト // ``:`でコマンドを囲み、返り値を取得(アサイン) string $selectTransformList[] = `ls -selection -objectsOnly -transforms`; // size:配列の要素数または文字列の文字数を返す if(`size $selectTransformList` != 0){ // Bの要素を順番にひとつづつ取り出してAに代入しブロックを実行する // 例:for($A in $B){ブロック} string $nodeName; for($nodeName in $selectTransformList){ // ワールド回転ピボットの値を取得 // xform:変換ノードにおける、あらゆる要素の照会/設定 // -query:値を取得する(質問を問いかける) // -worldSpace:ワールド空間 // -rotatePivot:回転ピボット float $hozonWorldRotatePivot[] = `xform -query -worldSpace -rotatePivot $nodeName`; // ワールドスペースで回転ピボットを基準に原点へ移動 // move:ジオメトリ オブジェクトの位置を変更 // -rotatePivotRelative:オブジェクトの回転ピボット ポイントを基準に移動 move -worldSpace -rotatePivotRelative 0 0 0 $nodeName; // トランスフォームのみフリーズ // makeIdentity:選択したトランスフォーム、およびシェイプレベルまでのすべての子を // ID 変換でリセット // -apply:トランスフォーム ピボットのワールド空間での位置が保持されて // シェイプが移動しないように、トランスフォームが ID になった後で // 累積されたトランスフォームがシェイプに適用 // -translate:平行移動のみがシェイプに適用されます。平行移動は、0, 0, 0 に変更 // -rotate:回転のみがシェイプに適用されます。回転は、0, 0, 0 に変更されます。 // -scale:スケールのみがシェイプに適用されます。スケール係数は、1, 1, 1 に変更 // -normal:ポリゴン オブジェクトの法線がフリーズ(ロック)されます。 // -preserveNormals:ポリゴン オブジェクトの法線は、オブジェクトが // 負にスケールされる(反射)と反転されます。 makeIdentity -apply true -translate true -rotate false -scale false -normal 0 -preserveNormals true $nodeName; // 保存しておいたワールド回転ピボットの位置に戻す move -worldSpace -rotatePivotRelative $hozonWorldRotatePivot[0] $hozonWorldRotatePivot[1] $hozonWorldRotatePivot[2] $nodeName; } }else{ // オブジェクトが1つも選択されていない時の処理 // warning:警告の表示 warning "オブジェクトを選択してください。"; } } // 実行 transformEqualWorldRotatePivotKohakunekotarou;
2013年10月29日火曜日
移動の値を、ワールド回転ピボットの値に、一致
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿