ひとまず、簡素なMELツールなら作成可能になった。
が、UIをいじるのがMELは正直めんどくさい。
maxならば、ビジュアルエディターってのがある。
こいつはビジュアルベーシックなんかのUIをつくる機能ににてる。
とはいっても、
なんだかんだ言って、やってることはMaxスクリプトと同じなので。
感覚としては書式の違いだけ。
ただ、書式の違いってヤツがやっかいで。
こう、手っ取り早く調べたいもんだ。
たとえば・・・
MELでのウィンドウの作成は
window -title “name” myWindow;
showWindow;
という一連のながれで
日本語対応なら”name”の部分は日本語の文字列でも大丈夫なはず。
で作成されたwindowはmyWindowという名前でオブジェクトとして扱われている。
あってるかな・・・
たぶんあってるはず。
スクリプト技術を半ばフィーリングのみでいじっているので
外れていたら、怒られると思うけど。
この作成したwindowってのがオブジェクトってのは、
プログラムやスクリプティング上でのオブジェクトであって。
3D空間上のオブジェクトではない。
mayaもmaxもこの辺りが見えると、
とたんに自分の好きにいろいろなモノをじれるようになる。
なれるぞージョジョー!
あっはっはっは
maxの場合は
CreateDialog myRollout style:#(#style_border)
まぁ、やってることは全く同じで、myRolloutの名前で
ロールアウト、MELで言うところのwindowを作成している。
ただし!、事前にglobal変数にmyRolloutを作っておくこと。
そして実際にrolloutを準備しておくこと
なので実際はこれだけではrolloutもクソも出てこない。
ちょっと違うのは、styleがあるところかな。
スタイルは、ロールアウト自体の見た目の設定なので
#style_border意外にも色々と用意されている。
MELの場合、
window内に子供として、メニューレイアウトが作れる点は
非常に便利だった。
(mayaは会社にしかないので、メニューを作成するMELコマンドを思い出せない)
maxの場合は、さっきのCreateDialogの引数に
menu:myMenu menu:CanvasMenu
というものがある
ただし、少しやっかいなのは、事前にこのmyMenuは作成しておく必要がある。
では、MaxScriptとMELで同じ事をやってみよう。
やってみるってばよ!
卍解!
まずは、おいらの十八番
maxScript!!
(
–グローバル変数
global myRollout;rollout myRollout “My Rollout” width:150 height:150;
(
–ファンクション(プロシージャ)を作成
–_Fnは個人的にわかりやすくするために付けているだけ
fn myFunction_Fn =
(
messageBox “This is it!!” title:”Message”;
);–fn end–UIや処理内容
label myLbl “My Label” pos:[0,0] width:150 height:15 /**/;
button myBt “My Button” pos:[0,20] width:150 height:20;
–ボタンが押されたときのアクション
on myBt pressed do
(
myFunction_Fn();
–caption(キャプション)とは文字のこと
print myRollout.myBt.caption;
);–ボタンアクションend
);–rollout end
CreateDialog myRollout style:#(#style_border, #style_titlebar, #style_sysmenu, #style_minimizebox);
–スタイルは色々あるよー
);–end scripts
ボタンはポジションや大きさなどを直接記述できる
アクセスは、ロールアウトからなので
myRollout.myBt.[プロパティ]
上のモノとほぼ同じ動きをするMEL
ただ、mayaを持ってないので、記憶だけたよりに作ったから
動くかどうか分からん!
/*
ごめんなさい、個人的にmayaを持ってないので
ただしく動くかわかりません。MELの場合は
windw -title “My Window” myWindow;
//UIや処理内容
showWindw;もしくは
global proc myProcedure()
{
confirmDialog -title “Message” -message “This is it” -button “OK”;
};//pc endstring $createWindow = `windw -title “My Window” myWindow`;
//UIや処理内容
columnLayout;
text -label “My Text” myText;
//-c(コマンド)の引数で、ボタンが押されたときのアクションを指定している。実行しているのはさっき作ったヤツ
button -label “myButton” -c “myProcedure” myButton;
setParent ..;showWindow $createWindow;
*/
という感じ
作成したボタンは、作成したcolumnLayoutの子供になっているが
アクセスは
button -edit -label “myButton”;
とっいった具合にできるぞ。
MELの特徴は、全部MELコマンドにしておくことが大事なのかな。
で、ボタンが押されたときに、そのコマンドを実行するっと。
maxの場合は、ボタンが押されたときに、だだ長い文章を書いといても問題なし。
で、いつものあれ
■■ダウンロード■■
mayaとかmaxとかでロールアウトとか何か作る
んー、mayaほしいなぁ。
maxも新しいのほしいなぁ・・・・・。