スキップしてメイン コンテンツに移動

modo601 Portal

今更ながらですが、某所での反応が大きかったのでmodo601のPortalについて。
modo601のPortalは、他のソフトにもわりと実装されている機能で、スカイポータルとかポータルライトなどと言われたりもしています。
modo601のPortalについては、すでにいろんなブログで検証されたりしていますが、
少し見方を変えた(ひねくれた)「hibi流」の検証をしてみたいと思います。

modoのヘルプには、「Portal (ポータル) は、自分自身が光を発しないことから、通常のライトとは性格が異なります。照明そのものよりも、光のコントロールが主な役割であり、とくに大域照明に依存する屋内のレンダリングで活躍します。レイ (光線) を集めて特定の領域に集中させるものと考えてください。」
また、「ポータルの置き場所は、その名が示すとおり、窓やドアや天窓など、室内に光が入ってくるところです。」
また、「ポータルはレンダリングに大変に時間のかかるアイテムなので」
この辺りに注目してみたいと思います。
では、cornelboxを使って検証してみます。
まず、「Portal (ポータル) は、自分自身が光を発しない」と言ってますが、hibiマジックで自分自身から光を出してみましょう!
こんなセッティングをしてみました。
cornelboxは前面もふさいであります。
真上からDirectional Lightでライティングしています。
大域照明はオフで、アンビエント輝度も0なので、真下の床のDirectional Lightが直接当たったところだけが、明るくなっています。
では、床の光が当たった付近にPortalを上を向けて置いてみます。
わかりやすいようにDirectional Lightは、50まで光量を上げていますが、
どうですか?Portalから光を出しているでしょ。
大域照明がオフの状態で光を出しているので、Portalは間接光ではなく直接光だということになりますね。
見た感じPortalの配光はエリアライトに近い感じがしますので、ちょっとレンダリング。
ライトのノイズが多かったのでライトサンプルを256まで上げてレンダリング時間は14.1秒でした。
次に
Portalをエリアライトに変更してみました。ライトのノイズはライトサンプル64でほぼ同程度です。レンダリング時間は4.1秒。
下の方の明るさが若干違うのは、僕のミスですね。あとで気がついたのですが理論的にはエリアライトはもう少し小さくするべきだった。
と、いうことでPortalの配光はエリアライトと同じです。
ヘルプにある「ポータルはレンダリングに大変に時間のかかるアイテムなので」は本当のようです。
じゃあ、ここで疑問に思うのは、Portalは何を基準に光を出しているのかということです。
ヘルプには、「レイ (光線) を集めて特定の領域に集中させるものと考えてください。」とありますので、
それでは、開口部から入ってくるDirectional Lightのレイ (光線) を集めて直接光に変えているのか?それなら少しは話しがあっているわけだけど…。
答えはおそらくノーです。
また、いじわるな検証をしてみます。
Directional Lightの当たっている部分の床を黒にしてみました。
Directional Lightの光はかわらず入ってきていますが、床が黒なので何も見えません。この状態でPortalを置いてみると、
あらぁ、真っ暗になりました。
では、次にDirectional Lightの当たっている部分の床を赤にしてみました。
あらぁ、今度は赤くなりました。
なんだ、Portalは、開口部から入ってくるDirectional Lightのレイ (光線) は関係ないじゃん。
Portalは、背後の明るさと色を参照してるだけじゃん。(ただし8bitじゃありません。)
かなり否定的な検証を繰り返しましたが、結果からヘルプで説明しているようなものではないのがわかりました。
でも、Portalの正体を理解していくにつれて、なぜ、ヘルプのような説明を書いたのかも理解できます。
では、素直な気持ちに切り替えて、ヘルプで説明しているような使い方を検証してみます。
まず、基本として大域照明をオンにします。反射回数は3。Directional Lightはなし。
Environmentを白一色で輝度10にしてレンダリングしました。
環境光だけのライティングと言うことになります。
こういう場合、開口部が小さいので環境光が効率よく内部に取り込めないため、ノイジーになるわけです。見てわかるように隅を中心にアーティファクトが多いですね。
こういう時にPortalは、「レイ (光線) を集めて特定の領域に集中させるも」と言いたいらしい。結果アーティファクトが軽減される効果があるということだろう。
では、素直に開口部の上にPortalを置いてみる。
こんな感じで開口部に合わせてセッティングしました。
レンダリングの結果はこんな感じ。
お〜、ちゃんとアーティファクトが減ってるやん。
ただし、Portalなし2.7秒に対し、Portalあり7.1秒です。
ここで、疑問に思いませんか?
先ほどの検証結果からPortalは背後の明るさと色を参照してエリアライトと同じ直接光を出していることがわかりましたが、それならEnvironmentの明るさプラスPortalの明るさでレンダリング結果はEnvironmentだけより明るくなっていなければおかしいのに同じ明るさになっていますよね。
ここがミソというか唯一Portalがかしこいところなのです。
では、それを実証しましょう。
Portalには、小さなバグがあってそこから確認することができます。
アイテムリストでPortalの目のアイコンをオフにして、Portalをオフにしてプレビューを見るとすごく暗くなりました。
Portalをオフにしても明るさが変わってはいけないのですが、必ずではないですがうまくプレビューに反映されないみたです。(レンダリングは大丈夫です)
ここから推測できるのは、Portalは、Environmentの明るさをこれぐらいに抑えてPortalの明るさと足して、もとの明るさと同じになるように調整してるんじゃない?
ここまで、Environmentの明るさをしぼって、あとを直接光に置換えて帳尻合わせてるんだったら、そらアーティファクトは軽減されるよなぁ〜。
では、もとのEnvironmentの明るさをプレビューぐらいにしぼってエリアライトと合わせて帳尻合わせてみることにします。
 Environmentの明るさ2、エリアライトの明るさ12です。
ちょっとだけ明るくなってしまいましたが、まったく同じでしょ。
だから、Portalは、Environmentの明るさをしぼって、エリアライトを足したのと同じわけです。
ただし、Environmentプラスエリアライトよりかなり精度も悪いですし、レンダリング時間もかなり長くなります。
使いどころは、窓からの外光をもともとEnvironmentだけでライティングしていて、
あ〜今気づいたけど、アーティファクト出てるじゃん!
イラディアンスキャッシュの精度上げても消えないじゃん!
もぉ〜、仕方ないなぁ。今の明るさがいい感じなのでレンダリング遅くなってもいいからPortalでなんとか乗りきろ!的な感じ。
はじめから、Portalありきでライティングするもんじゃありません。
これで、かなりPortalってどうゆものかわかって頂けたでしょうか。

何事も本質を知る事が大切です。
特にCGの場合はどんなことにも疑問を持っていろいろと自分の手で検証してみることです。
常識とされていることでも間違いはいっぱいあります。
信じるべきは、自分の目です。
そして、信じるに値する自分の目を育てることが大切です。

コメント

このブログの人気の投稿

MAYAのベベルの疑問解決!

エッジベベルはコーナーを切り落としたり、丸めたりとよく使う機能です。 MAYAの場合、ベベルを起動するとビュー内にウインドが表示されすぐに操作できるので大変便利です。このウインドはベベルだけではなく、押し出しやブリッジなど他の機能でも表示されます。 しかしほとんどの場合、ベベルは実寸で適用するのでMAYAの割合でサイズを設定するのは不便だなと感じていました。 ちなみにMODOは実寸のみ、CINEMA4Dは実寸がデフォルトで割合に変更も可能。 MAYAはCINEMA4Dとは逆で割合がデフォルトで実寸での適用も可能。 実寸での適用する場合は適用時にベベルオプションウインドで入力するか、アトリビュートエディタまたはチャンネルボックスレイヤエディタで割合から絶対(実寸)に変更しますが、ビュー内に表示されるウインドでは割合での入力しかできないので不便だなと思っていました。 しかし、ウインドの右上のボックスをクリックすれば表示させる内容などをカスタマイズができるんですね。 これ、今までは知りませんでしたわぁ〜。 設定値のコピペやウインドのサイズも変更可能ですやん。 こりゃ便利だぁ。 ちなみに、MAYAのベベルはなんでデフォルトが割合やねんと思っていましたが、割合でベベルというのも使い出すと色々便利だと思うようになった今日この頃です。 MODOは、こっち方向のベベルもできるようにして欲しいなぁ〜。

MAYAのマニピュレータその2

一般的にマニピュレータはX赤、Yグリーン、Zブルーになっています。またMAYAはセンターが黄色になっています。センターが黄色の状態ですべての軸がフリーの状態です。 例えばX軸をマウスでドラッグして移動すれば、X軸が黄色になります。また、X軸をクリックしても黄色になります。黄色いX軸がフリーでY、Z軸はロックされた状態になります。X軸にしか動かないのでマニピュレータを動かさなくても画面内を中ボタンドラッグで移動できます。 またモデリングツールキットからでも軸のロックはできます。赤のXのボックスをクリックするとYとZのボックスはグレーになってX方向だけがフリーになります。またマニピュレータの絶対値も表示されているの色々と便利ですし、数値を入力することもできます。マニピュレータの話からはそれますが、ピボット編集の下にあるステップスナップは、MODOで言うところの「固定増分値」、CINEMA4Dだと「量子化」です。要するに1.00だと1cm刻みで移動します。例えば変更作業でいろんな箇所で3cm移動させる場合にMODOだと固定増分値を30mmにセットします。ただMODOはこの設定が初期設定にあって使い難いのでフォーム編集でツールバーに追加したりします。 MAYAの場合はいろんな箇所で3cm移動させる場合はもっといい方法があるのでそれはまた書きます。 ステップスナップはどのソフトにもある機能ですが、MAYAには相対値と絶対値があります。キャプチャは相対になっていますが、絶対にすれば絶対値の1cm刻みになり、現在XとYの絶対値には小数点以下2桁の数値になっていますがこれを整理することができます。 軸方向のロックはMAYAでは特にスナップの時によく活用しています。具体的な使用方法はスナップの時に書きます。

数値入力

地味な話ばかり続きますが、仕事する上で大切な部分でもありますので、もうしばらくお付き合いをよろしく! 例えばオブジェクトまたはエレメントを移動する場合に決まった数値分移動すること もあれば、移動してその移動距離を取得したいこともあります。 MODOやCINEMA4Dはマニピュレータを移動させると、マニピュレータの近くに移動した数値が表示されるので、どれだけ移動したかわかります。またMODOは移動のトランスフォームの項目でもわかります。MODOはほとんどのツールに数値が表示されるし、数値を制御できるので、大変便利だと思います。 MAYAはマニピュレータを移動すると移動した数値を表示する機能は基本的には多分ありません。しかしユニバーサルマニピュレータだけは移動量だけではなくオブジェクトのサイズも表示されます。また表示されている数値を変更するとその数値分移動、サイズ、回転します。マニピュレータのハンドルをクリックすると数値入力フィールドが出てきます。 すごく多機能で「大したことできそう」感が漂いますが、オブジェクトのバウンディングボックスに対しての操作だけなので大したことはできません。あまり使われていないからか、MAYA2015はシェルフにあったはずですが、MAYA2016ではメニューからしかアクセスできまん。 ではMAYAで移動した距離を取得する方法は?と一瞬考えましたがこれぐらいのことなら少し調べればmelで書けます。とにかくどこかに表示できればいいわけですしね。とは言ってもそんなことしている暇もないので、現状はスクリプトエディタに表示されるコマンドから移動距離を確認しています。 (はい、mel書かなくても表示できちゃいました。) さて、次に移動させる数値がわかっている場合はマニピュレータで移動するよりは即数値入力が一番手っ取り早いわけです。MODOはWキーで移動ツールを起動して数値を入力してspaceキーまたはQキーで移動ツールを解除という流れになりますが、以前からこれ結構面倒な手順だなと思っております。 MAYAは数値入力で移動するにはステータスラインにある入力ラインが手っ取り早いです。 ハイパーシェードのアイコンの横にありますが、多分デフォルトでは畳んでありますので、ひっそり感はマックスです!また、見た目もかなり「大したこと