2021年1月21日木曜日

vector型の怪

  スクリプトエディタで、ベクトル型に値を設定せずカンマだけで宣言し、結果を表示してみます。

  なんか、カラのはずなのに何か値が出てきました。
  しかも、会社の maya と自宅の mayaLT で、出てきた値が違っています。

  この現象は何なのかを調べるために、いくつかスクリプトエディタにスクリプトを書いて実行してみます。

  まず基本のスクリプト。

{
    vector $p = << , , >>;
    print $p;
}

  上の画像のように値が出力されますが、環境によって出力される値が違ってくるかもしれません。

  次に別タブにこんなスクリプトを書いて実行します。

{
    vector $p = << 1, 2, 3 >>;
    print $p;
    
}

  実行後、sample1のコマンドを実行すると、こんな風になりました。


  最初に表示された値ではなく sample2で設定した値が表示されました。
  MELのスコープはブロックごとなのに、なにかおかしな感じがします。
  ※参照:スクリプトエディタで余り気にしていないであろう事

  なので次は、こんなスクリプトを実行してみます。

{
    vector $tmp = << 4, 5, 6 >>;
    print $tmp;
    
}

  変数名を$tmpへ替えてみました。
  そして、sample1を実行。


  なんと、$tmpの値が表示されました。
  どうやら変数名は関係ないようで、直前のリテラルが出力されている感じ。

  最後に、ロケータを作成して適当に動かしたのち、こんなスクリプトを実行します。

{
    string $lct ="locator1";
    vector $p =`xform -q -ws -t $lct`;
    print $p;
    
}

  ロケータの座標をベクトルに代入した感じです。

  そして、sample1を実行。

  xform の結果ではなく、1つ前の sample3 の値が出てきました。

  なんとなく傾向は見えてきた気もしますが、このリテラルが保存されている領域はどこなんだと、

  謎は深まる一方です・・・。



0 件のコメント:

コメントを投稿