Skip to main content

iray を standalone mental ray で使いたい(4)

今回は例として 1 つだけ teapot を作成し,それに mia_material (Arch&Design) material を割り当てる.

Export したファイルそのままでは 3dsmax の shader への依存があるので,mental ray standalone で rendering するのには多少都合が悪い.standalone を使う理由は,複数のマシンで一斉にレンダリングをすることができるためである.3dsmax の shader だけ render farm マシンにコピーしてもいいのかというライセンスの関係がよくわからないことと,ここでの目的はiray を使いたいということなので,3dsmax の shader の依存を除く方法をここに書いておく.あるいは,全ての render farm のマシンに 3dsmax をinstall することができれば問題はないが,3dsmax を走らせないマシンに3dsmax を install する意味はあまりない.

3dsdmax から Export した mi file をそのまま ray に渡すと,

---
> ray -x on -v 5 00teapot_ex00.mi
...
LINK 0.0  error  191007: cannot load 3dsmaxhair.dll, The specified module could not be found.
...
LINK 0.0  error  191007: cannot load mayabase.dll, The specified module could not be found.
...
LINK 0.0  error  191007: cannot load adskshaders.dll, The specified module could not be found.
...
---

というエラーが発生する.これが 3dsmax 固有の shader である.利用しているマシンに3dsmax が install されている場合には,rayrc ファイルに以下の3dsmax への shader path を書くことで解決できる.

    3dsmax_installed_directory\3ds Max 2010\mentalray\shaders_standard\shaders

しかし,iray を使うことを考えた場合,base shader と architectual shader のみがあれば良いはずなので,以下の link statement をコメントアウトするか除くことができる.

link "contour.dll"
link "physics.dll"
link "lume.dll"
link "subsurface.dll"
link "3dsmaxshaders.dll"
link "3dsmaxhair.dll"
link "paint.dll"
link "production.dll"
link "mayabase.dll"
link "adskshaders.dll"
link "mr_prebuilt.dll"

---

まずは camera の parameter を変更する.

---
camera "Viewport|Viewport"
    output "+rgba_16" = "ImageCollector|Effect"
    environment = "Environment|Shader"
    lens = "GBuffer_Lens|Shader"
    focal 1.710860
    aperture 1.417323
    aspect 1.333333
    resolution 320 240
    window 0 0 319 239
    offset 0.000000 0.000000
    clip 0.100000 1000000015047466200000000000000.000000
    frame 0 0.000000
end camera
----

Environment shader と lens shader は今は使わないので,コメントアウトし,mental ray 3.6 で推奨されなくなった output statement を推奨のframebuffer に変更する.

---
camera "Viewport|Viewport"
    # output "+rgba_16" = "ImageCollector|Effect"
    # environment = "Environment|Shader"
    # lens = "GBuffer_Lens|Shader"
        framebuffer "main" datatype "rgba" filetype "png" filename "out.png"
    focal 1.710860
    aperture 1.417323
    aspect 1.333333
    resolution 320 240
    window 0 0 319 239
    offset 0.000000 0.000000
    clip 0.100000 1000000015047466200000000000000.000000
    frame 0 0.000000
end camera
----

しかしこれでも以下の error と warnings が出力される.

API  0.0  warn   302004: 00teapot_ex00.mi, line 125: while defining declaration "max_DefaultLight": declaring nonexisting function max_DefaultLight
API  0.0  warn   302004: 00teapot_ex00.mi, line 1926: while defining declaration "max_mia_material_renderelements": declaring nonexisting function max_mia_material_renderelements
API  0.0  warn   302004: 00teapot_ex00.mi, line 2008: while defining declaration "max_NodeVisibility": declaring nonexisting function max_NodeVisibility
API  0.0  warn   302004: 00teapot_ex00.mi, line 2119: while defining declaration "max_base_ImageCollector": declaring nonexisting function max_base_ImageCollector
API  0.0  warn   302004: 00teapot_ex00.mi, line 2133: while defining declaration "max_Environment":declaring nonexisting function max_Environment
API  0.0  warn   302004: 00teapot_ex00.mi, line 2150: while defining declaration "max_base_GBuffer_lens": declaring nonexisting function max_base_GBuffer_lens
PHEN 0.2  error  051011: shader "max_DefaultLight" not found
PHEN 0.2  error  051011: shader "max_NodeVisibility" not found
PHEN 0.2  error  051011: shader "max_mia_material_renderelements" not found
PHEN 0.2  error  051011: shader "max_base_ImageCollector" not found
PHEN 0.2  error  051011: shader "max_Environment" not found
PHEN 0.2  error  051011: shader "max_base_GBuffer_lens" not found
PHEN 0.2  error  051011: shader "max_DefaultLight" not found
PHEN 0.2  error  051011: shader "max_NodeVisibility" not found
PHEN 0.2  error  051011: shader "max_mia_material_renderelements" not found
PHEN 0.2  error  051011: shader "max_base_ImageCollector" not found
PHEN 0.2  error  051011: shader "max_Environment" not found
PHEN 0.2  error  051011: shader "max_base_GBuffer_lens" not found


しかしこれらの shader はほとんど使っていない.そこで以下の変更を mi file に加える.

  • max_DefaultLight は mental ray の mib_light_point に変更する.
  • max_mia_material_renderelements は mia_material  に変更する.
  • 次の 4 つの shader (max_NodeVisibility, max_base_ImageCollector, max_Environment, max_base_GBuffer_lens) は除く.mia_material の Cutout は使っていないので,コメントアウトする.
そうやって出力されたファイルは以下のようになる.
http://code.google.com/p/shitohichi-tools/source/browse/#hg/mentalray/export_mi

以下の図は,3dsmax から rendering した結果(上)と,mental ray standalone で rendering した結果(下)であり,同じ結果になっている.

Comments

Popular posts from this blog

このブログについて

このブログではメンタルレイというレンダリングソフトウェアについて書いていきたいと思います. メンタルレイとは メンタルレイ(mental ray)はドイツの mental images GmbH 製のレンダリングソフトウェアです.mental images 社は NVidia という会社の子会社です (2009年現在).Maya, 3dsMax, SoftImage XSI, などの DCC (Digital ContentsCreation) Software, あるいは Solidworks などの CAD などのレンダラとして利用されています.建築などの分野でも利用されていますが,StarWars や Matrix,最近では The Curious Case of Benjamin Button (邦題:ベンジャミン・バトン--数奇な人生) などの映画の特殊効果(Special Effect)に使われているようです. http://www.mentalimages.com/products/mental-ray.html http://www.mentalimages.com/gallery/motion-pictures.html 機能は豊富で高品質な画像を生成できる,というのが売りですが,なんでもできるというのは使うのが難しいという面もあります.特にシェーダー(shader) のカスタマイズの可能性はかなり広い一方,本当に使いこなすのは難しいと思います.通常は用意されているシェーダー(shader) を使うだけでもかなりのことができます.私の友人は mental ray を Ferrari に例えていました.Ferrari なのはイタリア人だからかもしれませんが,曰く,「どう使うか知らなければ動きもしないが,ちゃんと使えば (映画の) Matrix が作れる.」しかし,1ユーザとしてはもっと簡単だったらなあと思うことしきりです. ところで,私の知る限りでは,メンタルレイの情報はほとんどが英語で提供されているので,できるだけ英語を併記しておくことにします.英語のページもどうぞ.

iray blog unofficial translation: ノイズだらけの画像

以下は iray dev blog の個人的な翻訳です. この翻訳は iray 開発者あるいはNVIDIA とはまったく関係がありません. 原文:  http://blog.irayrender.com/post/12964041473/noisy-pictures 物理的に正しいレイトレーサあるいはパストレーサを用いるレンダラが直面する主な問題があります.それは完全にノイズのない画像を生成するには長いレンダリング時間がかかるというものです. 残念なことにこれは(準-)モンテカルロ法に基づくアルゴリズムが一般に持つ性質によるものです.これらの手法では数学的に期待値の持つエラーが線形に消えていくことはありません. irayにとってこれが意味することは,ノイズの総量は1フレームをレンダリングする際に使うサンプルの数(あるいは総時間)に直接に比例しないということです.このためにレンダリングの最初の頃のステップで減っていくノイズの量は,後で減っていくノイズの量に比べて少ないように見えます.つまり収束がだんだん遅くなっていくような印象を受けるのです. この事実を回避するために,多くのレンダラは通常ある仕事を省略しようとします.たとえば,レンダラの中にはいくつかの物理的な効果を無視したり,レンダリング結果の無偏向性(un-biasedness)をあきらめたりします.その他の技術としては特殊な発見的手法を用いてサンプルをフィルタし,ノイズをぼかしてしまうというものがあります.あるいは単純に様々な芸術的な方法に依存する方法,たとえば,根底にあるレンダリングのアルゴリズム/魔法に影響する沢山のスイッチを用意して,それをいじりまわすという方法です. しかし iray の一つの大きなデザインゴールは,インストールしたらそのままいつでも全てが正しく動作し,沢山のパラメータをいじりまわすことは必要ないというものです.私の正直な意見としては,パラメータの数は 0 であるべきです.そうであれば,アーティストやデザイナは実際のレンダリングされるコンテンツに完全に集中できるようになり,小難しい深い数学の詳細を知る必要はありません.また,一貫性のないアルゴリズムはまったく使うべきではないと思います.そういうアルゴリズムを使わなくてはいけないかわいそうなアーティストが見る...

iray blog unofficial translation: iray 2.0 のデイライトポータルにおける性能問題

以下は iray dev blog の個人的な翻訳です. この翻訳は iray 開発者あるいはNVIDIA とはまったく関係がありません. 原文:  http://blog.irayrender.com/post/12598717491/daylight-portals-in-iray-2-0-performance-issues 大域照明における古典的な問題は屋外の光源による屋内のシーンのライティングです.典型的には太陽/空(sun/sky) あるいは HDR 環境照明でこの問題があります.このセットアップではリアルな屋内のライティングが可能ですが,一方でレンダラが力づくの(準)ランダム性に基いて室内の窓を探し,どの光源からの光がその窓を通るかを計算することは大変難しい問題です.デイライトポータルはこの問題に対処することを目的に作られました.デイライトポータルによってユーザはどの窓から光が入ってくるべきなのかをレンダラにヒントとして伝えることを可能にします. iray 2.0 はデイライトポータルを完全にサポートしました(version 1.x では限られたサポートのみでした).これは mia_portal_light mental ray シェーダを通じて設定できます.多くの場合に総合性能の重大な改善(*)がみられます.しかし,時にポータルは性能を悪化させる場合があります.あるユーザは初めて iray 2.0 を利用した際,この性能悪化につまづきました.私達に届いたレポートでは,iray 2.0 の性能はiray 1.2 の性能に比較して二倍悪いというものでした.私達がこれらのレポートをいくつか調べたところ,実際にポータルが性能悪化の犯人だった(**)という場合がありました.ポータルを無効にしたところ,性能が iray 1.2 とほぼ同等まで回復したのです. さて,どうしてこんな重大な性能の食い違いが起こったのでしょう? 調査の結果,これに関して iray ポータルのバグや基本的な欠点は発見されませんでした.ポータルは設計通りに機能していたのです.実は,多くの場合, iray はポータルなしでも上手く働くのです.しかし,これらのいくつかのケースでは,ポータルは助けになるのではなくむしろよりノイズのあるイメージを生成する原因になっていまし...