MaxScriptを書こう ~その2

2021年9月3日

ビルトイン関数を使う

では球体の位置を調整してみましょう。数値の操作には3dsmaxにあらかじめ用意されている関数を使います。関数ってなんだ?という部分は追って詳しく説明しますので、ここでは次のように考えてください。

「関数とは何らかの操作を行ってくれるものである」

いろいろと厳密ではない上になんだかよくわからないかもしれませんが、関数というのは何らかの機能のことで、それを使うと何らかの結果を得られる、と思ってください。

ここではfloorという関数を使ってみます。floorとはフロアで床のことです。いわゆる数値の切捨てを行う関数がfloorです。逆に切り上げを行う関数はceilというものになります。ceilとはシールで天井のことです。切捨てと切り上げはそれぞれ床と天井なんですね。

まずはfloor関数を使って球体のX座標を切り捨ててみましょう。

リスナーを開いて次のように入力してください。

$.pos.x = floor $.pos.x

私のところでは3.28835だった値が3.0になりました。floorは切捨てを行うので、例えば3.99999というかなり4.0に近い値であっても3.0になってしまうという問題がありますが、それは後でなんとかするので今は気にしません。

ここでは改めて何が行われたのかを見てみましょう。

まず=(イコール)の左側に注目します。

$.pos.xとなっているのは$(選択されているもの)のpos(位置のデータ)のx(Xの値)という意味です。

対して右側にはfllorのあとに半角スペースを1つあけて$.pos.xがあります。

関数の使用方法は言語によって異なりますが、MaxScriptでは

「(関数名)半角スペース(関数に入れるもの)」

という書き方をします。ここでの$.pos.xのように関数に入れるもののことを「引数(ひきすう)」と呼びます。また、「左辺 = 右辺」のような式は「左辺に右辺を代入する」という意味になります。

すなわち、今回の$.pos.x = floor $.pos.xという式は、「$.pos.xに、floor関数に$.pos.xを入れた結果得られた答えを、代入する」ということを意味しています。

floor関数は受け取った3.28835という値を切り捨てて3.0にして出してきます。それを$.pos.xに代入することで球体のX座標が3.0に移動したわけです。改めて確認してみましょう。

$.pos

X座標の値は切り捨てられて整数になったはずです。関数が返してきた答えは3.0でしたが、$.posで表示される値は3のように整数になっていますね。本来3と3.0は別のものとして扱うのですが、MaxScriptではその差は曖昧にされています。

ためしに球体をマウスで適当に移動させてみて、今度は同様のことをceil関数でもやってみてください。切り上げられた結果が得られるはずです。

このfloorやceilのように、3dsmaxにあらかじめ用意されている関数のことを特にビルトイン関数と呼びます。ビルトイン関数はとてもたくさん用意されていて、これらを使いこなすことがMaxScriptを操るための第一歩と言えるでしょう。

さて、X座標の値を丸めることができたので、同様にしてYとZも実行すればOKですね。もちろんX座標は切り上げ、Y座標は切り捨て、というような操作も可能です。いろいろやってみてください。

次回はスクリプトエディタを使って、複数行のスクリプトを実行したり、作ったスクリプトを保存したりする操作をやってみましょう。

今回のまとめ

  1. 何か操作を行って結果を得られるものを「関数」と呼ぶ
  2. =(イコール)を使うと左辺のものに右辺のものを代入できる
  3. floor(切捨て)やceil(切り上げ)といった機能を提供するビルトイン関数が用意されている
  4. 関数に渡すデータのことを引数(ひきすう)と呼ぶ

前:MaxScriptを書こう ~その1

次:MaxScriptを書こう ~その3