2013年03月

2013年03月29日

シェーダーアイテムを調べてみた その2 modo601 SP5

今回はEnhance:modo TexturesからWaveformsカテゴリのシェーダーアイテムについて調べてみたよ。

このカテゴリのシェーダーは前回のRegional HSVと同様に他のシェーダーアイテムと組み合わせて使うことが前提になっているもので、特定のエフェクトの値を特定の波形グラフによって変換するのがその機能だ。

従来この手の事はグラディエントシェーダーでやっていたわけだけど、これを使うとグラフが自動生成されるので作業の手間が大幅に減らせるわけだ。

シェーダーツリーパネルの「レイヤー追加」メニューの「Waveform」の中には16ものアイテムがあって、覚えるだけでも大変そうな感じだけど、どれも働きは一緒で異なるのは波形パターンとそれをコントロールするパラメータの一部分だけだ。

fig01

使い方はシンプルで、変換したいエフェクトを設定してそのエフェクトを出力しているアイテムのすぐ上にこのアイテムを置くだけだ。

最も分かりやすいのはディスプレースメントマップで、例えばシンプルな平面を用意して、

fig02これに黒から白へのシンプルなグラデーションをUVマップで貼り付けて,「水平方向の繰り返し」、「垂直方向の繰り返し」を「リセット」か「エッジ」にし、エフェクトをディスプレースメントにし、ベースマテリアルのディスプレースメント距離を上げていくと、

このように平面が斜面になる。下の画像には比較のためにディスプレースメントしてない平面も加えてあるよ。

fig03

ディスプレースメントマップについて今さら何の説明も必要ないと思うけど、マッピングされた画像の濃淡にあわせてジオメトリを法線方向に移動させる機能なわけだ。上のシーンでは白が100%、黒が0%のディスプレースメントに割り当てられていて、ベースマテリアルで100%のディスプレースメントが500mmと設定されているので、グラデーションの白い部分が500mm持ち上がり、黒の0%のところまで徐々に高さを減らし、結果として斜面になっているわけだね。

ここにWaveformsの中から「Staircase」を追加し、エフェクトをディスプレースメントにして、グラデーション画像アイテムのすぐ上に配置すると、

fig04

このようにグラデーションのパターンが加工されて階段状になった。

fig05

これはguradhientで言えば入力をディスプレースメント高さに、エフェクトもディスプレースメントにして、こんな感じのグラフを設定したのと同じ効果なわけだ。

fig06

ただ、同じ事をやるにしてもグラフをいちいち描かなくてもmodo側で生成してくれるのはありがたいわけで、Staircaseには下のように「段数」とか「段間の傾斜」などのパラメータがあって、これを変更するだけで簡単にグラフが変更できるわけだ。

fig07

waveformsに入っているシェーダーアイテムはこのグラフのパターンが異なっていて、それに伴ってグラフの形状をコントロールするパラメータが異なっている。

これを使えば、例えばこんな単純なパターンに

fig08

このような効果を付け加えたりとか、

fig09

Gammaを使えばグラフの中間のの遷移をコントロールできるから、下のようにディスプレースメントで作った山の形状を調整したりなんて事も可能だ。

fig10

ちなみにグラデーションのディスプレイスメントマップにガンマをかけてみるとこんな感じ。

fig14

また、下のGIFアニメはディフューズカラーに「Sin」を割り当てたものだ。ディフューズの明るさに対してSin関数が割り当てられてグラデーションが波になっている。

fig11

ちなみに上記の画像に設定したのと同様の設定のsinウェーブをグラデーションのディスプレイスメントマップに適用するとこんな感じになる。

fig13

ディフューズカラーの場合はそのまま適用すると白黒画像(正確には前景色と背景色のブレンド画像)になってしまうので、出力コントロールで「前景・下のレイヤーを使用」をONにして、下のレイヤーの色を使ってやる必要がある。これは前景色と背景色のブレンドがコントロールされるので、背景色にも下のレイヤを使っちゃうと同じ画像がブレンドされることになって何の変化も無くなっちゃうから気をつけてね。

fig12

waveformsにはたくさんのパターンがあるので、まずはその把握からしないとね。

それではまた来週。

カテゴリー別ページ



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

2013年03月28日

2013の新機能を探る その90 3dsmax 2013 PU6

今回はmaxのアクティブな契約ユーザーに提供が開始された2013用の拡張機能であるMassFX mParticlesについて調べてみたい。

この拡張機能をインストールすると、従来のパーティクルビューのアイコンリストに「MassFX〜」という名前のアイコンが追加され、従来のパーティクルフローにMassFXソルバを利用できるようになり、パーティクルシミュレーションにPhysXが使えるようになる。

fig01

以前にも調べたけど、maxのパーティクルシステムは大きく分けて、

  • パーティクルフロー(イベント型パーティクルシステム)
  • 非イベント型パーティクルシステム

があって、今回拡張されたのはパーティクルフローの方だ。

これはパーティクルの挙動をイベントというノードにパッケージ化し、それらを相互に接続することで状態の遷移を定義していくような形のものだ。

実際には、maxでは「6」のキーにショートカットが割り当てられていて、下のようなパーティクルビューパネルが表示され、コンテナからオペレータアイコンをイベント表示エリアにドラッグ&ドロップしたり、そこに生成されるイベントをリンクしたりすることでシーンのパーティクルシステムを構築する仕組みになっている。

fig04 

例えば下のグラフは

fig02

イベント001で、

  • 「発生」オペレータがパーティクルを発生させ、
  • 「位置アイコン」が発生したパーティクルの初期位置を設定し、
  • 「速度」が初速度を与え、シェイプがパーティクルに形状(立方体)を割り当て、
  • 「表示」がその見え方を設定する。

これでビューポートにあるパーティクルの発生もとの長方形のアイコン全面から立方体のパーティクルが発生して下に向かって進んでいくようになる。

そこにさらに「衝突発生」がパーティクルが衝突したかをテストし、衝突が検知されるとイベント2へパーティクルが送られる。

イベント002は「シェイプ」によってパーティクルに割り当てる形状が「文字」で、「回転」によってパーティクルに回転が与えられるので、ここに来たパーティクルは文字の形状になって回転する。

これを再生するとこのように衝突したパーティクルだけが文字の形状に置き換わり、回転して進んでいくようになる。

fig03

MassFXを使ったオペレータ群もこれらと同様に機能する。「6」のキーを押してパーティクルビューを出し、オペレータアイコンが並ぶコンテナの中から「MassFXフロー」アイコンをイベント表示パネルにドラッグ&ドロップすると、このようなセットがイベント表示エリアに展開される。

fig05

「MassFXフロー」はMassFXパーティクルを使う時に基本となる要素が組み合わさったテンプレートで、ゼロから組み立てるよりこれを修正していく方が手っ取り早い場合が多い。

これを再生するとこのようなアニメーションになる。

fig07

「発生グリッド」はパーティクルの発生と位置決めを同時に行うオペレータで、今回はフレーム0でパーティクルが10.2の間隔で格子状に並んで発生する事で上のように初期位置で立方体がキチンと配列した状態になっている。

そしてそのパーティクルの形状を与えているのが「シェイプ」で立方体のサイズがグリッド間隔よりちょっと小さい10になっている。

そして「MassFXシェイプ」によってこのパーティクルにMassFXリジッドボディが割り当てられる。これでパーティクルとMassFXが繋がってパーティクル一つ一つがMassFXのリジッドボディとして振舞うようになるわけだ。

「スピン」はパーティクルに回転を与えて、

「MassFXワールド」はMassFXリジッドボディに重力や仮想の地面などの環境を提供する。

だから上のGIFアニメで大量のBOXが落下したのはこのMassFXワールドが提供した重力のためで、落ちる途中で跳ね返ったのはMassFXが提供する仮想の地面のせいだ。どちらもMassFXではおなじみの奴だね。

ここまで来ればもうパーティクルはMassFXで勝手に物理運動してくれる。

例えばパーティクルに衝突するように円柱にアニメーションをつけて、

fig11これにPFlowコリジョンシェイプモディファイヤを適用して「アクティブ化」ボタンを押してアクティブにする。

fig09そして「MassFXコリジョン」をイベントに追加し、

fig10MassFXコリジョンのロールアウトでこの円柱をコリジョンとして追加すれば、

このようにパーティクルが円柱にはじかれて地面を転がるアニメーションが簡単に出来上がる。

fig08

なかなかいいねぇ。

詳しくはまた次回。

maxまとめページ



take_z_ultima at 12:19|この記事のURLComments(0)TrackBack(0)3ds Max | CG

2013年03月27日

シェーダーアイテムを調べてみた その1 modo601 SP5

modoは501からシェーダーツリーアイテムが大幅に増えた。601になってマニュアルにサンプル画像の一覧なんかが載るようになってだいぶ把握し易くなったけど、ノイズだけでも物凄い数あるし、使い方もなかなか変わったものもあるので、ここらでちょっと調べてみようかなと思い立ったわけだ。

そこで今回は「Regional HSV」について調べてみたよ。

このシェーダーアイテムはこのアイテムの下にある同じエフェクトの出力に色相、彩度、明度の値をランダムに割り当てるもので、例えばタイル1枚1枚にちょっとした色の変化をつけたり、リプリケータで増やしたアイテムの色味をちょっとずつ変えたりしたいって時に使うと効果的だ。

fig01

上の画像は平面にタイルマテリアルをディフューズカラーとして適用し、それにRegional HSVでバリエーションをつけたものだ。

手順は、まず平面に対してUVマップでBathTileマテリアル(レイヤー追加→Enhance:modo Textures→Tiles→Bath Tile)を貼る。

fig03

するとこのように格子状の目地が現れる。

fig02

ここでBathTileマテリアルの「出力コントロール」ロールアウトの「出力範囲」をONにする。

fig04

すると、タイルは格子状の目地のかわりに前景色から背景色までのカラーが各タイルにランダムに割り当てられ、塗りつぶされた状態になる。

fig05

ここでRegional HSV(レイヤー追加→Enhance:modo Textures→Process→Regional HSV)をBathTileの上に追加する。

fig06

するとこのようにタイルの各タイルに様々な色がつく。

fig07

Regional HSVはこのように出力コントロールを持つアイテムから出力を受け取って、それを変換するようになっている。

エフェクトが色であれば、プロパティは「色相」、「彩度」、「明度」に対して範囲を設定する形になり、

fig11

ディフューズ量などのように値が1つのエフェクトは「明度」の「最大」「最小」という設定になる。

fig12

そしてこれらの範囲で入力値がランダムに割り当てられる。

そのランダムの順番を決めるのが「シード」パラメータで、この値が同じなら同じ順番で乱数が発生するので出力に対して割り付けられる値も同じになる。

デフォルトの状態では色相、彩度、明度ともに取れる範囲いっぱいに値が設定されていて、タイルの色もかなりバリエーションに富んだ状態になっている。

fig07

中でも色相の範囲は分かりにくいんだけど、どうやらこういうことらしい。

最初に設定されている値は最小値が(1.0,0.0,0.0)で最大値が(1.0,0.0,0.1)で色相環でみると下の画像の矢印の位置になる。

fig08

色相環の円周を直線に直した時、どうも(1.0,0,0.0)が最大値で(1.0,0.0,0.01)のように青の成分がちょっとでも入ったものが最小値になるらしい。そこでパラメータの設定で(1.0,0,0.0)を最小値にし、(1.0,0.0,0.1)を最大値にすると、数直線で見れば最小値が最大値より右(プラス)の位置にある事になる。

で、その数直線は最大値と最小値が繋がった円なので、(1.0,0,0.0)から(1.0,0.0,0.1)まで辿ると、グラフの全域をなめて通るような上の矢印のような範囲になるわけだ。

fig18

だから色相の範囲をもっと狭まく取りたいなら、数直線で最小値の方が最大値より左になってないとならないわけで、例えば最小値を(1.0,0.0,0.01)にしてやれば、色の範囲は下のようにちょっとだけ時計回りに進む感じになる。

fig09

これがその結果。彩度と明度はそれぞれ0〜100%だからその部分はばらついているけど色相は上の図の赤い範囲に収まっているのがわかる。

fig10

ところでこのマテリアルが受け取る「出力」って言うのがなかなかクセモノで、単独で使えばそのマテリアルのエフェクトの値として振舞っている感じになるけど、実際はエフェクトに出てくるのはマテリアルの中で出力に割り当てられた「背景色」と「前景色」で、出力そのものではないみたいだ。

だからRegional HSVを割り当てた場合、Bath Tileの出力コントロールにある背景色や前景色はRegional HSVに切り替わってしまうので値をいくらいじっても何の変化も無い。 

当然、Regional HSVのエフェクトがディフューズの色になっている時にその下にあるマテリアルでディフューズの色を変えても、それは出力としては機能せず、Regional HSVが出す色に変化は起きない。あくまでそのアイテムが「出力」というチャンネルを出せるかどうかにかかっているようだ。

そしてこの出力はタイルのようにプロパティに出てくるものもあれば、画像アイテムやグラディエントのように表立っては現れないけど試してみると出ているみたいなものもあるようだ。

グラディエントの出力を使った例を紹介すると、例えばパーティクルジェネレータで、平面に10X10のパーティクルを並べて、 

fig14

それをポイントソースに、イスを一つ読み込んで、リプリケータで複製して並べてみた。

fig15

fig17

ここでイスのマテリアルグループの中にグラディエントをディフューズエフェクトとして追加し、入力パラメータをパーティクルIDに、グラフはRGBじゃなくて「値」の方で、下の画像のように設定する。

fig16

これで各パーティクルのIDがグラディエントで出力値に変換される。あとはグラディエントの上にRegional HSVを追加すれば、このようにいろんな色のイスができあがる。

fig13

便利だねぇ。 

それではまた次回。

カテゴリー別ページ



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

2013年03月26日

2013の新機能を探る その89 3dsmax 2013 PU5

今回も引き続き「HairとFur(WSM)」モディファイヤを調べて行きたい。今回は「表示(Display)」ロールアウトから。

fig01

このロールアウトはヘアのビューポートでの表示をコントロールするパラメータが集められている。

「ガイドを表示(Display Guides)」「ヘアを表示(Display Hairs)」はそれぞれビューポートでのガイドヘアとガイドの表示/非表示を切り替えるスイッチだ。ヘアのON/OFFについては「スタイリング(Styling)」ロールアウトの中にもあったね。

fig02

ガイドヘアは「ガイドのカラー(Guide Color)」を、ヘアは「上書き(Override)」とその色のチップを変更することで表示色を変更することで変更できるとマニュアルにはある。確かにガイドヘアは色が変わったけど、「上書き(Override)」の方はONにしてもヘアに何の変化も出なかった。

「パーセント(Percentage)」、「最大ヘアの数(Max. Hairs)」はビューポートに表示するヘアの数を制限する。

「パーセント(Percentage)」は「一般パラメータ(General Parameters)」ロールアウトの「ヘアの数(Hair Count)」で設定したヘアの数に対して何パーセントのヘアをビューポートに表示するかを決めるパラメータ。表示本数が少ないほど表示のレスポンスは良くなるので、作業が重たいようならこの数値を下げて表示本数を減らしてみるといいわけだ。もちろんこのパラメータを調整してもレンダリング画像には関係ない。

「パーセント(Percentage)」がヘアの本数に対して何パーセント表示させるかであるのに対して「最大ヘアの数(Max. Hairs)」はヘアの表示本数に上限を設けるもの。これによって「ヘアの数(Hair Count)」を何本にしようと、ここで設定した本数を超えてヘアが表示される事はなくなるので、ついうっかりヘアの本数を多く入力しすぎちゃってMAXがフリーズ寸前状態になるような事が防げるわけだ。

「ジオメトリとして(As Geometry)」はヘアを「バッファ」方式でレンダリングするかわりに「ジオメトリ」でレンダリングする場合のイメージをビューポートに再現するためのスイッチだ。だからこのスイッチはレンダリングをジオメトリにする時にONにして使うものだ。ただしマテリアルはジオメトリのものじゃなくてネイティブヘアのものがそのまま表示される。

また、ジオメトリとして出力されているので、ビューポート上でヘアの影が再現できる利点もある。下のGIFアニメはスイッチを切り替えて比較したものだ。ONにするとヘアがテープ状のものから角柱を連ねたものになり、影が表示されるのがわかる。

fig03

ちなみにジオメトリヘアはネイティブヘアと違って発生もとのマテリアルに従うので、そのままこの方式でヘアをレンダリングするとヘアの根元から先まで一様のマテリアルになってしまう。下のGIFアニメはバッファ方式とジオメトリ方式でヘアをレンダリングして比較してみたもの。ジオメトリにすると発生もとのピンクの色がそのままヘアの色になっている。

fig04

このヘアの長さ方向はUVWマップのWに割り当てられるので、W方向を使ってマッピングすれば長さ方向でマテリアルを変更することも可能だ。

例えば球体にヘアが生えているものがあったとして、ジオメトリマテリアルIDを1にして、

fig08

レンダリング方式をジオメトリにしておいて、

fig09

マルチ/サブオブジェクトマテリアルを用意して、ID:1番と2番に標準マテリアルを割り当てて、

fig05

1番のマテリアルの拡散反射光カラーにグラディエントランプシェーダーを割り当てて、

fig07

そのマッピングの割り当てをWU平面にしてやれば、

fig06

このようにヘアの長さ方向にグラデーションランプのマッピングがなされるわけだ。ちなみに球のデフォルトのマテリアルIDは2になっている。

fig10

それではまた次回。

maxまとめページ



take_z_ultima at 11:30|この記事のURLComments(0)TrackBack(0)3ds Max | CG

2013年03月25日

modo601が来た! その103 modo601 SP5

今回もパーティクルツールについて調べてみたよ。

パーティクルはなんとか準備できるようになったので、今度は編集ツールだ。

fig01

これはもうおなじみのスカルプトツールなわけだけど、パーティクルツールとして分けただけあって、スカルプトツールとはちょっと違う働きになっているよ。

ツールはスカルプトやペイントと同じようにブラシと組み合わせて使う事が前提で、パイプラインで組み合わされ。デフォルトの状態ではスムーズブラシが選択されている。

fig03

編集ツールのツールプロパティは全て同じようなパラメータが並んでいて、下のような感じだ。違いと言えば一番上のパラメータが「スムーズ」なら「スムーズ量」、移動なら「移動量」といったようにツールの適用量を表わす名称が変わってる事くらいかな。

fig02

当然、この適用量が増えるほどツールがパーティクルに与える影響が大きくなるわけだね。

ブラシコンストレイントはブラシを3次元空間でどう適用するかを決めるための設定で、下の3つから選択できる。

  • Closest Particle
  • Grid
  • Center Particle

これがなかなか分かりにくいんだけど、いろいろ試してみた結果以下のような挙動を確認した。

「Closest Particle」はブラシ範囲の中でブラシの中心に一番近いパーティクルにブラシがスナップする。

fig04

「Grid」はブラシの範囲の中で一番グリッドに近いパーティクルにブラシがスナップする。下のGIFアニメは格子状に並んだパーティクルに対して「Grid」のブラシを適用してみたものだ。グリッド上にあるパーティクルにブラシがスナップするのがわかる。

fig05

「Center Particle」はブラシの範囲内のパーティクルの平均位置(中心点)にブラシがスナップする。下のGIFアニメは球状に並んだパーティクルに対して「Center Particle」のブラシを適用してみたものだ。クリックするとブラシ範囲内のポイントの中心にブラシがスナップするのがわかる。

fig06

これらのスナップ機能で気をつけなきゃならないのはブラシにはパーティクルとポリゴンの頂点の区別がつかない事で、操作する前景レイヤにメッシュがあると、それまで含んでスナップ処理が為される。だから例えば球体表面にパーティクルが散乱していて、それを移動ツールでなでてやっても、ブラシコンストレイントが「Center Particle」だと、ブラシが球体の中心にスナップしてしまってブラシの範囲にパーティクルが無いなんて事も起こるよ。

「パーティクルコンストレイント」は背景コンストレイントのようにパーティクルの挙動をメッシュ表面で拘束しようというものだ。でも試した限りではうまく機能が確認できなかった(SP5)。

「スクリーンブラシ」はブラシの影響範囲を視線方向に無限に広げるスイッチだ。これをONにすればパーティクルの操作はスクリーンに対して2次元的になる。

下の画像は移動ブラシで正面ビューからパーティクルを右方向へ移動させようとしているところ。画面の上は上面ビューで左の矢印が正面ビューの視線方向だ。

fig09

「スクリーンブラシ」をOFFの状態でドラッグすると、ブラシがスナップされたポイントを中心にブラシ範囲にあるパーティクルが移動しているのがかわる。 その時奥行き方向の範囲もブラシの半径で限定されているのがわかる。 

fig10

これに対して「スクリーンブラシ」をONの状態でドラッグすると、ブラシがスナップされたポイントを中心にブラシ範囲にあるパーティクルが移動しているのは同じだけど、視線奥行き方向はブラシのフォールオフの影響を受けず、均一に移動しているのがわかる。

fig11

それではまた次回。

カテゴリー別ページ



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