UI関連 Dialogまたはwindowの作成


 maya2010のオンラインマニュアル

ひとまず、簡素な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 end

string $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も新しいのほしいなぁ・・・・・。

Leave a comment

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください