スタジオブロス TECH BLOG

スタジオブロススタッフからの最新ツール情報やチュートリアル・TIPSなどを紹介します

文系デザイナーのためのmaya MEL/Python基礎の基礎 Step2-4

まず、毎度おなじみの「便利なスクリプト」ですが、今回紹介するのは「FXFX Real Studio2」です。

この「Highend3d」は様々なツールや3D素材をかなり昔から公開(有料販売も)しているサイトです。

ダウンロードには無料のアカウント作成が必要ですのでご注意ください。

ダウンロードすると、このようなMELファイルなので、Mayaを起動してMayaを起動して、スクリプトエディタのMEL画面にドラッグ&ドロップし、CTRL+Enterします。

こんなウインドウが開けばOKです。これは初心者がMentalRay(今はMayaに付属しなくなりましたが)とV-rayのレンダリング設定がなかなか勉強するのが難しい時、簡単に設定をしてくれるツールです。

まずこれを使って正しいライトとカメラ、レンダー設定を学んで、自分でアレンジする、という勉強法が近道です。

では、Vrayボタンを押しましょう。もちろん、事前にVrayのインストールは必要です。持ってない方はフリートライアルが30日使えますので、お試しください。

v-ray.jp

では、「FXFX Real Studio2」の「V-ray」ボタンを押します。

MentalRayがあるMayaの場合は、そちらでどうぞ。以下の手順は同じです。

使い方は簡単!上から順にボタンを押すだけです。

「1」をクリックすると何も起きてないようですが、まずレンダーをVrayに変更します。

「2」で撮影スタジオの背景をモデリングしてくれます。

「3」でライトを2つ設定します。この位置・大きさと明るさ設定が初心者は悩むところです。

「4」でカメラ設定です。

ここでちょっとこのプラグインは不満があります。V-ray専用カメラの設定がないのです。では手動で設定してしまいましょう。カメラのアトリビュートから、「V-ray」→「PhysicalCamera」です。

「5」でレンダー設定の詳細を決めます。タブと項目がたくさんあって初心者はパニックする部分です。

「6」でレンダリングする物体を作成します。Mayaを勉強している人はここに自分の作品をImportしてもいいでしょう。

このモデルにはノンリニアデフォーマのベンドが入っているので、「T」キーでドラッグすると、変形できます。

「7」でこれにV-rayのマテリアルを設定します。レイトレーシングらしくクロムメッキな感じです。ViewPortをV-ray専用に変更してみましょう(これは自動でやってくれません)

「8」でレンダリング開始です。

計算が始まり・・・完成です。

この作業に数分で終わります。このシーンを分析すれば、レンダリングする設定を理解しやすくなります。ぜひお試しください。

さて、この「FXFX Real Studio2」のスクリプトを分析してみましょう。

Visual Studio CodeでこのMELを開きます。

過去にもやりましたが、Visual Studio Codeは「拡張機能」が便利です。検索項目に「Maya」とやると、MEL用のツールがあるのでインストールしておくと便利です。

なんと693行!?ちょっとこれを理解するのは、文系には無理ですね・・・

でも良く見てください。

proc closeWindowMain()

{

deleteUI MainWindow;

}

という個所が見えますね?

これをいつも使っている「Mel To Python」で変換してみます。

import pymel.core as pm

def _closeWindowMain():

  pm.deleteUI('MainWindow')

1行目は説明不要のPythonを使う前に設定する命令ですね。

その次の「def」というのがいままでやっていない新しい命令「関数」です。

それと「Window...」とかの命令がありますね。

「FXFX Real Studio2」ではウインドウが開いてボタンをクリックすると処理が行われます。実はGUI(グラフィカルユーザーインターフェイス)を設定しているのです。

スクリプトエディタで以下のプログラムを実行してみてください。

import pymel.core as pm

pm.polyCube()

単にキューブを作る命令ですね。

これをちょっと1行加えて改造します。

import pymel.core as pm

def makeCube():

 pm.polyCube()

注意:defのある行の最後に「:」を忘れずに!実行しても何も置きません。

では、makeCube()とコピー&ペーストして実行してください。

ちゃんとキューブができました。これが関数の基礎で「新しい命令」を作る機能です。この練習ではキューブ1つですが、defの下にある命令は何行でも実行するのです。

次回からこれを詳しく理解します。