後期課題 (MAYA Programming - AD98 )
課題
以下のMELプログラムを作って提出すること。
- GUIによって人間の骨組みを作るプログラム。
課題の説明
必須事項に書いてある条件は必ず守ること。
できれば追加事項もやってみる。
- 必須事項
- 最低限、首・手・足・胴を作る。
- ジョイント、インバースキネマティクスを使用する。
- プログラムのファイル名はkinematics.mel、プロシージャの名前はmakeHumanとする。
- Script Editorからkinematics.melをSource Scriptメニューで読み込んで、
makeHuman()と打ち込むと実行できる(ウインドウが現れる)ようにしておく。
- GUIのスライダーを使用して、手・足・胴の長さを変えることができること。
腕の部分は肩から肘、肘から手首までの部分がそれぞれ長さを変えることができること。
足では腰からひざ、ひざから足首までの部分がそれぞれ長さを変えることができること。
右腕・左腕が一つのスライダーで同時に長さが変化しても良いが、片腕づつ長さが変るのでも良い。
右足・左足も同じ。
(片方だけが変化するスライダーと、両方が変化するスライダーがあるともっと良い)
- GUIのOKボタンを押すとウインドウが消える。
もちろん、ジョイントなどのデータはシーンに残っていること。
- GUIのレイアウトは自分で考える。
- 色やマッピングの必要は無い。
- 追加事項
- 手・足に指をつける。
- スキンによって人間の形を作る。
男・女、太っているか痩せているかなどをGUIによってコントロールできるようになっていると、さらに良い。
- 参考画像
以下の画像と同じインターフェースではなくても良い。
ただし、最低限ラベルとスライダーとボタンを配置すること。
(テキストフィールドはあっても無くても良い)
評価基準
- 必須事項の条件を必ず守っていること。
- 追加事項ができていれば、それだけ評価が上がる。
提出期限
提出方法
提出期限までにホームディレクトリの下のmel2というディレクトリの中に以下の名前でファイルを作っておくこと。
注意
- 提出するディレクトリ名・ファイル名を間違えると提出したことにならないので注意すること。
FAQ (よくある質問)
- OKボタンを押してもウインドウが消えません。
- 具体的な現象
以下のように$windowNameという変数にウインドウの名前を代入してbuttonを押した時にウインドウが消えるようにしていた場合、このままでは
$windowName is an undeclared variable
などとエラーが出てウインドウが消えない。
global proc makeHuman()
{
$windowName = `window -title "kadai2"`;
// 途中は省略
button -label "OK" -command "deleteUI $windowName;";
}
- 理由
button -label "OK" -command "deleteUI $windowName;";
によって実行される
deleteUI $windowName;
というコマンドはmakeHuman()の実行が終ってからOKボタンが押された時に実行されるコマンドである。
一方、$windowNameという変数はプロシージャの中で定義された変数なので、プロシージャの実行が終った時にはもう消えている。
だから
deleteUI $windowName;
が実行される時には $windowNameが定義されていないというエラーになる。
- 解決方法
この場合、解決方法として
global proc makeHuman()
の外に
string $windowName;
を追加するか、
$windowName = `window -title "kadai2"`;
の部分に
-n makeHumanWindow
などとして、適当な名前(ここではmakeHumanWindow)を追加し、
変数$windowNameを消し
deleteUI $windowName;
の $windowName をその名前(ここではmakeHumanWindow)に変更する。
参考
Home | Contents
abe@injapan.net