!!!独り言日記 !![Shade 3D] RIB (RenderMan) Exporter ver.1.0.0.2 ソースを公開しました (2015/05/30) 「RIB (RenderMan) Exporter ver.1.0.0.2」ソースを更新しました。以下に最新版をアップしてます。 なお、Shade 3Dマーケットプレイスのバージョンは 2015/05/30段階はver.1.0.0.0です。 https://github.com/ft-lab/Shade3DPlugins/tree/master/projects/RIBExporter ! ver.1.0.0.2 対応 (2015/05/30) * 面光源のパラメータを調整するダイアログボックス追加 * ボリューム表現の対応。マッピングレイヤの距離減衰をPxrVolumeのdensityFloatに割り当て。 * RenderManのマテリアル情報を、マスターサーフェス(形状)側から表面材質側に移動。 ** これにより、shdsfcファイルに表面材質情報とともにRenderMan関連の情報も保持できるようになる。 * マッピングレイヤの「スポット」「雲」表現に対応 * マッピングレイヤの「イメージ」「スポット」「雲」での色反転対応 * マルチテクスチャに対応 (Diffuse/Normal/Bump/Trim/Volume Distance) ! ver.1.0.0.1 対応 (2015/05/21) * ポリゴンメッシュのUVが0.0-1.0の範囲を超える場合、テクスチャが正常に反映されない問題を修正 * テクスチャエクスポート時の速度向上 * RIB出力オプションに、Statistics(レンダリング時間や統計情報を出力)を追加 * マッピングレイヤでのテクスチャの「アルファ透明」、「トリム」の反映 * マッピングレイヤでのテクスチャの繰り返し表現の反映 !![Shade 3D] RIB (RenderMan) Exporter のソースを公開しました (2015/05/23) 「RIB (RenderMan) Exporter」のソースコードをアップしました。 https://github.com/ft-lab/Shade3DPlugins/tree/master/projects/RIBExporter なお、ビルドにはWinではVS 2010、MacはXcode 6.1.xが必要です。 こちらのバージョンのほうが1つ先行してます(ソースはver.1.0.0.1)。 根性のある方はソースをゲットしてビルドしてみてください。最新機能を確認できます。ただし、途中でもアップすることもあると思いますので動作保障はしません。 また、バイナリの二次配布は禁止とさせていただければ幸いです。遅延にはなりますがプラグインバイナリはマーケットプレイスでアップしますので、そちらをご活用ください。たぶん、そちらが安定版になりますし。 ソースも勉強用として、ご利用くださいませ。 後に、SDNのフォーラムが正式オープンしたときに「エクスポータプラグインの使い方」として説明できればと思います。 !![Shade 3D] RIB (RenderMan) Exporter の目的 (2015/05/22) いくつか目的があって、Shade 3DからRenderManに橋渡しできるようにしてます。 !映画で使われているレンダラを知る 私自身も勉強中ではあるのですが、RenderManはご存知のようにPixar/Disneyの映画作品で使われている実績のあるレンダラです。 ですので、いたるところに実戦で使われた工夫があります。 * サンプリングを形状ごとに調整できる(速度の最適化) * 間接照明ありと間接照明なしの形状を混在できる(速度の最適化) * 合成するためのレイヤ化する機能が豊富(間接照明と直接照明や影を分ける、など) * ベイク機能(AO/DeepShadowMap/ShadowMap) * ノイズを軽減する機能 * ノードを組み合わせたマテリアルの表現 まだまだShade 3DのRIB (RenderMan) Exporterでは未実装の機能が多いですが、速度について、表現力について、いろんな機能が搭載されてます。 また、論文読む方ははっと思う「見たことある機能」を試すことができます。技術的にもおいしいです。 それを学習しましょう、というのが第一目的です。 レンダリング一発ではいOK!、はやっぱりRenderManでも少ないかと思います(コンポジ、大事だよ)。いじってるとそのへんも見えてきますので、「へぇ、映画向けのレンダラってこうなってるのか〜」と感じ取ることができればと思います。 後、RIBというテキストファイルをいじって調整できますので、視認性が高いという特徴があります。勉強にはもってこいです。 !マテリアル表現は、時代により移り変わる Shade 3Dのマテリアル表現(表面材質)、これはもう旧世代のものではあります。 たしか、RenderMan(REYES)やUnityではShader使うよね、いえいえこれもすでに古くなりつつあるかもしれません。 Shade 3Dの「RIB (RenderMan) Exporter」プラグインはRenderManのRISモード(GIレンダラ)のためのRIBファイルを出力するプラグインなのですが、マテリアル表現は表面材質(マスターサーフェス)からRenderMan用にコンバートして調整する、という流れにしてます。 Shade 3Dでの表面材質との互換性やマテリアルを極力似せる、ということはわざと捨てました。 RenderManのRISモードでのマテリアルは、いくつかのShaderを中心としてレイヤをノードとして組み合わせて表現できます。将来的にはそれに対応したいからです。 Mayaを見ればわかりやすいですが、個々のマテリアル(Shader)の互換性はあまりありません。個人的には、MayaのようにShaderが異なる場合は互換性はすっぱり切り捨てて、それぞれのマテリアルに沿った組み合わせを考えていくほうがよいかなと思ってます。 Shade 3DはPhongベース1つだけですが、それ以外にPBR(PBS)やVolumeレンダリングやSkin用の まったく異なるマテリアルの種類があると考えてください。 それを切り替えることができます。 今の3DCGツールやゲームエンジンのマテリアル表現は、ノードの組み合わせで表すのが多いです。個人的には、ゲームエンジンが先走っていてそれを3DCGツールが追いかけてる構図に感じます。Shaderを書かないものではありますが間接的にはShaderを書いているような表現が可能になります(きめ細かい調整が可能)。 そのあたりの将来性を見据えておきたいため、できればノード式のマテリアル表現も今後 RIB (RenderMan) Exporterでは考えていこうと思ってます。 !オープンソースにする 本プラグインは、プラグインのソースを公開予定です。 ある程度の規模のプラグインとしてまずは出して(今回のリリース)、それをShade 3D Plugin SDKでどう開発するのか、というチュートリアルにしたいと考えてます。 正直なところ、Plugin SDKは仕様がころころ変わりますのでついていけている人が少なく、開発者がまったく育ってないという現状があると思います。 裾野を広げる意味でも、このプラグインについてはあらゆる情報を出していこうと考えてます。 SDNのフォーラム、まだ公開されてませんが情報交換できれば。 RenderManのRIBファイルについてもこれもある意味技術的な知識がいるので、「こう書いたら速度アップできるよ、Skin表現できるよ」などなど情報交換していきたいですね。 ということで、ある種のコミュニケーションの入り口のプラグインにできればと思います。 !![Shade 3D] RIB (RenderMan) Exporter ver.1.0.0 公開されました (2015/05/22) Shade 3Dマーケットプレイスにて「RIB (RenderMan) Exporter」 ver.1.0.0.0が公開されました。 RenderManでレンダリングするためのRIBファイル/画像ファイルを出力するプラグインです。 http://shade3d.jp/store/marketplace/ft-lab/ribexporter/info.html Shade 3D ver.14/15のStandard/Professionalで動作するプラグインになります。 RIB出力段階ではRenderManのインストールは不要ですが、レンダリング時はRenderManがインストールされている必要があります。 なお、レンダリングはShade 3Dから離れてコマンドラインで行います。 RenderMan (non-commercial版)は、以下で無償でダウンロードできます。 http://renderman.pixar.com/view/non-commercial-renderman ただし、NC版では教育、研究や非営利目的では使用OKですが、営利になると使えませんのでご注意を。あくまでも勉強用にご使用ください。 機能は1つ前の日記を参照ください。 なお、後々問題や機能追加したものは次バージョンの ver.1.0.0.1 で対応しています(申請済み)。 ! ver.1.0.0.1での対応事項(2015/05/22 現在のマーケットプレイスのものはまだ未対応) * ポリゴンメッシュのUVが0.0-1.0の範囲を超える場合、テクスチャが正常に反映されない問題を修正 * テクスチャエクスポート時の速度向上 * RIB出力オプションに、Statistics(レンダリング時間や統計情報を出力)を追加 * マッピングレイヤでのテクスチャの「アルファ透明」、「トリム」の反映 * マッピングレイヤでのテクスチャの繰り返し表現の反映 ちと時間差が起きてて申し訳ないです。 後、本プラグインを出したテーマを次に書きます。RenderManで遊ぼうが第一なんですが、いくつか柱を用意してます。 !![Shade 3D] RIB Exporter ver.1.0.0 申請しました (2015/05/16) RenderManのRIBファイルを出力するShade 3Dのプラグイン「RIB Exporter」をShade 3Dマーケットプレイスに申請しました。 今までどおりの公開タイミングだと、早くて約一週間後に公開されると思われます。 「RIB Exporter」は無料プラグインとしてます。 以下、機能。 * RenderManでのレンダリングに対応したRIBファイルの出力、参照するテクスチャ画像をtiffで出力。 * RenderManのグローバルイルミネーションレンダラであるRISとして、RIBファイルを出力。 * 面光源、1つめの無限遠光源をDayLight(Physical Sky)として出力。 ** 点光源、スポットライト、平行光源は反映されません。 * レンダリングの種類として、「PxrPathTracer」(単方向パストレース)、「PxrVCM」(双方向パストレース)、「PxrDirectLighting」(直接光のみ)、から選択。 * 背景をパノラマ画像としてベイクして出力し、IBLとして反映。 * マスターサーフェスごとに、RenderManのマテリアル「PxrDiffuse」「PxrDisney」「PxrGlass」「PxrConstant」の使用と各種パラメータ変更に対応。 ** Shade 3Dでのマスターサーフェスとは別にRenderMan用のパラメータを持つことができます。 * レンダリング画像は、tiff形式/OpenExr形式より選択。 * 表面材質のマッピングレイヤでは、「拡散反射テクスチャ」「法線マップテクスチャ」「バンプマップテクスチャ」それぞれ1枚ずつの出力に対応。 ver.1.0.0段階での制限事項。 これらについては、今後のバージョンアップで徐々に対応していく予定としています。 RenderManの仕様が膨大なので、なかなか追いつけてないのですよ(^_^;; * 自由曲面はポリゴンメッシュに変換して出力します。 * サブディビジョンサーフェスを割り当てた場合は、ポリゴンメッシュが再分割されて出力されます。 * マスターサーフェスごとにRenderManのマテリアルを割り当てることができます。 ** 形状に直接表面材質を指定している場合は、RenderManのマテリアルの形式に自動でコンバートして出力します。 * テクスチャ画像は、2の累乗のサイズにリサイズして出力されます。 * テクスチャのトリムマップやアルファ要素を使ったピクセル単位の透過処理は未対応です。 * 点光源、スポットライト、平行光源の出力は未対応です。 * アニメーションレンダリングは未対応です。 なお、RIBをRenderMan(prman)に渡してからのレンダリング画像出力は、float型のtiffもしくはOpenEXR形式のファイルとなります。リニアな画像として保存されてます。 これが曲者で、Win/Macともに標準プレビューでは見ることができない場合があります。 exrはいいのですが、RenderManからのtiffは結構なツールで開けなかったりします(Shade 3D含む)。 これについてはドキュメントで書くことはしなかったのですが(どっちかというと、RenderMan側の仕様なので)、なんとかしたいなぁ。 OpenEXRで出力すると、photoShopの高いバージョンで開く手段が取れるとは思うのですが、これが無理な私のような人は(Elements版は持ってるのだけど、exrは開けないです)、 苦肉の策ですが、exr出力したレンダリング結果をShade 3Dに読み込んで板ポリゴンに張る。色補正 gamma 2.2でレンダリング、、、ちと厳しいか(^_^;; Win/Mac両方で、統一したすっきりしたやり方でlinear ==> sRGB、もしくはgamma補正、できればいいのですが、、、、。 ちなみに厳密には、sRGBとgamma 2.2は異なります。 !![Shade 3D] リニアワークフロー (2015/05/14) 日記には何回か書いたかもしれないですが「リニアワークフロー」について。RIB Exporterではこれを意識してもらうオプションをつけていたりします。 {{ref_image ris_02_20150514.jpg}} フォトリアルでレンダリングする場合は色補正でガンマ2.2を指定します。 こうすることで、レンダリングの最終出力時にはリニアからディスプレイで見て正しくなるように補正されます。 ただし、レンダリングに参加する要素はすべてリニアである必要があります。 テクスチャについては逆ガンマをあらかじめかけるオプションがイメージの形状情報ウィンドウにあるので、これを指定するとレンダリングではリニアに計算できます。 法線マップやバンプマップ、hdrなすでにリニアなテクスチャについては 逆ガンマ補正してはいけません。 では、表面材質での拡散反射などの色については?光源の色については? 実は、これらについては逆ガンマを計算して格納してあげないと正しくリニアに色計算できません。そのままだと二重にガンマがかかって白くなってしまいます。 上記画像では、表面材質ウィンドウのプレビューとレンダリング結果では緑の球の色が異なってるのがわかりますでしょうか。 RIB Exporterでは、エクスポート時にこれらを調整するオプションを用意しています。 ↓RenderMan(RIS)でのレンダリング {{ref_image ris_01_20150514.jpg}} 緑の球が、Shade 3Dでの表面材質のプレビューの色と同じになってるのがわかりますでしょうか。 なお、白(RGB(1, 1, 1))、赤(RGB(1, 0, 0))、青(RGB(0, 0, 1))のような各要素が0または1のみの色の場合は、ガンマをかけてもかけなくても結果は同じですので差はないです。 これらについては、またリリース後にでも記事で書いたほうがいいですね。 あっと、赤い透過球が落とす影がRenderManでのレンダリングでは赤くなってないですね。今気づきました。 これは「PxrGlass」のマテリアルを使ってるからなのですが、「LMGlass」も使えるようにしたほうがいいか。影の色を変えるパラメータがないようでしたので。 これは、一度リリースして次くらいに。 !![Shade 3D] RIB Exporter そろそろ (2015/05/13) そろそろ初回バージョンとしてFixできそうなので「RIB Exporter」。前告知。 {{ref_image renderman_00_20150513.jpg}} ↓RIS(PxrPathTracer)、800x600 pixel、PixelVariance 0.003、maxsamples 600で933sec(15.5分) {{ref_image renderman_01_20150513.jpg}} はじめのバージョンでは以下の仕様。 * RIBのテキストファイルとtiffテクスチャ画像を出力するプラグイン。RISモードとして出力。 * レンダリング方式は「PxrPathTracer」(単方向パストレース)、「PxrVCM」(双方向パストレース)、「PxrDirectLighting」(直接光のみ)、から選択。 * 光源は背景のIBLもしくは面光源のみ。 * 自由曲面は、ポリゴンメッシュに変換されて出力される * 拡散反射マップ/法線マップ/バンプマップのテクスチャに対応(それぞれマテリアルごとに1枚ずつ) * 表面材質(マスターサーフェス)は、RenderManのマテリアルにコンバートして使用。 * RenderManのマテリアルとしては「PxrDiffuse」「PxrDisney」「PxrGlass」に対応。それぞれのパラメータは調整できる。 RIBファイルは、コマンドラインからの実行でレンダリングします。Shade 3DからのRIB出力ではRenderManのインストールはしなくても動作しますが、RIBをレンダリングする際は「RenderManProServer 19.0」が必要です。 http://renderman.pixar.com/view/PR-NCR そろそろ申請予定ですので、RenderManで遊びたい方はそろそろRenderManをインストールしておくと末永く楽しめるかもしれません。なお、本プラグインは無料での公開と、SDN(Shade Developer Network)でのエクスポータプラグインの使用例に結び付けたいのでソースも公開予定です。ソースはGitHubに出す予定。たぶん、更新が頻繁になりそうですので。 このあたりの「Shade 3DプラグインSDKを使う開発者向けの情報公開」の流れも企画してるんですが、これはリリース後に別途書くようにします。 このRIB Exporterプラグイン、豪華なチュートリアルみたいなものですね。 もしそれまでにSDNのフォーラムがオープンしたら、RenderManについての情報など交換しましょう(それの知恵を集めるのも目的です(^_^;;)。 個人的にRenderManは曲面に強いと思ってますので、初回では見送りになりますがバージョンアップで曲面対応含めて以下を対処していきたいところです。 すみません、仕様が膨大ですのでまだ追えてません。 * 自由曲面をそのままRIBに渡してレンダリング(マイクロポリゴンなのできれいなはず!) * Skin Shader/Hair Shader/Volume Shaderへの対応 * レイヤ(他ツールでいうノード)を組み合わせることによるマテリアルの表現 * アニメーション対応 さすがディズニーで使われるレンダラだ、という本領発揮は上記に対応してからかなと。 !!Shade Developer Network (2015/05/10) 「Shade Developer Network」というサイトがオープンしてますね。 http://shade3d.jp/community/sdn/top.html まだ準備中のようで現段階では、Shade 3D Plugin SDK 13.2.2版がダウンロードできるようになっていました。 私がShade 3Dマーケットプレイスで公開しているプラグインもこのバージョン使ってます。 Shade 3D ver.15でも動作しますよ。 後、SDKがバージョンが古いけどようやく公開されましたので、こちらもサンプルなど公開準備できればと思います。 PS. RIB Exporter開発中です。 Twitter( @cg_ftLab )では途中経過を出していってますが、まとまった情報になってからこちらでも紹介していくようにします。 RenderMan (RIS : PxrPathTracer) maxsamples 64, maxdiffusedepth 5, maxspeculardepth 10 640 x 480 pixels, 94 sec (Intel core i5 2500 CPU 3.30GHz/4 core) lights : PxrEnvMapLight x 1 {{ref_image renderman_20150508_02.jpg}}