2021年5月4日火曜日

Maya2022で以前のカラー管理を使う

 ~2021年6月24日追記~
RedshiftのMaya2022対応版が更新されました。バージョンは3.0.47

Maya2022の新しいカラー管理にも対応!問題なく起動します!

-------------------------------------------------------------------

・・1年も空いてしまった、、。
2021年3月、Mayaが(2021を飛ばして)2022にバージョンアップされました。
いくつか新機能が追加、変更されましたがその中で「カラー管理」も変更されました。

内容に関しては詳しくありませんので説明出来ないですが、、Mayaのヘルプではこのように書かれています。

最新のトレンドを採用したということでそれ自体は問題ないのですがレンダラでちょっと問題が出ました。

Redshiftが最近Maya2022に対応(バージョンは3.0.45)したのでDL、インストールしましたがレンダリングのログにエラー(注意?)がでます。

"Redshift's 'Sampling Gamma' is set to 'Automatic', but Redshift is unable to guess the appropriate sampling gamma corresponding to the view transform 'ACES 1.0 SDR-video (sRGB)'.

If you know a gamma value that approximates the selected view transform, please set Redshift's 'Sampling Gamma' to 'Use Custom Gamma' and set the gamma value manually."

「Redshiftの'Sampling Gamma'が'Automatic'に設定されていますが、Redshiftはビュー変換'ACES 1.0 SDR-video (sRGB)'に対応する適切なサンプリングガンマを推測できません。

選択されたビュートランスに近似したガンマ値を知っている場合は、Redshiftの「サンプリングガンマ」を「カスタムガンマを使用」に設定して、ガンマ値を手動で設定してください。」

・・どうやら新しいMayaの新しいカラー管理に対応出来ていないみたいです、、。それ自体はRedshiftの問題かも知れませんがエラー出さずに運用するには以前のカラー管理に戻す必要があります。で、本題「Maya2022で以前のカラー管理を使う」です。

方法はヘルプにも書いてあります。環境変数 MAYA_COLOR_MANAGEMENT_SYNCOLOR を任意の値に設定して起動すれば良いと。でもこれだと戻したい時は環境変数を削除することになります。必要になるとまた環境変数を設定しないと、、というめんどくさいことになりますので以前書いた記事を参考に「旧カラー管理のMaya2022」を起動させることにしました。

Maya2022syncolor.batというテキストファイルを作り、中身を

set MAYA_COLOR_MANAGEMENT_SYNCOLOR=1

C:/"Program Files"/Autodesk/"Maya2022"/bin/maya.exe

にしました。更に、Maya2018JPgo.vbsというテキストファイルを作り、中身を

CreateObject("Wscript.Shell").Run "Maya2022syncolor.bat", 0, True

にしました。この2つは同じ場所に置いて、Maya2022syncolor.batファイルをダブルクリックで起動します。これで旧カラー管理のMaya2022が起動します。Redshiftのエラーも出なくなりました。

後、V-rayがMaya2022に対応していなくて現在テスト版として検証してるみたいです。時間かかってる感じです。

そうそう、個人的にはMaya2022はいい感じです。起動はウインドウがでたらすぐに使えるし終了はスパッと落ちます!

ということで今ランチャーには2022の英語と日本語と旧カラー版英語とが並んでいます(苦笑

2020年5月5日火曜日

パーティクルの消滅に関するメモ

Mayaには初期のバージョンからダイナミクスの機能が搭載されています。
それまでTAV(The Advanced Visualizer)のオプションだったDynamation(ダイナメーション)がほぼそのままの形で移植されました。
そして現在まで長きに渡り、途中で「Nucleus」という技術で大幅に拡充されたnDynamicsが搭載されて今では「クラシックダイナミクス」という古いシステムに格下げされましたが削除されず残っています。

そのクラシックダイナミクスの機能でもパーティクルシステムをよく使います。いわゆる「粒子アニメーション」というヤツです。
炎、煙、水、その他の自然現象をシミュレーションできる、という当時は画期的な機能ではありましたが今では、FluidやBifrostやその他の専用プラグインが多数出ていますので表現では全くと言っていほど敵いません、、。しょぼいです。でも!

こんなのが出来ます!
因みに上と右下はクラシックのパーティクル、左下はnパーティクルです。

さて本題です。
このパーティクル、大量の粒子を放出してそれぞれの位置や色や形など様々な要素を随時計算していきます。それでどんどん計算時間が増えます。キャシュを取ろうもんなら場合によってはデータが数十ギカとか行きます。
それをどうにか軽くさせるためには画面から見えない、見えなくなったパーティクルの計算をやめる、いわゆる消滅させることが重要になってきます。

この消滅にはいくつか設定があり、発生から一定の時間で消えたりランダムに消えたり。個々のパーティクルに個別に時間を割り当てたり。
全てのパーティクルが画面から順番にはけて行けばなんとか「ずっと出てる」ように見えますが場合によっては画面上にずっと残さないといけないこともあり、消滅に関してはいつも四苦八苦しています。


パーティクルのライフスパンに関するアトリビュート

Live forever      -  消滅しない

Constant          -  一定時間
Randam range  -  ランダムに消す
lifespanPP only  -  個々のパーティクル単位で指示

そんな中なんとか消滅をコントロール出来ないかと色々調べました。
結果、2つの方法を見つけました。一応それぞれMayaHelpに載っていました。

その1 X、Y、Zそれぞれの軸の数値でコントロール。


例えば落ちるパーティクルなら、Y軸の5のところに来たら消える、という感じです。
MayaHelp - 個々のパーティクルを消滅させるにはどうすればいいですか?

ここのスクリプトをコピー、パーティクルの名前を必要なものに変更して再生。


スクリプトを変更している所がY軸の数値になります。マイナス3とか5とか入れて再生して結果を見ています。

その2 特定のオブジェクトに衝突したら消える。


これはかなり便利で、オブジェクトの形状に合わせて消えてくれます。

これを実行するためにMayaのコマンド、「Particle Collision Event Editor」を使います。


collision(コリジョン)とは衝突のことです。
「Particle Collision Event Editor」の設定画面はこんな感じです。パーティクルオブジェクト毎に設定できます。













←何回目の衝突でイベントが発生するかの設定

←イベントとして新たなパーティクルを発生させたり別れさせたりできる



←イベント発生時に元パーティクルを消す
←イベント発生時にスクリプトを実行

コリジョンは通常はパーティクルとの衝突を作る際に使用します。この衝突するというタイミングを使って別のパーティクルを発生させたりパーティクルを消す、ということがこのエディターで設定できます。
しかしこれがなかなか思うように行かず、パーティクルが衝突した回数だけが設定できるので自由に消滅をコントロール出来ません。

しかし、同時にスクリプトを使えば、例えばあるメインのオブジェクトの後ろで発生し続けるパーティクルをダミーのオブジェクトを配置して消していく、ということが可能になります。

衝突イベントの MEL プロシージャを作成する

そして具体的な記述も見つけました。

global proc myEventProc(string $particleName, int $particleID, string $objectName)
{
 if($objectName == "pPlaneShape1")
 {
  particle -e -attribute lifespanPP -id $particleID -floatValue 0.0 $particleName;
 }
}


設定としましてはまず最低限のパーティクルとコリジョンオブジェクトを設定しておきます。
そして、

  • パーティクルシェイプのアトリビュートでライフスパンを lifespanPP only に設定
  • Particle Collision Event Editorでイベントを作成
  • 上記のスクリプトの中でobjectNameを消すためのオブジェクトのシェイプ名に変更してスクリプト全部をスクリプトエディタで指定
  • プロシージャ名をParticle Collision Event Editorの Eventprocedure:に入力
  • Original particle dies:にはチェック入れず
基本はこれで良いのですが実はなぜか最初ちゃんと消えませんでした。
色々見回った結果、スクリプトが返してくる衝突オブジェクトの名前の前にスペースが入ってる?のを見つけました。それでスクリプトにもオブジェクト名の前にスペース入れたら動作しました!・・何やねんそれ・・

このようにすれば、objectNameで指定したオブジェクトにパーティクルが当たるとパーティクルが消えるようになります。X、Y、Zの軸単位でなく、回数指示でなく、自分の作った形で消えてくれます!
これで、作業効率がアップすること間違いなし!
と言いたいところですがそれに伴って更に他の事を追い求めることになるので作業時間的にはどうなのか疑問ですが。。

ということで今回はパーティクルの消滅に関する事でした!

2020年2月17日月曜日

Mayaのヘルプが開かなくなっていたのを治しました。

1年サボってしまった・・。

Mayaは、2019年は末に2020も出ましたが2019をメインで使い始め、今に至る。
まだ2020はテスト状態。

さて、いつの頃からかMayaからのHelpウインドウが出なくなってしまった。
Help → Autodesk Maya Help 等実行してもエラーメッセージが出てブラウザが開かない。windowsから小さいウインドウも出る。







Mayaのスクリプトエディターには
// Error: file: C:/Program Files/Autodesk/Maya2019/scripts/startup/initHelp.mel line 492: Unable to display 'http://help.autodesk.com/view/MAYAUL/2019/JPN/' in a browser. //
と出てくる。

Mayaのエラーメッセージは内容がよくわからないことが多い(個人的な意見)
ウインドウでは
'htmlfile\shell\open\command'が見つかりません~
と出てくるしMayaは
C:/Program Files/Autodesk/Maya2019/scripts/startup/initHelp.mel
ファイルの492行目で、ブラウザでヘルプページが読めないと言ってる。

ちょっとほったらかしていたがいちいち面倒なので治してみた。

小さいエラーのウインドウはMayaで何か実行されてのことで出てると思うのでMayaのエラーを見てみる。該当のmelをテキストエディターで開く。













492行目には showHelp というコマンドが書いてある。
コマンドを調べてみた。
http://help.autodesk.com/view/MAYAUL/2019/JPN/?guid=__CommandsPython_showHelp_html
説明を読むと
「Web ブラウザを起動し、オンライン マニュアルとヘルプ ファイルを開きます~」
と書いてあるのでWebブラウザを起動するコマンドだとわかる。
mayaのスクリプトエディタで直にコマンドを打ってみても同じくWindowsエラーのウインドウが出た。

次にエラーウインドウの内容を見てみる。
「'htmlfile\shell\open\command'が見つかりません~」とあるのでそのものを検索。
でこのページを見つける。
https://paqalex.blog.fc2.com/blog-entry-13.html
どうやらレジストリの問題のようで、確かに
HKEY_Local_Machine\Software\Classes\htmlfile\shell\open\command
が無かった・・。
このページを参考にレジストリを修正。無事にヘルプが開くようになりました。

因みに、chromeのパスは
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
です。

2019年3月4日月曜日

MayaのUIを日本語、英語それぞれで起動させる

MayaのUIや作業環境を英語と日本語それぞれで起動させる方法です。

Mayaのインストールでは、OSの言語が優先されます。なので日本語環境であれば日本語UIでインストールされます。ちょっとした理由で英語に切り替えました。

通常、言語の設定を変更するには環境変数を使います。
AUTODESK KNOWLEDGE NETWORKのページに書いてあります。

ここにはWindowsのシステムプロパティから環境変数を設定する方法も載っています。
因みに環境変数のウインドウからユーザー環境変数に追加する場合は新規...ボタンを押して設定します。

これで、インストールしてあるMayaはどのバージョンも全て!、英語UIで起動します。

ただ、たまに日本語UIでも起動したいし講師の仕事してる際は日本語UIを使っているので必要な時毎にシステムプロパティを変更するのも面倒です。
そのために個別に環境を設定して起動する方法もAUTODESK KNOWLEDGE NETWORKのページに書いてあります。コマンドプロンプトを使用する、更にバッチファイル(batファイル)を作る方法です。

これで個別に起動はできますが、コマンドプロンプトが残ってしまいます・・。

このコマンドプロンプトも消したい!と思ってGoogle先生に教えてもらい、こちらを見つけました。

こんな感じになります。

Maya2018JP.batというテキストファイルを作り、中身を

SET MAYA_UI_LANGUAGE=ja_JP
C:/"Program Files"/Autodesk/"Maya2018"/bin/maya.exe

にしました。更に、Maya2018JPgo.vbsというテキストファイルを作り、中身を

CreateObject("Wscript.Shell").Run "Maya2018JP.bat", 0, True

にしました。この2つは同じ場所に置いて、Maya2018JPgo.vbsファイルをダブルクリックで起動します。そうするとコマンドプロンプトは出ずに環境変数を設定したMayaが起動します。
それぞれ同時に起動できます。

因みに、Mayaは英語環境、日本語環境それぞれにプリファレンス情報を持っているので作業環境を同じにするにはプリファレンスのファイルをコピーしないと?ですね。。。まぁカスタムしてるところは少ないのでそこまでしてないですが。。

2019年3月2日土曜日

CADデータの読み込み

Autodeskさんのメディア&エンターテインメント事業部のWebサイトAREA Japanのコラムにこのような記事がアップされていました。

チュートリアル / 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ
第76回: ゲームのためのハードサーフェスモデリング時代

内容は、「ハードサーフェスモデリングの為に予めパーツをたくさん作っておいてそれを組み合わせて1つの形状を作っていこう、そのパーツをつくるのにCADのソフトを使い、Mayaで読み込んで使おう」
と、ざっくりとこのような事でした。

僕は仕事柄、クライアントさんから商品のCADデータを頂いてそれを静止画や動画にする事が多いのでこの記事の中でもCADデータをMayaに持っていく所が参考になりました。

ただ、そこで書かれていた方法でやってみましたが個人的には多少の満足にとどまりました。モノによっては使える事もあるかもです。(あくまで「読み込み」「CAD→ポリゴン変換」に関する部分のみで、記事の内容が間違ってるとかということではありませんので念の為。)

この辺は色々な方法があるのかもしれませんが、僕のやり方と、記事にあった方法との比較をしてみたいと思います。

先に書きますが僕のいつもの方法は、
CADデータ→Fusion360に読み込んでSATファイルに書き出し→3DSMAXに読み込んでFBXで書き出し→Mayaに読み込み
という一見ややこしいことをしています。が、これが現状では一番納得できる状態のモデルができます。出来ないときもたまにありますが、、。
(あくまで個人的な方法なので他のご意見もあるかもです。)

----------

CADデータ、そもそもCADで製品を設計してそれを元に製品にしていくのでビジュアライズする必要が無い事が多かった。あっても形や表面の評価をするための表現でした。

広告に載せるにはそのモデルを元にモックアップや実製品をつくって写真や動画の撮影をする、という流れでしょうかね。今でもその方法は基本ではあります。

そこに、色々と理由はあるかと思いますがプロモーション用に、製品になっていない状態でも製品の静止画像や動いてる動画がほしい、という要望があって、そこでそのような表現が出来る3DCGのソフトで処理をしてレンダリングする、という需要が生まれたんだと思います。
まぁ、僕も多少ですがその需要に乗っからせて頂いているわけですが。。

話が逸れました。。
それで昔から、CADデータの変換には色々と苦労させられてました。今もですが、

・面が欠落する
・面が異常な形状に変化する
・データが重い

等々、、


それぞれのCADソフトが保存するオリジナルのデータはそのまま読める事が少ない中、「中間フォーマット」と呼ぶファイルでやり取りします。有名なのは
IGESですが、車業界で発展してきたSTEPが最近は多いです。信頼性もアップしています。
(それでも中間ファイルはファイルサイズが大きくなりがち、担当者が書き出しの設定がわからないとかでもらえないことも多く、オリジナルのフォーマットで来ることもあります。)

データの参考用にFusion360で簡単なモデルを作りました。とりあえずIGESで書き出します。

そしてMayaへ読み込みするのですが、Mayaは昔からCADデータ(IGES)を読み込むとサーフェスの状態で読み込まれます。


・・・久々にそのまま読み込みましたがここまでとは・・。トリムが全く処理されていません。。
さて、この状態ではダメですので、問題がある面を処理していきます。
また、サーフェスの状態でレンダリングまで持っていくこともできますがレンダリング時に自動でポリゴンに変換されるため頂点が揃っていないと穴が空きます。そのためにサーフェス毎の面分割設定を調整したりするのが面倒なので、ポリゴン化することに。
その際には分かれた面をつなぎ直し、エッジを処理して、、という作業が延々と続きました。大量のデータになると何日もその作業にかかってしまい、ツラいことになりました。

何とか出来ないかと色々とトライアンドエラーを繰り返した結果、上記に書いたように中間ファイルにSATを使い、
CADデータ→Fusion360→satを3DSMAXに読み込み→FBXをMayaに読み込み
という手順に行き着いたわけです。

AREA記事によりますと***_ATFプラグインを使う、とあります。Maya2016のExtensionから入ってきたようです。
なので今までスルーしていました。

と、いうことで比べてみました。直に読むデータはSTEPにしています。


左から、
①Fusion360→STEP_ATFのATFTessellationオプションで読み込み
②Fusion360→STEP_ATFのArubaTessellationオプションで読み込み
③Fusion360→SATを3DSMAXに読み込み→FBXを読み込み
になります。
因みに、Maxでは読み込みの際にオプションウインドウが出てそこで分割の細かさ等選択できますがデフォルトのままです。ATFプラグインの方は見た目を合わせるために分割のパラメータを調整しています。

見た目に分割のされ方に違いが出ています。一番きれいなのは③です。AREA記事で紹介されていたのは②の場合です。
ワイヤーフレーム表示をオフにして一部を拡大表示してみます。


どうでしょう。②だけ、ハードエッジが見えます。サーフェス時のエッジラインが見えてしまっています。


サーフェス同士の処理がうまく行っていません。頂点法線の向きが合っていないのですね。さらに②では数字の下辺りが、ボリゴン分割が良くなくて変な陰影が出ています。
ということで②は使えないことになります。
「いやいや、これ、ポリゴンがサーフェス時の面単位で切り離されてて、エッジがくっついてへんから、記事にあるように頂点マージしてソフトエッジにすればええやん」とも思いますが、Mayaで読み込んだ時点でエッジが見える、ということはCADで処理した法線データが削除されている状態です。
なのでMayaでマージしてソフトエッジ処理しても、CADデータの時のような表面にはなりません・・・。

③では、実はサーフェス時の面単位で切り離されているにもかかわらず、面の繋ぎが切れているようにはみえません。頂点や面の法線はCAD設計時の情報がちゃんと残っています。

因みに、「サーフェス時の面単位で切り離されている」というのは以下のような状態です。







表面がきれいで一つの形状に見えますが・・





一つ前の画像にある黒いエッジが境界線で、
パーツのようにバラバラになります。





そうすると?「①の、ATFプラグインATFTessellationオプションでええんちゃうん?」
と考えるでしょう。①ではポリゴンが切り離されていなくて1個の状態になっています。頂点もマージされています。当然エッジ処理もちゃんと残っていますので大丈夫。
ですが、まだ①が使えない理由があります。

僕はポリゴンを三角から四角にするのを好んでやります。コマンドは
メッシュ > 四角化(Quadrangulate)
です。これを①と③に実行してみます。


①では一部エッジが余計に消えて形が崩れてしまいました。
③ではサーフェス単位のポリゴン面がパーツとして残っているためきれいな見た目で四角化されています。これで後の調整作業は大幅に短縮されます。

そんなことで僕はCAD→SAT→3DSMAXからFBX→Mayaというめんどいことをその都度行っています。今の所、ほぼ無理なく出来てます。たま~に、これですらもまともに来ないデータもありますが(苦笑)

他にいい方法あるかなぁ。。

2019年3月1日金曜日

UnilyのためにFBXを書き出す時のオプション設定

1月くらいから、Unity用にデータを作っていました。そこでメモ。

MayaからはFBXを経由してUnityに読み込みするわけですが、これがなかなか思うように行きません。。

リグ付きの軽めの人体モデルですが数体あって、オリジナルのリグとHumanIKのものが混ざっています。

スケルトン、IK、コンストレント、まともに出せるまで結構トライアンドエラーしました。
途中、Googleに助けを求めたら、Unrealの質問ページ?にこのようなものがありました。
そして「ゲームエクスポーター」なる機能がある、というのを見つけます。Maya2016
から付いてるものみたいです。これは、通常のFBX書き出しよりもより詳細にアニメーションクリップ等を出せるメニューです。




これを使った所概ねいい感じで出力されたので、このゲームエクスポーターのオプションを確認して、通常のFBX書き出しのオプションに設定、出力して確認したらうまくいきました。。これ以外にもデータの方が問題でうまく書き出されなかったりしてまたトライアンドエラーを繰り返し、、というのはまたの機会にします。
以下、FBXのオプション。Curve Filters、Constant Key Reducerはお好みですね。
この中でキモなのはConstraintsがオフになってることかな、リグでコンストレイント使うから迷わずチェック入れていましたが。。。

こんな感じで、いつもGoogle先生に助けられています(^^;)

2019年2月28日木曜日

samplerinfo を使って外から周り込む光の表現

MayaのノードにはUtilityノードというものがあります。
この中から「samplerinfo」というノードを使ってオブジェクトの周りから光が回り込んでくるような表現を試してみます。

クッションのようなものを作りました。Blinnシェーダーを割り当てて適当に色付け、バンプを入れています。


・Hypershadeで

UtilitysグループにあるSamplerinfoノードをクリックして作成。
2D TexturesグループにあるRampノードを作成。

Samplerinfoノードの「Facing Ratio」をRampノードの「U Coord」に接続。

Rampノードのアトリビュートで「Type」を「U Ramp」に変更。
Rampのカラーを左が白、右が黒になるように設定。

Rampノードの「Out Color」をblinnシェーダーの「Incandesence」に接続。

・接続の結果

これでレンダリングしてみます。

・設定あり
光が回り込んでベルベット状のような感じになりました。実際はRampの色などの具合を調整していますがだいたいこんな感じ。

違うモデルでも試してみます。顔モデルです。
普通にシェーダーを割り当ててます。Incandesenceに効果を設定すると、
こうなります。さらに、顔の色を黒にすると、
こんな感じになって、透明なモデルのようにも見えます。
これが面白いのは、Rampの様子を下記のようにすると・・
この様になります。
色々ためしてみても面白いです。。

ちょっとだけ自己紹介

京都市在住で主に3DCGコンテンツを制作する個人事業主です。

ニックネームはカタカナで ヤマモトムネト
ツイッターのIDは@muneto_BM
ネットで掲示板に書き込みとかしだした頃はBMとだけ名乗ってました。

デジタルコンテンツ業界に関わることになるのは大学卒業後、会社に入社してからですね。3DCGとしてだったら大学2年から触ってます。当時はPersonal LINKSをPC-9800で動かしてましたね。

会社勤めしていましたが14年ほど前に独立、その後大学の講師をさせてもらいながら今に至ります。

CGに関わって(大学卒業後)27年、、ほぼ独学、プログラミングは出来ません。アーティストやデザイナー?なんておこがましい(でも一応名刺には3DCGデザイナーとしてます)、、、皆さんに支えてもらいながらの生活です。
こんな私ですがよろしくおねがいします。

制作環境
Windows10 x64
Autodesk Maya2018.5
 plugin:V-ray,realflow
AdobeCC




ブログ始めてみました。

とりあえずは日々仕事で関わっている3DCGや映像制作等の、気になったことや覚えておきたい情報等を書き留めておきたいと思います。

Maya2022で以前のカラー管理を使う

 ~2021年6月24日追記~ RedshiftのMaya2022対応版が更新されました。バージョンは3.0.47 https://www.redshift3d.com/product/download Maya2022の新しいカラー管理にも対応!問題なく起動します! -----...