2007年12月

2007年12月31日

半透明設定の本命はフロントウェイトパラメータだった modo 301

とうとう今年も大晦日か・・・。みんな今年中にしなければならないことは全部終わった?

さて、本年最後のお題は前回に続いてSSSについてだ。301になって「フロントウェイト」と言うパラメータが新たに追加されたんだけど、どこにも解説が見当たらない・・・。これがわからないまま年を越すのも気持ちが悪いので、いろいろ試してみた。結論から言うと、どうやら物体内を通過する光の散乱の度合いを調整するパラメーターらしい。そしてフロントウェイトの値を小さくすると、光は物体内部を直進しやすくなり、入射と反対側の面を明るく照らし出し、値を大きくすると、入射した光はどんどん散乱し、近隣の表面を明るく光らせる。だから不純物が多い場合はフロントウェイト値を高くし、不純物が少ないものはフロントウェイト値を小さくすればいいんじゃないかな?ここで日本語マニュアルのトランスルーセンシーにフロントウェイトのタイトルが付いていた謎がようやく解けた気がする。フロントウェイトの値を小さくすると、光線の直進性が高まって半透明性が高くなるんだな。前回の例でスキャッタリング距離を0にする事で得られる半透明は厚さの無い板に対しての簡易版だったけど、こっちの設定の方はちゃんと厚みのあるものに対しての本格的な半透明を表現するものだったわけだね。マニュアルはその部分の解説が抜けちゃって簡易版だけ説明してあったんだな。

テストのための配置さて、そこでさっそく確認の実験をしてみるよ。まずこんなシーンを作ってみた。ライトと円柱と立方体とカメラを一直線上に並べて円柱の影が立方体に落ちるようにした。カメラは物体を通過して来て表面に現れる光を捉える訳だ。他の影響を全てカットするために環境光もアンビエント輝度もディフューズ量も全部0にしておいた。これで立方体表面に現れる光はSSSの光だけになった。

50%まずはサブサーフェス量50%、サブサーフェスの色(1,1,1)、スキャッタリング距離1m、フロントウェイト50%にしてレンダリングしたのがこれ。物体内部で拡散した光が照射されている反対の面にもこうして光をもたらしてボヤっと光っている。しかしこの物体と光源の間にある円柱の影は全く見えない。

−100%今度は同じ条件でフロントウェイトだけ−100%にしてみた。厚さ1mの物体の向こう側に円柱の影が見えてきた!

−200%さらに−200%。かなりくっきりした影が出て来た。

−1000%−1000%まで行けば、ほぼまんまな状態で影が出てくる。これって物体自体は透明で、表面に透ける紙かなんかを貼ったような状態だな。

という訳で、フロントウェイトの値をマイナス方向に振って行けば、半透明さが増していくのが確認できたと思う。

さて、今度は厚みに対してどのように振舞うかを見ていこう。

厚みに対する影響を見る実験先のシーンと殆ど同じだけど、今度は透過させる物体を斜めに切ったよ。こうするとこの物体は上に行くほどライトの光が物体を通過する距離(厚み)が少なくなるってわけだ。

50%まずフロントウェイト50%。これがデフォルトのSSS設定ね。

0%次にフロントウェイトを0%にしたもの。50%に比べて光の直進性が増したから影がぼやける位置が遠くなった。

−100%さらに進めてー100%。マイナスに振ると、下側には光が届かず、内部で光が屈折しているような感じになった。影はより鮮明になってぼやける位置はさらに遠くなった。現実の光もこうなるんだろうか?ちょっとわからない。

以上のことからフロントウェイトが拡散の度合いを調整するパラメータなんだろうと推測できると思う。最後のダメ押しにもう一つ実験してみよう。

横から拡散具合を確認今度は物体を横から眺めて光の拡散具合を見てみよう。

200%これはフロントウェイトを200%にしたもの。光は右から照射されている。光の拡散傾向が強いので物体に入った光はするに乱反射して奥まで届かない。この物体のディフューズは0%にしているので、光が直接当たっている部分の光と影は全てSSSで出来たもの。表面付近で拡散しているので表面が明るくなっている。それに対して光の照射面の裏側(画面の左側)は光が届かないので真っ暗だ。

100%これはフロントウェイトを100%にしたもの。200%よりは拡散する割合が少なくなって奥の方まで光が届き出している。でも照射面が一番明るい。

50%これが50%。デフォルトでこの値になっているようだ。

0%これが0%。ここまで来ると今度は照射面にSSSの影響が出ていない。通常はディフューズの明るさがこれに加わるので、照射面は明るくなる。しかしこの状態だとSSSの影響は無いわけだな。

−100%そして−100%。もはや物体内の光の散乱は無くなって側面に漏れ出す光は無くなっている。

以上。なんとかフロントウェイトパラメータの意味が掴めた気分になれた。あくまで私見なのでこの結果から各自で判断してくれ。

それでは良いお年を。



take_z_ultima at 11:50|この記事のURLComments(0)TrackBack(0)modo | CG

2007年12月30日

半透明(Translucency)やってみた modo 301

Translucencyの効果 301になって半透明のレンダリングも可能になってたんだなぁ。半透明が使えるようになると、左の画像のように、障子に落ちた竹の影みたいなのが表現できるようになるよ。

プロパティ設定はとっても簡単。半透明にしたいエレメントのマテリアルのサブサーフェス量を適当に増やして、スキャッタリング距離を0mにすればいい。サブサーフェス量が透けて来た光線をマテリアル表面に適用する量で、大きいほど明るくなるのは通常のSSSと一緒だ。

シーンセッティング壁と障子の窓を作って、その手前に竹を作って配置し、ライトを当てて障子に竹の陰が落ちるようにして、障子紙に上記のようにスキャッタリング距離0mの設定をして、ライトの反対側にカメラを配置してレンダリングしたのが一番上の画像なわけだ。

日本語マニュアルはタイトルが間違っているので訂正したほうがいいと思うよ。英語の原文のタイトルは、「Translucency」で、日本語のタイトルは「Front.Weighting( フロントウェイト)」になってる。そして「0m」も「0n(これだとオンに見える・・・)」になってるからね。

このシーンをアップしておくので、shoujiマテリアルのマテリアル(透過)のサブサーフェスあたりをいじってどんな感じか確認してみてくれ。サブサーフェス量にイメージマップを施して、障子紙の透け方をコントロールすると、より紙らしくなるだろうね。

しかしホントにmodoの設定はワンタッチの手間いらずでいい仕上がりになるな。パラメータがバカみたいに多い割に、どこをどう調整しても全然思ったようにいかないようなソフトもあるからねぇ。

GIを使えばライトにもなる

ちなみにRenderプロパティで大域照明を有効にすると、スキャッタの光がそのままライトにもなる。

ルミナンスの影響「サブサーフェススキャッタリングへの影響」にチェックを入れるとルミナンスで光らせた光源もスキャッタリングの対象になって透過してくるよ。あとはスリガラスだな。

それではまた次回。

注)これを書いた時点ではフロントウェイトパラメータについて調べていなかったので、ここで紹介した方式が簡易方式だって気が付かずに書いてます。半透明の本命はどうやらフロントウェイトパラメータのようです。次の回のブログも参照して下さい。だから日本語マニュアルのタイトルも間違えじゃなくて解説が抜けているだけとも言えるかな。

スクリプトまとめページ( Down Load はこちらから)  

カテゴリー別ページ

modo操作メモ 



take_z_ultima at 12:08|この記事のURLComments(0)TrackBack(0)modo | CG

2007年12月29日

ファイル参照で分業体制? modo 301

modoにはオブジェクトのインスタンスを作成する機能が付いている。これを使えばOSで言うところのエイリアスまたはショートカットのように参照情報だけの複製を作ることが出来る。メリットは実体がひとつしか存在しないから、大量に作ってもメモリーの消費量が抑えられる事と、オリジナルの変更が全てのインスタンスに反映されるって事だ。

そして301になって新たに「ファイル参照」という機能が追加された。インスタンスがオリジナルの実体をシーン内に持つのに対してファイル参照はオリジナルを外部ファイルとして持つのが特徴だ。そのメリットは、オリジナルの修正が、そのファイルを参照している全てのファイルに反映される事だ。例えば1つのシーンを複数のファイルに分割して、スタッフに割り振って制作なんて事が出来るようになるんじゃないかな。

例えば下の画像は市街地のシーンを作る目的でビル群をボックスで作って配置決めだけしたシーンだ。

ダミーを割り振っただけのシーンレンダリングしたもの



通常はこのシーンを作る前にビルを作って、それから配置してみたいな流れになるか、このシーン上で一挙に作り込むか(汗)って事になるわけだ。しかし参照ファイルを使えば、こうやってボックスで配置を決めた後でボックスだけ切り出してファイル化し、「ハイ、この大きさでこんな感じのビル作ってこのフォルダにこの名前のファイルで入れといて」って言っておけば、このシーンファイルを開くたびにビルが作り込まれていくのを目撃できるわけだwww。

参照ファイルに切り分けるさて実際に切り分けてみる。参照オブジェクトにするものは配置する時にはなるべく中心位置をオブジェクトの中心に持って来て置いた方がいいよ。このオブジェクトをさらにインスタンス複製で増やして並べることもあるからね。その時に中心点が離れた位置にあると回転させたりするのが大変になるからね。このGIFアニメでは単純にボックスを配置してしまっているので、それをカット&ペーストで新規に作ったメッシュレイヤに移して、ピボットを中心位置に持って行ってreset_pivot.pyスクリプトを使ってアイテム自体をピボット位置まで移動させてみた。これでアイテムのローカル座標系ではこのボックスは原点に存在することになる。これをさらに別シーンに移して保存して、それを参照としてこのシーンに持ち込めばいいわけだけど、そのまま新規シーンを作ってドラッグ&ドロップで持って行ってもメッシュの座標値がワールド座標に展開されてしまうので、一度参照システムをONにして、ボックスのローカル座標系を基準に設定してからカット&ペーストで別シーンに移す。そして新規シーンの方はカメラもライトもいらないので削除して、一度保存し、元のシーンに参照オブジェクトとして読み込む。でもこのままだと配置が原点に行ってしまうので、先にメッシュをカット&ペーストして空になったメッシュアイテムにペアレントして、アイテムの原点をそのメッシュのローカル座標に合わせる。301からは普通にペアレントする場合はCTRL+ドラッグ&ドロップになったんだよね。これで配置位置はOKだけど、空のメッシュにペアレントしているのは気持ち悪いので、「その場でペアレント」でペアレントを使ってペアレントを解除すれば、配置情報はそのままで、ペアレントだけ外せる。この場合、単にドラッグ&ドロップでOKよ。必要なくなったメッシュアイテムは削除しておく。

参照先を更新してみる

これで参照に置き換わったので、さっそくオリジナルの方を編集して保存してみよう。そして再び参照している側のシーンを開くとちゃんとアイテムが置き換わっているのが確認できる。ただ、どうもマテリアル設定が読み込まれるのはファイルメニューから参照を読み込みをやった最初の時だけで、その後に追加されたマテリアルはポリゴンタグとしては存在するけどシェーダーツリーの方には追加されないらしい。だからシーンを切り分ける時はあらかじめマテリアルだけはダミーでも作っておく必要があるみたいだね。

それから、切り分けたオブジェクトはカメラやライトを除去しちゃってあるからレンダリングして確認することが出来ない。そこで確認の時にちょこっとカメラやライトを作成したりしたいわけだけど、それには「デフォルトレンダーアイテムを追加」という便利なコマンドが用意されている。レンダーメニューから→アイテムをレンダー→デフォルトレンダーアイテムを追加と辿ればアクセスできるよ。

とりあえず切り分ける前のシーンをアップしておいたので正月暇だったら試してみてね。

それではまた次回。

GIFアニメ内で使用したreset_pivotスクリプトはこれね。

reset_pivot.py

スクリプトまとめページ( Down Load はこちらから)  

カテゴリー別ページ

modo操作メモ 



take_z_ultima at 13:20|この記事のURLComments(0)TrackBack(0)modo | CG

2007年12月28日

測光ライト使ってみた modo 301

301になって追加された機能に、測光ライトっていうのがある。みんなもう試してみた?このライトは実際のライトを測光したデータを使って照明を高精度にシミュレートする目的のものらしい。そしてそのデータはIESという照明業界で広く流通している形式のファイルなんだそうだ。マニュアルを読むとこう書いてある。

IES ファイルは、多くの大手照明企業から公開されており、そうした企業のサイトから無料ダウンロードもできるようになっています。

半信半疑で検索してみると、あっさり無料ダウンロードできるサイトが見つかった。

遠藤照明さんのサイト

トップの画面から製品情報のWebカタログのリンクをクリックするとWebカタログが出てくる。ここでIESファイルが欲しい照明器具を検索するわけだけど、品番から探す方法とカテゴリーから探す方法が用意されている。もちろん照明器具の品番なんて知らないから「カテゴリーで検索」をクリックして出てくる一覧から今回はスポットライトを選択してみた。IESの影響が一番わかりやすそうだったからだ。するとさらに選択肢が出てくるので、「種類から選ぶ」→「ハイパワースポット」と選択してみた。するとそのカテゴリーの商品カタログが出てくる。その一覧表の「配光」の欄にアイコンが描かれていれば、その商品には配光データが存在している。とりあえず「ES8819WB」の配光のアイコンを選んでみた。するとさらに電球の種類で4つのアイテムが入った表が出てくる。この表にはIESと書かれたアイコンがあって、それをクリックすることでその商品のIESデータがダウンロード出来るってわけだ。言葉で書くと長いけど、メニューを辿って行けば簡単にIESデータが入手できるよ。ただ、ダウンロードする時にファイルの種類がテキストドキュメントのままだと、拡張子に「txt」が付くので、ダウンロードしてから消すか、またはファイルの種類で「すべてのファイル」を選ぶといいよ。とりあえず今回はCDM-R_PAR20_3000K集光35Wという照明のIESデータと他いくつかダウンロードさせてもらった。

あとはmodo側でアイテムツリーの新規アイテムをクリックして、測光ライトを選択すると、ファイルリクエスタダイアログが表示されるので、今ダウンロードしたファイルを指定するだけだ。この時拡張子が「ies」じゃないと見つからなかったりするので気をつけてね。

ライトの配置照明の配光の様子が良く分かるように、板を一枚配置して、その板に若干向ける感じでそれぞれIESデータの異なる3つの測光ライトを配置した。

測光ライトの比較レンダリング結果がこれ。ダウンライトとスポットライトで全然違う感じになったし、同じスポットライトでも種類が違うと光の広がり方が異なっている。すげー。
店舗設計とかやってる人にはかなり役立つんじゃないだろうか。
ここまで来たら測光ツールも作って、テーブルの上で照度がどのくらいあるとか任意のポイントで測れるようになるといいかもな。

それではまた次回。



take_z_ultima at 12:16|この記事のURLComments(0)TrackBack(0)modo | CG

2007年12月27日

サブグループへ適用について modo 301

シェーダーアイテムにグループというのがある。単純にシェーダーをひとまとめにすることから、マテリアルや選択セット、アイテムによってシェーディング対象をフィルタリングする事まで色々出来る入れ物だ。シェーダーツリーのレイヤー追加メニューから作成出来るし、Mキーを押してマテリアルを新規に作ったり、アイテムリストを右クリックしてアイテムマスクを作成を選んだりすると自動的に作成されて、フィルタリングの設定がなされて中に1個マテリアルが作成されるようになっている。

フィルタリングと書いたのは、シェーディング対象となるエレメント(今のところポリゴンだけだと思う)が、このグループのフィルターによって取捨選択されるからで、対象となるエレメントはグループの外側(下側)から流れ込んでくると思えばいい。そしてグループの壁で所属アイテムやマテリアルタグ、選択セットタグをチェックされて、フィルターに合致すればグループ内に流れ込み、合致しなければそのグループはスキップしてシェーダーツリーの上の方向へ流れて行き、シェーダーに流れ込む。グループに流れ込んだ方のエレメントはグループ内部に並んだレイヤーを下から順に通りながら質感が上書きされてグループから出て来て、グループをスキップしたエレメント達と合流し、シェーダーに流れ込む。そしてRender Outputから出力されて多層に重ね合わされる。301からRenderOutPutを追加していけば同時に色々な種類のレンダリング結果を同時に得られるようになったんだよね。

ここまでが基本的な話。で、本題の「サブグループへ適用」って何だろうって話になる。マニュアルを検索してグループマスクのところを良く読むとこのような記述が見つかった。

サブグループのセット全体にテクスチャを適用させるためのグループを使うこともできます。

さて、使い方分かる?自分は四苦八苦した。これなかなかイメージし辛いよね。結論から言うと、グループ内に存在するサブグループでフィルタリングしたエレメントだけを集めてシェーダーを適用する機能のようだ。とすると、必須条件として、サブグループまでエレメントが辿り着かないとフィルタリングの候補にもならないので、「サブグループへ適用」をONにするグループはその内側のグループのフィルター対象のエレメントを通さないといけない。ややこしいから全部通しの状態にしておくといいかもね。次に、サブグループにかけたいシェーダーは必ずサブグループより上に配置する。複数のこのようなグループに含まれるサブグループはインスタンスを作って他のグループに入れてもOKなようだ(ただしインスタンスはグループレイヤのインスタンスなので、その中身のアイテムは含まれない)。もちろん新しくグループを作成してそれにフィルターを設定してサブグループとして中に入れてもいいよ。

さて、実際にやってみよう。

下準備まず下準備として立方体と球と円柱のアイテムを作って、それぞれのアイテムマスクを作成し、さらに一部分にポリゴンマテリアルを設定する。そして識別しやすいように色を設定したよ。

サブグループへ適用準備が出来たのでグループを1つ作って、そのグループにCelluarシェーダーを追加して、その下にCylinderアイテムとSphereアイテムのグループマスクを配置する。この状態ではグループにフィルターもかかっていないので、単にレイヤーをまとめる役割しか果たしておらず、Celluarより下のアイテムは全て影響を受けている。そこでこのグループの「サブグループへ適用」にチェックを入れると、影響がグループ内のみに限定されて、グループに入っていないCubeへの影響がなくなる。
同様にマテリアルでも同じことが出来る事も確認できる。
さらに、アイテムマスクやマテリアルマスクのインスタンスや複製、フィルターを設定した新規のグループを作って別のグループに入れてやれば、他のグループに既に入れてしまったモノでも、複数のグループにまたがって設定できることがわかる(今回の例ではインスタンスを作ってみた)。

シェーダーツリーこれがGIFアニメで示したシーンの最終的なシェーダーツリーの状態だ。

レンダリング結果このレンダリング結果と見比べて、どのシェーダーがどのように組み合わさって影響しているかを比較してもらいたい。

あっちのモデルもこんな仕組みを使ってマテリアルを整理するのがいいかな。

それからあらかじめ断っておくけど、301のシェーダーツリーは変更しても更新されない場合が多々ある。今回も更新がうまく行かなかったので、設定してからシェーダーを全部OFFにして、下から順にONにして行って手動で更新している(その作業はGIFアニメでは省いてあるけどね)。これは困ったね。一括でONOFFさせて強制的に更新するようなスクリプトでも書けばいいのかな?

それではまた次回。



take_z_ultima at 12:31|この記事のURLComments(0)TrackBack(0)modo | CG
Archives