【MAXScript】入門編「変数」

まず最初に説明するのが、【変数】です。この変数という概念は、全てのプログラミング言語で必ず最初に説明されるべき基本的な概念のひとつです。

(2017年1月3日 記事修正)

変数とは?

【値】(あたい)データを一時的に記憶して、再利用したり参照するための仕組みが【変数】です。

プログラミングでは、同じ値を何度も繰り返して使用する機会があります。毎回同じ値を取得したり入力するのは非効率なので、値を変数に格納して繰り返し使用しやすくします。

変数には値型と参照型があります。値型は値を記憶して再利用するもので、参照型はショートカットリンクの様なものです。

変数は、よく「データを入れる箱の様なもの」と表現されます。
var

 

 

準備

まずは、MAXScriptを作成する準備をしましょう。

  1. 【F11】を押して、リスナーを起動します。
  2. リスナーの画面で【Ctrl + N】を押して、MAXScriptエディタの新規スクリプトを作ります。
MAXScriptエディタのタブに新規スクリプトが表示されているはずです。そこに、スクリプトを記述していきます。今後は、毎回この操作をしてリスナーとスクリプトエディタを表示させて作業します。

 

変数を使ってみる

変数を説明する例題として、犬の数と、猫の数と、その合計を計算するスクリプトを書いてみます。CGとは何の関係もありませんが、スクリプトを書くのであれば必ず使う基本的な機能です。

 

変数に、犬と猫の数を入れる

犬が2匹、猫が4匹、それぞれの数を変数に入れてみます。
変数の中に値を入れるには、【=】という記号を使います。以下のテキストをMAXScriptエディタに入力して実行してみてください。

Ctrl+Eを押して実行すると、リスナーには次の様な結果が出力されます。

20160520_2

変数に値を入れると、リスナーにはその変数の中身が出力されます。
処理が成功すると青い文字で表示され、失敗すると赤い文字でエラー内容が表示されます。青い文字で変数の中身が表示されているので、犬と猫の数を変数に入れる処理が無事成功しました。

この様に、変数名に値を入れるスクリプトを書くだけで、変数が定義されます。
今回は、dogとcatの2つが定義されました。

var_dogvar_cat

 

 

 

変数名について

dogとcatは、変数名です。変数の名前は、分かりやすい様に自分で考えて設定するので何でも構いません。名前の先頭に数字を使えなかったり、関数名と同じ名前や、すでに変数として定義されているものは変数名にできないといったルールはありますが、ルールに沿っていれば自由な名前をつける事ができます。

 

変数の計算をする

次に、dogとcatの合計数を計算してみます。次のスクリプトを追記して、実行してください。

今度は、リスナーに次のような結果が出力表示されます。

20160520_1

変数allの中身が青文字で表示されました。

合計3つの変数を作りましたが、中身は下記の様になっています。
var_all

 

 

演算子

【+】の記号を演算子と言い、値同士を計算をするのに使用します。演算子には、【+】(加算)【-】(減算)【*】(乗算)【/】(除算)などがあります。算数の記号と同じ意味なので、説明しなくても分かると思います。

 

変数を再利用する

今度は、狐が3匹現れたとします。犬、猫、狐の数を合計してみましょう。先ほど書いたスクリプトを全て消して、次のスクリプトを実行してみてください。

allにはすでに先ほどの犬と猫の合計数が記録されています。
allという変数が【=】の右と左で重複していますが、先に右に書かれた式が計算され、左の変数に入ります。

リスナーには、「9」と表示されているはずです。

 

変数に文字列を入れる

スクリプトを全て消して、次のスクリプトを実行してみてください。

この様に、文字列も変数に代入して、計算する事ができます。

文字列は、【”】(ダブルクォーテーションで囲む)

文字列は、それがスクリプトではなく文字列である事を示すために【”】で囲みます。

 

文字列と数値を計算する

先ほどスクリプトを全て消しましたが、変数は見えないところで記録されています。ですので、スクリプト本文を全て削除しても、MAXを終了させたり変数をスクリプトで削除しない限り再利用できます。先ほど書いたスクリプトを全て消して、次のスクリプトを実行してみてください。

リスナーのキャプチャは取っていませんが、変数allにはすでに先ほどの犬と猫の合計数が記録されていますので、変数textには「動物たちの合計は9匹です。という文字列が入りました。

as stringは、キャスト関数と言われるものです。キャストとは型変換する事です。変数allの中身は数値なので、文字列として表示させるためにas stringで文字列にしています。数値が文字列になると、演算子を使った数値の計算はできなくなるので注意しましょう。

 

変数の中身を表示する

先ほど書いたスクリプトを全て消して、次のスクリプトを実行してみてください。

リスナーには「動物たちの合計は9匹です。」と表示されているはずです。

【print】は、値を出力する【関数(メソッド)】です。デバッグ時など、任意のタイミングで変数の中身をリスナーに出力したい場合は【print】関数を使うと覚えておいてください。【関数(メソッド)】については、別の記事で説明します。

ここまでで、なんとなく変数がどういうものか分かりましたでしょうか。

建築パースで、どんな役にたつの?

これら「変数の代入」と「変数の計算」は、たとえば大量のダウンライトを計算式で配置する場合や、レンダリングファイル名をMAXファイル名+時刻で自動設定させたり、ワンクリックでシーン内のカメラをネットワークレンダリングする場合など、操作の自動化に関係するあらゆる場面で使用します。

別の記事で詳しく説明しますが、スクリプトには特定の処理を指定回数繰り返し実行させるループ処理というものがあります。建築パースに限らず、MAXスクリプトは、単純作業の繰り返しや特定のロジックで何かを自動操作したい場合に威力を発揮します。