赤ちゃん用3DCGメモ

忘れっぽい飽きっぽい人の個人的メモ。

MayaとDeadlineを使用したレンダリングの手順

※MayaとDeadlineはインストール済みの前提で記しています。

 

 はじめに

Deadlineってなーに?

すっごく時間のかかる計算を、ネットワークに接続している複数のPCを使用して、効率よく行ってくれるつよつよソフトだよ!

 

目次

 

①mayaのセットアップ

(mayaにDeadlineスクリプトを追加する)

 

●まずDeadlineのLunch Monitorを起動

タスクバー右下のインジケータの中にあるdeadlineアイコンを右クリックし、メニューからLunch Monitorを起動

 

スクリプトの場所

f:id:Bonnish:20190602001208p:plain

左上の〇部分クリックするとなんかウインドウが出てくる

 

●そこに記載されたRepository Pathをコピー

(Deadlineのファイル内に格納された、スクリプトの場所を教えてくれてる)

 

エクスプローラーを開き、アドレスにペーストしてパスを開く

・submission > Maya > client の中にファイルが2つある。

これがmaya用のdeadlineスクリプトなので、2つともコピー

 

・ドキュメント > maya > scripts にペースト

(mayaは任意のバージョン)

 

・mayaをすでに起動していれば再起動し、

シェルフのタブの並びにDeadlineタブが追加されているのを確認する。

 

 

これでmayaからDeadlineにレンダリングを依頼する(ジョブを追加する)準備は整ったぜ・ω・

 

 

②mayaからジョブを追加する

 

レンダリングを設定する前に最大の注意点があり、

 

●そもそもmayaプロジェクトファイルをネットワーク上に置かないといけない。

deadlineはネットワーク上のデータを、そこに接続している各PCがレンダリングするので、ローカルのフォルダにプロジェクトセットしても動作しない。

 

なのでレンダリングを行う前に、deadlineでレンダリングに使用するすべてのPCから接続可能なネットワーク上にProjectFileを置く作業が必要。

ジョブを追加する際のProject setは、ネットワーク上に置いたファイルに設定しよう。

 

 

・上記のProject setを行ったうえでmayaでレンダリングシーンを開き、

レンダリング設定が完了したら、mayaのDeadlineタブからdeadline windowを開く。

Submit Maya job to Deadline みたいなやつ。

(ここでシェルフ上にDeadlineタブがなかったら、①に記載したスクリプトの追加を再度行おう。)

 

 

windowを開くと、ワァ~!入力項目がいっぱ~い!オロロロ…

土壇場でレンダリング失敗したくないなら、いっこずつチェックしようね。ワクワクさんとの約束だよ。

 

●失敗しないために確実な設定が必要な3項目を記載します。

これをしくじるとやばいって、全身が悲鳴を上げているのがわかるぜ…(遊戯王DM)

f:id:Bonnish:20190602002244p:plain

Deadline Window

①job Name

mayaのレンダリング設定ウィンドウで入力した出力ファイル名と同じにする。

違うと失敗するのでコピペが安定。

 

②Project Path

現在set projectしているprojectフォルダを選択する

(前述のとおり、ネットワーク上になければならない)

 

③Output Path

レンダリング完了したファイルを出力するフォルダを選択する。

ネットワーク上になければならない)

 

④Submit Job

これを押すとdeadlineのジョブリストに追加される。

Succes!とか成功っぽいウインドウが出たら、mayaは閉じてOK。

 

追加されると、Deadlineメニューから最初に起動したLunch Monitorから確認できる。

=ネットワーク上のPCでlunch slaveを立ち上げた時点でレンダリングが始まる。

 

 

Deadlineの便利な点として、

ジョブは一度追加が成功した時点でmayaを閉じていいので、どんどん次のレンダリングシーンを開いてレンダリングの順番待ちに追加することができる。

 

追加してしまえば、slaveを起動しているマシンでのみどんどん次のジョブをレンダリングしてくれるから、寝ててもタピオカ飲んでてもいいよ。

 

 

レンダリングを回すマシンのセット

Deadlineをインストール済みの、ネットワークで接続されたPCで、deadlineリストに追加したレンダリングを回すことができるよ~ 

 

①lunch slaveを立ち上げる

タスクバー右下のインジケータの中にあるdeadlineアイコンを右クリックし、メニューからlunch slaveを起動。

おわり。

 

slaveは起動しているとマシンの能力の10%程度を計算に使うらしい(人に聞いただけなので不確か)ので、2Dとか軽めの作業なら並行可能(PCスペックによる)

台数が多いとやっぱり爆速で進むよ(PCスペックによる)

 

 

slaveが稼働しているマシンとレンダリングの進行状況は、

Lunch Monitorから確認できる。





④ジョブを追加する際の注意点・補足

 

・lunch Monitorの内容はネットワーク上で動いてるジョブとPCをリスト化して表示しているだけなので、ジョブの追加&閲覧はどこのマシンからしてもよい。すごい。

 

レンダリング進行してるっぽく見えてcompleted!て出てても上手くレンダリングされない(真っ黒になる)ケースもあったので、レンダリングし終わったデータはきちんと確認しようね(原因不明)こわ・・・

 

 
※業務で使用しているわけではなく、あくまで一個人の情報なので何か記載ミスがありましたらご教示ください。

 

 

【TURTLE】AOを頂点カラーにベイクする

ドラえも~ん、 maya2017以降でアンビエントオクルージョンを頂点カラーにベイクしたいよ~

 

そんなときは~~~

TURTLE~~

 

もくじ

 

①ベイクレイヤーを作成

 Lighting/shadingメニューから、Bake Layer Editor(TURTLE)を起動。

 

新規のベイクレイヤーを作成するか、デフォルトベイクレイヤ―を使用してもおk

ベイクしたいオブジェクトを選択して、TurgetSurfacesにAdd。

 

outliner上の任意のTurtleBakeLayerからAttlibute設定できるぞ。

 

②ベイクレイヤーの設定

●Customにチェックを入れる

●Custom Shaderにilr Occ Samplerをアサイ

 これをアサインするとilr Occ Samplerのアトリビュートに飛んじゃうけど、

まだベイクレイヤーの設定が済んでいないので、TurtleBakeLayerのattributeに戻る。

f:id:Bonnish:20190515093821p:plain

Turtle

 ●RenderType [Vertecsys]

頂点情報にベイクする設定


VB Alpha Blend→ [None]

頂点カラーをベイクするときに頂点アルファを上書きしたくないときはNone

アルファも上書きしちゃっていい場合はReplice(うろ覚え)

 

VB colorSet :colorSet1

 ベイクするカラーセットを指定

 

レンダリング設定

レンダラー: TURTLE
RenderType: Baking

 

以上を設定してレンダリングボタンポチーすればベイクされるよ~

ほかにも便利な設定あったらおしえてくだしゃい・・・

 

参考サイト

https://www.cg-method.com/entry/2016/10/29/170758/#i-3

shaderFXとシェーダの基本的な部分メモ

shaderFXとシェーダの基本的な部分メモ

高校数学は早々に諦めた&プログラミング経験赤ちゃんなので、できるだけチンプンカンプンにならないよう分かりやすい表記にしております。 

間違いがあればご指摘いただけますとありがたいです。

 

作業する前に設定しとくと便利なオプション[shaderFX]

〇Settings > Show Property Panel

オンにするとShaderFX上で数値いじれる。

(HyperShadeやAttributeをいったりきたりするのが面倒)

 

〇Settings > Toggle Advanced Mode

詳細なシェーダ設定を編集できるモード。

 

 

関数(おぼえるといいことがある)

関数名(in) 説明
Add(x,y) 2つの値を加算
Multiply(x,y) 2つの値を乗算
Divide(x,y) 2つの値を割る
Subtract(x,y) 2つの値を減算
Mod(x,y) x / yの浮動小数点剰余を返す
Frac(x) xの小数部を返す
Pow(x,y) xのy乗を返す
abs(x) xの絶対値を返す
Min(x, y) xかyを比べ小さい方を返す
Max(x, y) xかyを比べ大きい方を返す
Clamp(x,a,b) xをa ~ bに制限(min(max(x, a), b)を返す)
Lerp(x,y,s) xとyをsでミックス[ x + s(y - x)]線形補間
Sat(x) xを0 ~ 1にクランプ
Step(y,x) y<=xなら1,y>xなら0を返す
Floor(x) x以下の最大の整数を返す
Sqrt(x) 平方根 √x
Round(x) 最も近い値に応じて切り上げまたは切り下げ
Length(x) xの長さを返す
Distance(x,y) xとyの距離を返す
Dot(x, y) xとyの内積を返す
Cross(v1, v2) vec3型の引数v1とv2の外積をvec3で返す
Norm(x) 値を1にする
Invert 数値を反転
OneMinus 数値を反転(色)
Negate 値の符号を反転


●[IfElseBasicOp]でマップを切り替える
[boolValue]を[condition]につなぐことでtrueとfalseを切り替えることができる。
boolは[expose as Material Attribute]をonにするとパラメータ化する。

 

メリット:どのUVsetアサインするか、ノードをつなぎ変えなくても、アトリビュート上のチェックで制御できるようになる。

 

複数のパターンを用意しなければならない時にも使えそう。(マスクの位置を変えてランダム感を出す)

 

 

参考記事

Unity ShaderLab ノート

https://qiita.com/nmxi/items/bfd10a3b3f519878e74e

 

GLSLについてのメモ

https://qiita.com/edo_m18/items/71f6064f3355be7e4f45

 

グラフの外観をカスタマイズする

https://knowledge.autodesk.com/ja/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2018/JPN/Maya-LightingShading/files/GUID-D02F5FA7-5F0F-40EF-B693-2AEFB4289784-htm.html

 

とりあえずやってみました ShaderFX (上編)

https://dftalk.jp/?p=13260