スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
変数について
今回は、どのプログラム言語でも共通して使われる
『変数』についてご紹介します。

変数の仕組み自体はとても簡単なのですが、
プログラムの柔軟性は
この変数を如何に上手に使えるかによって決まると言えるくらい重要です。


早速ですがまずはこちらのソースコードをご覧ください。

{
float $rad;
$rad = 11.25;
polySphere -radius $rad;
}


変数とは、特定の値を格納しておく事のできる『入れ物』です。
上のソースコードの『$rad』が変数です。
Melの変数名の頭には必ず『$(ドルマーク)』がつきます

格納する種類によって異なる『型』と呼ばれるものがあり、
int型,float型,string型 があります。
matrix型やvector型もありますが、
ひとまずこの3つだけ覚えれば問題ないでしょう。

int型は整数を格納する事ができます。
何かの数を数えたり、後でご紹介する様な『ループ』を回す時に多く使用します。

float型は浮動小数点数を格納する事ができます。
数値アトリビュートに入れる値など、整数とは限らない数字は全てこちらです。

string型は文字列を格納する事ができます。
ノードの名前など、数字以外の文字を格納する場合に用います。
数字を格納する事もできますが、あくまでも文字として扱われるため、
計算したり数値アトリビュートに入れる事はできません。

0525.jpg

1行目の様に『型名』+『変数名』のように記述する事で変数が生成されます。
これを『宣言』といいます。
(実は MEL は明示的に型を宣言しなくても殆ど問題は発生しないのですが、
 特に初心者のうちはすべからく宣言をすべきです)

Melの変数名にはルールがあり、
・英字から始める
・英数字と『_(アンダーバー)』のみ使える
・大文字と小文字は区別される
これらを守った上で自分の判りやすい名前にしましょう。
今回は半径(radius)を表したいので、float型の『$rad』としました。

2行目が変数に値を格納する操作で、これは『代入』と呼ばれます。
『=(イコール)』記号を使いますが、これは算数のイコールとは意味が全く異なります。
この記号は『代入演算子』と呼ばれ、右の値を左の変数に代入するものです。
決して間違えないようにしてください。頭の中では『←』とイメージすると良いでしょう。
つまりこの操作で変数『$rad』に『11.25』という値が格納されました。

ちなみにこの宣言と代入はまとめて記述する事もできます。
慣れてきたら以下の様に記述しても良いでしょう。

float $rad = 11.25;

以前の記事で『文字列をそのまま使用する時にはダブルクォーテーションで囲む』
とあったのを覚えているでしょうか。
したがって string 型変数に文字列を代入する場合は以下のようにします。

{
string $siteName;
$siteName = "Graberry";
//or, string $siteName ="Graberry";
}


そして3行目が前回に実行したものの引数部分を変数に置き換えたものです。
実行して同様の結果になる事を確認してください。

また、しばしば以前ご紹介した print コマンドを使って
変数の中身を確認する事があります。

print "$rad";

この場合はダブルクォーテーションをつけてしまうと
単純に『$rad』という文字列が出力されてしまうため、

print $rad;

この様に記述する事で変数の中身を出力します。
上の3行目をこれに入れ替えて実行してみてください。

今は代入してすぐに出力したので当然結果は見えていますが、
プログラミングをしている時は
「今この変数には何が入っているんだろう」という確認が欠かせなくなってきます。
是非活用してください。

次回はスコープや配列などについてご紹介します。
変数の事をより深く知っていきましょう。

参考:
Autodesk Maya オンラインヘルプ : 整数および浮動小数点数
Autodesk Maya オンラインヘルプ : 変数
Autodesk Maya オンラインヘルプ : 変数およびアトリビュートに値を代入する

演習:
int 型の変数を2つ宣言し、その各々に任意の整数を代入し、
それをX・Y各方向のサブディビジョン数の引数にして polyPlane コマンドによって
ポリゴン plane を生成してください。
コメント
管理者のみ閲覧可能にする
Profile
HN らい

都内某社テクニカルディレクター
都内某専門学校講師
都内某企業講師
元中国某社S3Dスーパーバイザー
Contact
(ENGLISH OK. 可以用中文。)
Categories
Archives
RSS Link
QR Code