デザイン戦略(コンピュータアニメーション) 2009年度春学期

Similar documents
第 2 回 Maya の基礎 2011 年度春学期火曜日 4 時限目 λ18 教室デザイン戦略 ( コンピュータアニメーション ) 担当 : 中村太戯留 Maya の基本操作 [ メインメニュー ] [ ステータスライン ] [ シェルフ ] [ ツールボックス ] [ チャンネルボックス ] [

C#の基本

Microsoft Word - VB.doc

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ

スライド 1

Microsoft Word - VBA基礎(6).docx

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

問 1 図 1 の図形を作るプログラムを作成せよ 但し ウィンドウの大きさは と し 座標の関係は図 2 に示すものとする 図 1 作成する図形 原点 (0,0) (280,0) (80,0) (180,0) (260,0) (380,0) (0,160) 図 2 座標関係 問 2

Microsoft PowerPoint - ruby_instruction.ppt

Java講座

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

Microsoft Word - 2.IJCAD Electrical 基本マニュアル.doc

ガイダンス

UMLプロファイル 機能ガイド

スライド 1

Prog1_6th

Prog2_12th

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Microsoft PowerPoint - visualprogram.ppt

PowerPoint プレゼンテーション

Microsoft Word - no11.docx

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

pp2018-pp9base

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

JavaScript 演習 2 1

プログラミング入門1

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint ppt

PowerPoint Presentation

Microsoft Word -

C#の基本2 ~プログラムの制御構造~

フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに 本ツールの機能 yflowgen.exe の使い方 yflowgen.exe の実行方法 制限事項 生成したファイル (gml ファイル形式 ) の開

Prog1_10th

PowerPoint Presentation

ガイダンス

プログラミング基礎

デザイン戦略(コンピュータアニメーション) 2013年度春学期

Microsoft PowerPoint - 計算機言語 第7回.ppt

ガイダンス

Microsoft Word A02

PowerPoint プレゼンテーション

データの作成方法のイメージ ( キーワードで結合の場合 ) 地図太郎 キーワードの値は文字列です キーワードの値は重複しないようにします 同じ値にする Excel データ (CSV) 注意キーワードの値は文字列です キーワードの値は重複しないようにします 1 ツールバーの 編集レイヤの選択 から 編

※ ポイント ※

関数の定義域を制限する 関数のコマンドを入力バーに打つことにより 関数の定義域を制限することが出来ます Function[ < 関数 >, <x の開始値 >, <x の終了値 > ] 例えば f(x) = x 2 2x + 1 ( 1 < x < 4) のグラフを描くには Function[ x^

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

プログラミング入門1

Microsoft PowerPoint - prog04.ppt

第 3 回 Java 講座 今回の内容 今週の Java 講座はコレクション 拡張 for 文, ガベージコレクションについて扱う. 今週の Java 講座は一番内容が薄いも のになるだろう. コレクション コレクションとは大きさが決まっていない配列だと考えればよい. コレクションには List 先

ガイダンス

Microsoft Word - 3new.doc

PowerPoint プレゼンテーション

デジタル表現論・第4回

Microsoft PowerPoint - prog08.ppt

PDF Convertor for mac スタートアップガイド

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

基礎プログラミング2015

Prog1_12th

ファイルを直接編集する画面を切り替えることができる. 図 3 標準のレイアウトを削除する (2) グラフィカル レイアウト画面で LinearLayout(Vertical) を追加するパレットウィンドウの レイアウト の中にある LinearLayout(Vertical) をドラッグして, 編集

Microsoft PowerPoint - prog07.ppt

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

ToDo: 今回のタイトル

テキストファイルの入出力1

2006年10月5日(木)実施

Microsoft Word - java a.doc

PowerPoint プレゼンテーション

情報基礎A

Java言語 第1回

Microsoft Word - SKY操作マニュアル.doc

スライド 1

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

情報処理演習 B8クラス

Excel2013基礎 数式と表編集

デジタル表現論・第6回

メソッドのまとめ

プログラミング入門1

Microsoft PowerPoint - 第3回目.ppt [互換モード]

エクセルの基礎を学びながら、金額を入力すると自動的に計算され、1年分の集計も表示される「おこづかい帳」を作りしょう

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

Microsoft PowerPoint - prog06.ppt

正誤表(FPT1004)

スライド 1

PowerPoint Presentation

MS-ExcelVBA 基礎 (Visual Basic for Application)

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

プレポスト【問題】

Microsoft PowerPoint - CproNt02.ppt [互換モード]

目次 更新履歴... 1 画面設計書の目的... 3 必要な内容... 3 画面一覧... 4 必要な内容... 4 画面遷移... 5 画面レイアウト... 6 入力パラメータ... 7 必要な内容... 7 項目定義... 8 必要な内容... 8 部品の種類... 9 ( 参考 ) 部品指定と

Microsoft Word - no202.docx

3 カーソルの下に 点 という文字が現われます 地図を拡大して点データを作成したい地点にカーソルを動かしクリックします 4 属性情報の確認 変更 ダイアログが表示されます 必要事項を入力し OK をクリックします 全ての項目を入力する必要はありません 必要な項目のみ入力して下さい いろいろな記号が用

プログラミング入門1

PowerPoint Presentation

プログラミング基礎I(再)

スライド 1

Microsoft Word _VBAProg1.docx

PowerPoint プレゼンテーション

Transcription:

第 3 回 MEL の基礎 (1) MEL の基礎 MEL(Maya Embedded Language) は Maya の中心となるスクリプト言語で Maya の GUI 上での作業は MEL コマンドの実行と言い換えることもできる スクリプトエディタを開いて Maya の GUI 上で作業を行うと その作業に対応した MEL がスクリプトエディタ上に表示されるのを観察できる 3DCG 制作においては 繰り返し類似した処理を行うことが多いが その際に この記録されたスクリプトを活用し 簡単なプログラムを記すことで 作業の効率化を図ることが可能となる [ スクリプトエディタ ] 図 3-1: スクリプトエディタの起動ボタン 図 3-2: スクリプトエディタ 演習 1: スクリプトエディタを開き その後 球体を作成し 表示されるスクリプトを観察しなさい スクリプトエディタの起動は画面の右下のボタン 例えば シェルフの [ ポリゴン ] から [ ポリゴン球体 ] を実行するとパースヴュー内に球が現れると同時に スクリプトエディタに次のような MEL スクリプトが表示されたはずである polysphere r 1; 演習 2: 今度は 一度球体を選んで [Del] を押して削除し スクリプトエディタの [MEL] の部分に上記を入力して実行し 何が起こるか観察しなさい 1

プロシージャー プロシージャー (procedure; 手続き ) とは 複数のコマンド 関数 プロシージャーなどをまとめて ひとつの部品のようにしたものである 文法は C 言語とシェルスクリプトのハイブリッドとなっており 変数 制御構造などが使用でき return 文によって返り値を返すことができる [global] proc [return type] < プロシージャーの名前 >( [ 引数,...] ) [MEL の文 ] なお [...] の部分は省略可能となっている 同じ名前のプロシージャーがあれば より後に定義されたものが有効となり 先に定義されたものは機能しなくなるため注意が必要である また 関数と同じ名前のプロシージャーを作ることはできないことにも注意が必要である global proc helloworld() print "Hello World!!"; スクリプト 3-1: helloworld.mel 演習 3: 下記の内容を実行してみなさい 1. テキストエディットを開き スクリプト 3-1 の内容を書き込んで helloworld.mel というファイル名で保存してみなさい ( 拡張子が指定されていない場合は.txt を使用 のチェックを外す ) ファイルは プロジェクトで指定した MEL のフォルダ ( 図 2-7 参照 ) に保存すること 2. スクリプトエディタから [ ファイル ] -> [ ソーススクリプト ] で helloworld.mel を読み込む 3. コマンドラインに helloworld(); と打ち込んで実行し Hello World!! の表示を確認する global proc ex32() // 1st polysphere -r 1; rotate -ws -p 0 0 0 0 120 0; // 2nd polycone -r 1 -h 3; rotate -ws -p 0 0 0 0 240 0; // 3rd polycube -w 1 -h 2 -d 1; rotate -ws -p 0 0 0 0 360 0; スクリプト 3-2: ex32.mel 演習 4: スクリプト 3-2 を実行してみなさい また GUI 上で任意の 3 つの立体を作成し その作成時の MEL スクリプトを観察しなさい そして スクリプト 3-2 の立体を作る部分をその観察したものに置き換え 読込なおして実行してみなさい (// から行末まではコメント行 ) 2

変数 変数とは数字などの情報を入れておく箱のようなものである この箱に名前を付ける際には 英数字と _ ( アンダースコア ) を使うことができる 変数を使う際には 変数名に $ マークを付ける また 箱 ( 変数 ) には型があり 中に入れる情報の種類により使い分ける必要がある 整数型 int 例 : 5 実数型 float 例 : 7.5 文字列型 string 例 : Hello World!! ベクトル型 vector 例 : <<3.0, 7.7, 2.5>> マトリックス型 matrix 例 : <<2.0, 1.5, 3.3; 5.5, 2.0, 1.8>> global proc helloworld() string $str = "Hello World!!"; print $str; スクリプト 3-3: helloworld.mel 変数名 : 値 演習 5:helloWorld.mel をスクリプト 3-3 のように 文字列を変数に格納してから表示する形式に改造してみなさい スクリプト 3-3 で = は右のものを左の変数に代入しなさい という意味であることに注意する必要がある つまり最初の行では string 型で $str という名前の変数を作り そこに "Hello World!!" という文字を代入するということをしている 次の行では $str という変数の中身を取り出して画面に表示するということをしている つまり スクリプトは上から順に下へ実行され 同じ行内では右から左へ実行されるという特性を持っているため そのことをよく理解しておくことが大切である global proc myrotate(int $r) rotate -ws -p 0 0 0 0 $r 0; global proc ex32() polysphere -r 1; myrotate 120; polycone -r 1 -h 3; myrotate 240; polycube -w 1 -h 2 -d 1; myrotate 360; スクリプト 3-4: ex32.mel 演習 6:ex32.mel をスクリプト 3-4 のように 指定した角度を回転させるプロシージャを作成し そのプロシージャを角度を指定して呼び出す形式に改造してみなさい また 回転角度を変えてその様子を観察してみなさい 再実行の際は 既存オブジェクトを削除してからおこなうこと 3

アサイン多くの MEL コマンドには返り値があり その返り値を変数に代入することをアサインという アサインする際には 実行するコマンドを ` ( バッククォート ) で囲んでおく必要がある スクリプト 3-5 では 球を作るというコマンドを実行し その返り値である球の名称を $name という文字列型の配列 ( 複数の値を入れられる変数 ) にアサインしている例である global proc ex35() string $name[]; // 配列の定義 $name = `polysphere -r 1`; print $name[0]; // 配列の 0 番目 スクリプト 3-5: ex35.mel 値 値 変数名 : 0 1 2 3 演習 7: スクリプト 3-5 を作成して実行してみなさい アトリビュート オブジェクトには多くのアトリビュート ( 属性 ) があり アトリビュート名でそれらの情報を取得したり (getattr コマンド ) 設定したり (setattr コマンド ) することができる その他 アトリビュートの表示 (listattr) アトリビュートの接続 (connectattr) と解除 (disconnectattr) などのコマンドがある これらの返り値を変数にアサインして利用すると便利である global proc ex36() float $ty; polysphere -r 1 -name Ball; // Ball という名称の球を作成 $ty = `getattr Ball.ty`; // Ball の Y 座標の取得 $ty = $ty + 1.5; // 1.5 を加算 setattr Ball.ty $ty; // Ball の Y 座標に加算した値を設定 スクリプト 3-6: ex36.mel 演習 8: スクリプト 3-6 を作成して実行してみなさい global proc ex36(string $name) // 引数として名称を設定 float $ty; polysphere -r 1 -name $name; $ty = `getattr ($name + ".ty")`; $ty = $ty + 1.5; setattr ($name + ".ty") $ty; スクリプト 3-7: ex36.mel 演習 9:ex36.mel をスクリプト 3-7 のようにオブジェクト名を指定できるように改造してみなさい なお オブジェクト名の後にアトリビュート名を追加する際には ($name + ".ty") のように文字列として結合し 全体を丸カッコでくくっておかないとエラーになるので注意が必要である このプロシージャを呼び出す際には ex36("ball"); のように名称を指定して実行すること 4

string $str[] = `listattr`; print $str; スクリプト 3-8: listattr.mel 演習 10: オブジェクトを何か選択した状態でスクリプト 3-8 を実行すると そのオブジェクトで利用可能なアトリビュートの一覧を表示することができる ( 下記はそのサンプル ) translatex rotatex scalex translatey rotatey scaley translatez rotatez scalez ウィンドウ ウィンドウを生成し その上に配置したボタンやスライダを用いてオブジェクトのアトリビュートを制御することができる ウィンドウを表示するためには 次のコマンドを用いる そして これら 2 行の間にウィンドウ上のボタンやスライダ等を配置するためのコマンドを記していく window -title " 表題 "; showwindow; ボタンコマンドの書式 : button -label " ラベル " -command " 実行するコマンド "; float 型の変数を制御するためのスライダの書式 : floatslidergrp -label " ラベル " -field true -min 最小値 -max 最大値 -step 増分 -value 初期値スライダ名 ; float 型のスライダの値の取得 : floatslidergrp -q -value スライダ名 ; int 型のスライダの場合には intslidergrp というコマンドを用いる global proc createsphere() float $val; $val = `floatslidergrp -q -value radiusslider`; polysphere; scale $val $val $val; window -title "sample"; columnlayout; text -label "create sphere"; floatslidergrp -label "radius" -field true -min 0.1 -max 20.0 -step 0.1 -value 1.0 radiusslider; button -label "create" -command "createsphere()"; showwindow; スクリプト 3-9: createsphere.mel 5

演習 11: スクリプト 3-9 を実行してみなさい また他のアトリビュート ( 移動の XYZ 回転の XYZ スケールの XYZ) も変更できるように拡張してみなさい スライダの動きによってリアルタイムでオブジェクトのアトリビュートを変化させるためには attrfieldslidergrp というコマンドを -at オブジェクト名. アトリビュート名 を追加して用いる なお オブジェクト名を省略すると 現在選択されているオブジェクトが操作対象となる window -title "sample"; columnlayout; text -label "edit XYZ"; attrfieldslidergrp -label "translate X" -min -10.0 -max 10.0 -at.translatex; showwindow; スクリプト 3-10: editxyz.mel 演習 12: オブジェクトをどれか選択し スクリプト 3-10 を実行してみなさい また他のアトリビュート ( 移動の XYZ 回転の XYZ スケールの XYZ) も変更できるように拡張してみなさい 本日の課題 課題 1.MEL スクリプトは CG 制作のどのような場面で使用するのが効果的か GUI による操作が効果的な場面と比較しながら 理由も含めてチェックシートに記しなさい 課題 2. 選択オブジェクトを原点中心に距離 5 で Y 軸まわりに r 度回転させるプロシージャを作成しなさい そして 半径 1 の球を作成し そのプロシージャで 120 度回転させるスクリプトを記しなさい スクリプトファイル (k03-1.mel) を第 3 回の課題提出サイトにアップしなさい 課題 3. 選択オブジェクトの Y 座標を ±10 の範囲でスライダで調整するスクリプトを記しなさい スクリプトファイル (k03-2.mel) を第 3 回の課題提出サイトにアップしなさい 参考サイト MEL に関しては次のサイトを参考にすると良い http://www.not-enough.org/abe/manual/maya/ 6