#初めに
この記事は Maya Advent Calendar 2019 の8日目の記事になります。
はじめまして、
株式会社GUNCY'Sの代表の野澤と申します。
日頃、twitterやQiitaで有益な情報をもらってばっかりで大変お世話になっているので、たまには自分も恩返しがてら一ネタ投稿したいと思います。
もしかしたらそんなの誰でも知ってるよってい話かもしれませんが、悪しからず。
その前に、弊社GUNCY'Sの紹介を簡単にさせて頂きます。弊社は、3DCGを中心にデジタルコンテンツ全般のゼロイチを作る現場のお手伝いをするために2015年に設立された少数精鋭の(自称)軍師集団です(笑
設立以来非常にバラエティに富んだプロジェクトラインナップを経験させて頂き大変感謝しております。
先日、弊社でフルスクラッチで開発しているWebGLを紹介させてもらいました。来年はもしかしたら次の展開があるかもです。
【拡散希望】Shotgunに3Dのビューワーが無くて不便だったからちょっと作ってみた(笑)こういうツールってもしかしたら需要があったりするのかしら?
— Tetsuya Nozawa (@lphing) October 18, 2019
使いたい!っていう人がいたらRTお願いします!1000RT以上いったらOSSで公開しちゃうよ!そんなに行かないか(笑) #Autodesk #shotgun #WebGL pic.twitter.com/dZPzyIKkit
さて、前置きはこのぐらいにして、今回紹介させて頂く話は、Mayaで自作ツールを配布するときに知っておくとちょっと便利なテクニックです。
意外とツールの配布とかってややこしかったりしますよね。
#なぜそれが必要になったか
以前からMayaのツールを開発して協力会社等に配布する際に、ツールのセットアップ方法を指示するドキュメントを用意したりが割と手間でした。
しかもツールが動かないっていう報告がパラパラ来たり、その都度ビデオチャットで動作確認したりと。
ツールをローカルに配置するときに、Mayaの環境変数を知ってるとそんなに難しくないんですが、すでに社内ツールなどでMaya.envなどで設定されてしまっていたり色々な原因でなかなかスムーズにいかないことが多いです。
#もっといい方法がないか調べてみた
そんなこんなで、これらのメンドクサイことから解放されたい一心で何かいい方法が他にないか調べてみたら、この記事がヒットしました。
Distributing plug-ins/files on Maya (and 3ds Max)
Autodeskの公式の方が書かれてるブログですね。
英語の記事ですが、要約するとツールを配布する際に、ApplicationPackageというものを作ってxmlファイルに必要な情報を書いて所定の場所に置くとMaya(3dsmaxも)が認識してくれるらしいと。
Autodeskが運営しているAutodesk Exchange Store
で頒布するツールもこの方式に則ているらしいと。
たしかにそういえば、よく使っているMaya Bonus Tool
もそんな感じだったなと思い出しました。
ちょっとこれは便利かもと思い色々と調べてみることにしました。
#ApplicationPackageの作り方
ApplicationPackageとしてMayaや3dsMaxに自分のツールを認識させるには、
下記のフォルダ内に自作ツールをフォルダに分けて配置します。
(このフォルダは、管理者権限がないと書き込みが出来ないので注意が必要です。)
C:\ProgramData\Autodesk\ApplicationPlugins
試しに、myToolフォルダを作ってみた。
なかみは、PackageContents.xmlというxml形式のファイルとContentsというフォルダになります。
PackageContents.xmlの中身は、サンプルがネットにいくつか落ちてますので、参考にしましょう。
試しに今回はこんな感じにしました。
シンプルなmelスクリプトmyTool.melを含んでいます。
myTool.melの中身
global proc myTool(){
print "hello";
}
<?xml version="1.0" encoding="utf-8"?>
<ApplicationPackage SchemaVersion="1.0"
ProductType="Application"
AutodeskProduct="Maya"
Name="myTool"
Description="hoge"
AppVersion="1.0.0"
ProductCode="*"
>
<!-- Prevent to load in earlier version than Maya 2014 -->
<RuntimeRequirements SupportPath="./Contents/docs" OS="win64" Platform="Maya" SeriesMin="2014" />
<Components>
<RuntimeRequirements SupportPath="./Contents/docs" OS="win64" Platform="Maya" SeriesMin="2014" SeriesMax="2019"/>
<ComponentEntry ModuleName="./Contents/scripts/myTool.mel" />
</Components>
</ApplicationPackage>
この辺の詳しい話は、あんどうさんのこの記事がとても分かりやすいので参考にしてください。
スクリプトは、Contents/scripts
フォルダの中に下図の様に置いてます。
ここまで準備が出来たらMayaを立ち上げるとMayaの中でこのmyTool.mel
を認識した状態で使用可能になります。
PackageContentsの話は長くなるので割愛して、本題のオリジナルインストーラを作ってみるところです。
#オリジナルインストーラを作ってみる
さて、今回の記事の本題はここからです。
ここに上記のようにファイルを置くことさえ出来ればツールの配布が簡単になることが分かったので、今度はインストーラを作ることにしましょう。
インストーラがあるだけで大したことないツールも、もっともらしく感じさせることが出来るのでとても重要です(笑
といっても自分はインストーラなんて作ったことなかったので、何か便利なものがないか調べてみることにしました。
インストーラを作るソフトは色々ありますが、その中でも特に使いやすそうなinno Setupというソフトを紹介します。
#inno Setupの簡単な使い方
inno Setupをインストールしたら、早速自分のツールを所定の位置に配置させるインストーラを作ってみましょう。
FileからNewを選択するとInno Setup Script Wizardが立ち上がります。
Create a new empty script fileにチェックを入れておくといいでしょう。
何も書かれていない空のファイルが作られましたのでそのままSave Asします。
次に、下記のようにツールのdefine情報を記入します。
ツール名の宣言みたいなものですね。
次に自分のアプリのAppIDを決めます。これは必ずユニークなIDになる必要があるので、innoSetupのGenerate GUIDを活用しましょう
AppId={
までテキストを入力したら、メニューのToolsからGenerate GUIDを選びます。
そうすると自動的にIDを生成してくれます。
その下は、図のように上段で宣言したテキストを適宜使用してそれぞれの項目に記載される情報を設定します。
この辺りはわざわざ記載しなくても特に問題ないと思います。
#さらに細かい設定を加える
図のようにさらに細かい設定を加えてみました。内容についてはコメントを読んで頂ければわかると思います。
こちらのページにinno Setupのスクリプトテンプレートが記載されていて分かりやすかったです。
それぞれ目的に合わせて好きな画像やテキストを用意します。
#言語設定とファイルを追加する
さらに、今度はインストーラの言語設定と実際にインストールさせるファイルについて記述します。
下図の通り、Source:
のファイルをDestDir
に配置するという事です。Flags
も適宜調整します。
ここまで出来たら、ビルドしてみましょう。
ビルドは非常に簡単でinno SetupのメニューのBuild > Compile
を実行して待っているだけです。
ビルドに成功していると、outputフォルダにexeファイルが作られています。
#インストーラを実行してみる
では、早速インストーラを実行してみましょう
セットアップウィザードの開始画面
使用許諾契約書の同意画面
インストール前の説明文画面
インストール前の確認画面
インストール後の説明文画面
セットアップウィザード完了画面
よく見ると画像がはみ出ちゃったりしてますね。
こちらのページに詳しい画像サイズなど書いてあるので参考にしてください。
#インストールされたツールの挙動を確認する
さて、無事インストールが完了しましたので、ツールの挙動を確認してみましょう。
Mayaを起動し、commandLine
の所に、myTool
と打って実行してみました。このmyTool.melはhello
とプリントするだけです(笑
ちゃんと目的を達成できました。万歳~。
もしもツールが不要になったら、Windowsのアプリと機能
の中を見るとmyTool
がありますのでアンインストールしましょう。
#まとめ
最後までお付き合いいただきありがとうございました。
Mayaや3dsMaxでツールを配布する時に、あまり難しいことを考えずにインストールさせるのにこんな方法もよかったら試してみて頂けると幸いです。