MaxScript の .ms / .mcr / .mse / .mzp の違い

  • MaxScript
  • 3dsMax

3dsmaxを使いスクリプトを使っている方で、色々拡張子あるけど、違いがよくわからないな~という方もいると思うので、そういう方に向けて簡単な記事でまとめておきます。

どれも中身は MaxScript です。違うのは「どう使うためのファイルか」だけです。

一覧

拡張子 どんなファイル もらったらどうする
.ms ふつうのテキスト ドラッグすればその場で動く
.mcr ボタンに登録するためのもの ドラッグしてから、自分でボタンに割り当てる
.mse 中身が読めなくしてある .ms ドラッグすればその場で動く
.mzp まとめて配るためのもの ドラッグすればインストールされる

.ms — いちばん素のスクリプト

ただのテキストファイルです。メモ帳でも開けます。

使い方はかんたんで、ビューポートにドラッグ&ドロップすれば動きます。 メニューの スクリプト > スクリプトを実行 から選んでも同じです。

ただし、動くのはその 1 回だけです。もう一度使いたければまたドラッグします。 UI には何も残りません。

毎回使うものなら、scripts/startup フォルダに入れておくと 3ds Max の起動時に自動で読み込まれます。

ただ、3dsmaxはメモリの扱いが微妙に下手なので、下手にscripts/startupに入れすぎるとバグりやすくなります。 なので入れるものは絞ったほうがいいです。

.mcr — ボタンにして残す

中身は macroScript というブロックです。「名前の付いた操作」を定義しています。

macroScript MyTool
category:"MyTools"
buttonText:"My Tool"
tooltip:"ツールを開く"
(
    -- ここに処理
)

読めなくても大丈夫です。要は「このツールをこういう名前で登録してください」という宣言です。

ドラッグしても何も起きないのは正常です

.ms と違うのは、評価すると 3ds Max に登録が残り、評価をしてもツールの中身は実行されないことです。 .mcrをドラッグ&ドロップして何もスクリプトが動かなくて???ってなった方は多いんじゃないでしょうか。(自分も初めの方はなってました。)

中身の動きは以下のような形です。

  1. スクリプトエディタで開いて Ctrl+E(またはドラッグ&ドロップ)
  2. usermacros フォルダに自動でコピーされる
  3. カスタマイズ > ユーザーインターフェイスをカスタマイズ に、指定した category で並ぶ
  4. そこからツールバー・メニュー・ショートカットに割り当てられる

ツールバーなどに登録し、ボタンを押したりして初めてツールの中身が実行されます。

登録は次回以降の起動にも残るので、一度やれば終わりです。ここが .ms との一番の違いになります。

カスタマイズ画面で見つからないとき

「ユーザーインターフェイスをカスタマイズ」のカテゴリ一覧から探します。 どのカテゴリに入るかはスクリプト側の category で決まっているので、 配布元が書いている名前(上の例なら MyTools)で絞り込んでください。

置き場所の注意

.mcr の元ファイルを scripts/startup フォルダには入れないでください。

.mcr は評価した時点で usermacros にコピーが作られます。 元ファイルも起動時に読まれる場所に置くと、同じものが 2 か所から読み込まれます。

元ファイルは自分の作業フォルダなど、3ds Max が自動で読まない場所に置いておけば大丈夫です。

.mse — 中身が読めないスクリプト

.ms を暗号化したものです。使う側から見ると .ms とまったく同じで、ドラッグすれば動きます。

作る側が「ソースを見られたくない」ときに使います。

保護にはなっていません

配布する側の方へ。.mse はソースが読めなくなるだけで、保護にはなりません。 鍵が全環境で共通なので、出回っているツールで中身は取り出せます。気休め程度に考えてください。

それと、.mse から元の .ms に戻す手段はありません。 暗号化したら元ファイルは必ず残しておいてください。

もらったときの注意

暗号化は逆向きにも働きます。中身が読めないということは、何をするスクリプトなのか確認できないということです。

実際に、3ds Max を狙ったマルウェアが、暗号化した MaxScript にコードを潜ませて広まった例があります。 配布元がはっきりしない .mse は実行しないでください。

.ms ならテキストエディタで開けば中身を確認できます。この差は意外と大きいです。

.mzp — まとめて配るためのもの

MaxScript Zip Package の略で、実体は ZIP です。 中に mzp.run という指示書を入れておくと、ドラッグするだけでインストールが終わります。

中身がZIPなので、拡張子を.zipに書き換えるだけで解凍すれば中身が取り出せます。

mzp.run には「どのファイルをどこへコピーするか」「何を実行するか」が書いてあります。 スクリプト本体・.mcr・アイコン・マニュアルなどをまとめて 1 ファイルにできるので、 「zip を解いて、mcr をここに置いて、カスタマイズから登録して……」という手順を踏まずに済みます。

配布されているツールが .mzp なら、いちばん迷わないやつだと思ってもらって大丈夫です。

自分で .mzp を作りたい場合は MzpPackager をブラウザから使えます。 mzp.run の書き方や中身の内訳は マニュアルにまとめてあります。

配る側になったら

  • 自分で動かすだけ → .ms のまま
  • ボタンやショートカットに置いてほしい → .mcr も付ける
  • 人に渡す → .mzp にまとめる
  • ソースを見せたくない → .mse。ただし気休めと割り切る

← 記事一覧へ