mental rayを使用したレンダリングに被写界深度を設定する方法。
通常の[Depth of Field]で行う被写界深度の設定は、mental rayを用いた
レンダリングではノイズが出てしまい、使用できない。
mental rayを使用する場合は、レンズシェーダを用いて設定を付加する。
1.レンダリングに使用するカメラのアトリビュートを開き、
[mental ray]欄内、[Lens Shader]の接続ボタンをクリック
2.開いた[Create Render Node]ウインドウ内、
[mentalray]→[Lenses]→[mia_lens_bokeh]をクリック
3.カメラのアトリビュートに追加されたシェーダのタブで以下の設定を行う
・[On]にチェックを入れる
・[Plane] ・・・合焦距離(ピントが合う距離)を入力
・[Radius] ・・・ボケの深さ。レンズの絞り半径をベースに調整する
・[samples]・・・レイの数。多いほど滑らか、高負荷になる
その他の設定もよりリアルで綺麗なボケを再現する為に役立つが、
ここでは省略。詳しくはオンラインヘルプを参照。
※サンプル画像は2011ですが、2008以降同設定で確認済みです。
2010年6月22日火曜日
被写界深度の設定③
2010年6月17日木曜日
対称形を保持したモデリング
左右対称のモデルを作成する際など、対称の状態を随時確認しながら作業を行う方法。
1.原点上平面に切断面(対称化後の中心面)を作ったモデルを用意する。
2.[Edit]→[Duplicate Special□] 開いたウインドウで以下の設定を行う。
・[Geometry type]を[Instance]に変更
・[Scale]の対称化したい軸に[-1]を入力
・[Number of copies]に[1]を入力
・[Duplicate Special]か[Apply]ボタンで実行。
対称化した側のモデルはインスタンスなので、最終的には以下の手順で一体化させる。
1.インスタンスを選択
2.[Modify]→[Convert]→[Instance to Object] 、インスタンスを実体化
3.左右モデルを選択、[Mesh]→[Combine] 、単一モデルに合体
4.モデルを選択、[Edit Mesh]→[Merge]、切断面のバーテックスを結合
2010年6月9日水曜日
オブジェクトのコンストレイン(追従)
・キャラクターセットアップのハンドル作成
・ウエイトスキンを使わないボーンを用いたアニメ(メカなど)
・オブジェクトにカメラを追従させ、一人称の画を作成する
・エクスポート出来ないデータにロケーターを追従させ、
代わりにそのロケーターをエクスポートする
など使い方はいろいろ。
1.追従されるオブジェクト・追従するオブジェクトの順でモデルを選択する。
2.Animationメニューの[Constrain]→任意の対象を選ぶ。
・Point …移動値
・Aim …(モデルの向き。今回省略)
・Orient…回転値
・Scale …拡大値
・Parent…(相対的移動・回転値。今回省略)
オプションメニューで以下の設定が可能。
[Maintain offset] …現在の相互差分の値をオフセット値に使用する
[Offset] …XYZのオフセット値。手動入力。
[Constraint axes]…コンストレインする軸方向を選択
[Weight] …追従する割合を設定
2010年6月5日土曜日
mentalrayでワイヤーフレームをレンダリングする
mental rayを用いたレンダリングでワイヤーフレームを描く方法。
ワイヤーフレームのみ描画する事も、通常のレンダー画像に重ねる事も出来る。
1.モデルに任意のマテリアルをアサイン、そのマテリアルのアトリビュートを開く
マテリアル名横にあるOutput Connectionボタン(□右側に▲)を押し、
Shading Groupsのアトリビュートに変更する(~SGというタブが開く)
2.アトリビュート内[mental ray]枠内の[Contours]にある、
[Enable Contour Rendering]にチェックを入れ、
[Color][Alpha][Width]でそれぞれラインの色・透明度・太さを設定する。
3.[Render Setting]を開き、[Render Using]を[mental ray]に変更
4.[Contours]枠内を以下のように設定する([Contours]は2011では[Features]タブ内)
・[Enable Contour Rendering]にチェック
・ワイヤーフレームのみ描画したい場合は[Hide Source]にチェックを入れる
・[Draw By Property Difference]枠内の
[Around silhouette(coverage)] ・・・オブジェクトのアウトライン描画
[Around all poly faces]に ・・・全てのフェイスのアウトライン描画
にチェックを入れる。
その他のチェック項目については必要に応じて使用する。
5.ラインを滑らかにしたい場合は[Render Setting]の[Contours]枠内、
[Over-Sample]の数を上げ、その後必要に応じて
[Filter Type]と[Filter Support]を調整する。
このレンダリング方法では、たとえマテリアルの透明度を100%にしたり、
useBackgroundシェーダーを使用しても、ジオメトリ的陰面のラインは描かれない。
サーフェース自体は透明に出来るので、エッジ描画がポスト処理であるためと思われる。
2010年5月28日金曜日
物理挙動っぽいカメラを作ってみた
以前からフォトリアルな画作りにはカメラ(リアル・CGとも)の勉強がもっと必要だと
感じていたので、実際の制作に役立つかはさておき、自由研究的なノリで作ってみた。
画角、トーンマップ、被写界深度が正しく連動するカメラ。
内部的にでたらめな計算が多いので、物理的(Physical)というよりは現象的、
「Phenomenon Camera」と言った方が正確かもしれない。 詳細は以下に。
【制作目的】
HDR環境下で、実在のスチルカメラと同じ設定のみを用いて、現実に近い
レンダリングイメージが作れるカメラを目指す。
現実のカメラの知識のみで絵作りが出来る事が目標。
画角・トーンマップ・被写界深度の物理的な相互連動に加え、クオリティと
計算負荷の自動コントロールも行う。
【条件・設定】
光源はHDR。マテリアルは物理的に正しいシェーダを用いて、正しい
ダイナミックレンジを持ったシーンを用意する。
レンズは14~54mm、f2.8~3.5のズームレンズという設定。
ズームに合わせてリニアにf値が変化するものとする。
Aimカメラをベースとし、オートフォーカスを実現する。
カメラシェイプノードに、一般的なスチルカメラの設定項目を
エクストラ・アトリビュートとして追加。
そのパラメータを使って各アトリビュートのエクスプレッションを作成していく。
追加アトリビュートは以下の5つ。
・焦点距離
・開放F値
・絞り値
・シャッター速度
・フィルムのISO感度
【エクスプレッションの構築】
エクスプレッションで以下のように計算を行い、関連付けしていく。
・焦点距離 から 開放F値 を算出
・開放F値と絞り値 から 最終的なF値 を算出
・合焦距離と焦点距離と最終的なF値 から 被写界深度 を算出
・最終的なF値とシャッター速度とISO感度 から トーンマップを算出
・被写界深度 から レイサンプル数 を算出
最後の項目はカメラと関係なく、クオリティと負荷のバランスのための設定。
レンダー結果を比較すると、ボケの面積が広いほどノイズが多かったので
被写界深度が浅い(ボケが多い)ほどサンプル数が上がるように設定した。
【完成したカメラでのレンダリング】
いろいろな設定でのレンダー結果。
① f=32mm,1/140sec,F1.4,ISO100,距離113.5cm
② f=14mm,1/140sec,F1.4,ISO100,距離113.5cm
③ f=54mm,1/140sec,F1.4,ISO100,距離113.5cm
④ f=20mm,1/140sec,F1.4,ISO100,距離40.2cm
⑤ f=20mm,1/140sec,F1.4,ISO100,距離63.8cm
⑥ f=20mm,1/140sec,F1.4,ISO100,距離19.1cm
⑦ f=20mm,1/140sec,F1.4,ISO100,距離67.5cm
⑧ f=20mm,1/140sec,F4.0,ISO100,距離67.5cm
⑨ f=20mm,1/140sec,F1.0,ISO100,距離67.5cm
・レンズが広角になるほど画面が明るく、被写界深度が浅くなる(①②③)
・被写体(合掌距離)が近いほど、被写界深度が浅くなる(④⑤⑥)
・絞りが大きいほど画像が暗く、被写界深度が深くなる(⑦⑧⑨)
というような連動が割と自然に実現できた気がするので、今後しばらく使ってみて、
さらに精度を上げてみようと思う。
2010年5月20日木曜日
オクルージョンマップの生成
このブログのアクセス解析を見たら、検索フレーズのトップが「オクルージョン」だったので、
もしかしたら多くの方が探してるのはこっちかも、と思って書いてみた。
という事で、アンビエントオクルージョンマップ(テクスチャ)の生成方法。
オクルージョンを作成するモデルは、事前にUV展開しておく。
その際、展開したUV同士が重ならないように配置する。
1.レンダーセッティングを開き[render using]を[mentalray]に変更。
2.モデルを選択し、[Lighting/Shading]→[BatchBake(mentalray)■]を選択。
3.開いたオプションウインドウの左上[Edit]→[Reset Settings]で初期設定に戻す。
4.初期状態から以下の項目を変更する
・[Use bake set override]にチェック
・[Color mode]を[Occlusion]に
・[Orthogonal reflection]にチェック
・[Prefix]に任意のテクスチャファイル名を入力
・[X resolution]に任意のテクスチャ横サイズを入力
・[Y resolution]に任意のテクスチャ縦サイズを入力
・[File format]から任意の画像フォーマットを選択
・[Bake to one map]にチェック
・[Convert and Close]か[Convert]をクリック(その後に多少時間が掛かる)
【出来上がったオクルージョンマップ】
生成された画像はカレントプロジェクト内の、
「\renderData\mentalray\lightMap\」に保存される。
画像サイズが充分なのに画像が荒く感じる場合は[Occlusion rays]の値を上げる。
ノイズが多く感じる場合は[Number of samples]の値を上げ、アンチを強くかける。
最近多くの方にアクセス頂いてるようです。ありがとうございます。
間違いやわかりにくい点などありましたらお教え下さい。