MaxScriptを書こう ~その1

2021年9月3日

目的を定めよう

MaxScriptに限らず、何かプログラム言語を使えるようになりたい、と思った場合にまず必要なのは「目的」です。何を作りたいのか、ということです。当初、この目的を持たないまま漠然と「プログラミングできるようになりてーなー」ぐらいの動機で始めた私は、主にこの「目的がない」という状態のために長年ほとんど進歩せず、挫折を繰り返しました。

そこで、まずこのチュートリアルでは目的を掲げます。もちろん最初から大変すごい目標ではなく、超微妙な感じのところから攻めていきましょう。では発表しますよ。この講座で目指すのは、

「オブジェクトの座標値をイイ感じに丸める」

です。

MaxScriptリスナーを使ってみる

例えば今、3dsmaxのビューポート上に、適当にプリミティブの「球」をマウスドラッグで作成してみてください。作るものは別に「球」でなくても構いません。生成したら、メニューのスクリプト→MaxScriptリスナーを開き(ショートカットF11)、リスナーの画面に以下のように入力します。

※スクリプト使いたるもの、リスナーは日常的に使いますので開き方を覚えておきましょう。以降「リスナーを開く」と書いてあったら上記のようにMaxScriptリスナーを開いてください。

$.pos

すると何か数字が青い字で表示されたと思います。

まず、ここに記入した$(ドルマーク)ですが、MaxScriptでこの$は「現在選択しているもの」という意味になります。選択されているものが何かによって、この$の挙動は変わってきます。

今、$.posと入力したことによって出てきた青い字は、少々見づらいですが[](大カッコ)でくくられた3つの数字の組になっています。私のところでは[3.28835, 56.9764, 0]でした。

posというのはpositionのことで、$.posで「現在選択されているオブジェクトの位置」という意味になります。(この辺は追々掘り下げていきますので、今はまぁそんなもんか、ぐらいの理解で構いません)

結果として表示された数字はその「位置」を表すデータです。コンマで区切られた3つの数字が左からX、Y、Zのそれぞれの座標値を表しています。つまり前述の私の球体は、

  • X座標:3.28835
  • Y座標:56.9764
  • Z座標:0

という場所にありますよ、という意味になります。このように、3dsmaxでスナップを使用せず、マウスドラッグでオブジェクトを生成(または移動)させると、座標値に小数点以下の数字がたくさん付きます。付いたからと言ってどうということは無いのですが、このチュートリアルでは、このような座標値の端数をイイ感じに丸める(もう少しすっきりした数字に修正する)ようなツールを作ってみたいと思います。

次回は実際にこの座標をなんとかする操作をやってみましょう。

今回のまとめ

  1. スクリプト→MaxScriptリスナー(ショートカットF11)で重要アイテム「MaxScriptリスナー」を開くことができる。
  2. 特別な文字「$」は「選択されているオブジェクト」という意味になる。
  3. posで位置(ポジション)のデータを見ることができる。