MAXScriptでダミー作成&親子付けスクリプト(3dsMax2017)

何をするか

今さら感がありますが,3dsMax用のスクリプト言語であるMAXScriptでちょっとしたツールを作ってみました.スクリプト練習用なのであまり実用的なものではありませんが...

とりあえず,以下のように距離が離れたオブジェクトがあったとします(赤色のボックス).このままでは,オブジェクトを移動させづらい,がしかし拡大して選択するのも面倒というときにこのスクリプトを実行すると,オブジェクトの位置にダミーオブジェクトを生成して,親子付けすることで簡単にオブジェクトを移動させることができるようになります.

スクリプトを実行してみる

スクリプトエディタでスクリプトをペーストしてCtrl + E などで実行すると,以下のようなロールアウトが表示されます.

そして,「PickObject」ボタンを押して,赤色のボックスを選択します.

あとは,「Size」を今回は800ぐらいにして「Run」ボタンをクリックします.

すると,(見えにくいですが)赤いボックスを中心としたダミー(緑色)が作成され,ObjectListの一番目である”Box001″(ビューポートの左にある赤いボックス)には,ひと回り大きなダミーが作成されています.

これらは,自動で親子付けされておりダミーを移動することで赤いボックスも一緒に移動します.

便利とは言えませんが,練習用としてはいいような気がします.

スクリプトの内容

Autodesk公式のサイトを見ればUI回りの使い方などいろいろわかります.ですが基本的に情報が少ないです...

ざっくり説明すると,rollout がUIになります.その中に,ボタンやスピナーなどなどがあり,ボタンが押された時の処理などが書いてあります.

最後にcreateDialog ロールアウト名:今回はDummyCreator)とすることでこの一連のスクリプトを実行したときに自分で作ったUIが開きます.

 

UIのキーポイント

1.UI関連

  • rollout 名前 “表示名” :rollout DummyCreator “Dummy Creator” width:162 height:300
  • createDialog (ロールアウトの)名前:createDialog DummyCreator

2.1 UIパーツ(要素)

基本的に以下のような順番で指定しています.名前のようなものが2つありますが,片方は,スクリプト内部で認識される名前(変数名)で,もう片方がUIで表示される文字列(キャプション)になっています.

UIパーツ名 スクリプト内部での名前 UIで表示される文字列(キャプション) そのほかの位置等のパラメータ

以下今回使用したもの

  • groupBox
  • spinner
  • listBox
  • pickButton
  • button

2.2 便利なイベント(関数)

ボタンが押されたとき や リストボックスの内容がクリックされた時などに実行される処理です.例えば,

  • on ボタン名 pressed do() :ボタン名が押された時の処理

等々いろいろあります.

まとめ

MAXScriptは癖がありますがかなり直観的であり,この程度の内容であれば初めてでもすぐに書くことができるのでいいと思います.当方は,細かい文法ミス等でこれを動かすのに1日かかってしまいましたが...

3dsMax等のCG系を扱っていると,ときどき単純作業の繰り返しがあったりするので,MAXScriptを使って効率を上げていきたいですね.

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です