CG・コンテンツ制作
SUITE USERS NOTES
emPolygonizer(version 2.05)
ICEベースのプラグイン
Poly_000

プロローグ

さて、今回は少し趣向の異なり、ICEをベースのプラグイン、emPolygonizer2の機能紹介記事になります。
何をするツールかと言いますと、Softimageにある一般的なオブジェクト;(Null・カーブ・ポリゴン・ICEパーティクルまで)から
メタボールのようなポリゴンを生成し、尚且つ結合したり、伸びたり、ちぎれたりする動きをアニメーション化させることができます。
液体みたいな表現に向いているのかも知れません。
今回は、このemPolygonizer2を使ってモデリングから色々紹介できたらと思います。
<記事製作途中でSoftimageのバージョンが変更されています。>

1)ポリゴンモデリング
 >レトロな蛇口
2)ICEパーティクル
 >ホースからの水
 >流れる水の透かし
 >流体マークの飛び散り
パソコンのスペック WindowsXP SP3、Intel Core2Duo 3G、 RAM; 3G、NVIDIA Quadro FX1700
ritaro_ml



ポリゴンモデリング
レトロな蛇口
デザインってその時代を象徴するようなこともあり、
ふと気が付けばちょっと前まではいっぱいあった学校のこんな形↓の蛇口が、いつの間にか無くなっているんですよね。
<この形だと上向かないし・・>
Poly_010
車のデザインにも通じるものがあるのですが、なんか丸っこい造形<例えば、ダンテ・ジアコーザさんが生み出したFiat500なんか・・・>
に 懐かしさ・優しさ・落ち着いた雰囲気みたいなものを感じるのってありますよね。
そういうのって、最近レトロってひっくるめて表現しているみたいですが、
あの玉をくっ付けたような蛇口の取っ手・・・なつかしいですね・・・・それを再現してみました。

emPolygonizer は、ポリゴン・モデリングにも使えて、そんな”丸っこいもの”を作るのが得意です。
で、取っ手はポリゴンのトーラスとカーブとNullを元に
emPolygonizer でAddを押してから次々とピックするとあっという間に出来上がりです。
ポリゴンが生成してからNullやカーブやトーラスのスケールと位置を変更すると、リアルタイムのポリゴンモデリングが可能なのです。
調整が済んだらフリーズをかけ、普通のポリゴンになります。
蛇口の取っ手以外の部分は、SUNのモデリング編で紹介しているポリゴンのサブディビジョンサーフェイス機能を使って作っています。
Poly_011
emPolygonizer で作成されるちょうど良いスケール値というものがありそうです。
シーンが小さく、そのスケールに大きさを合わせるには、ポリゴンを作成するNullのスケールとPolygonizerのポリゴンのスケールの両方で調整できます。
ですが、その場合ポリゴンを生成したNullとは表示位置がずれたことになりますが、アニメーションは保持されて動きます。
Poly_009
モデルだけでも結構いい感じの形に・・、でも色も付けたい・・・
Poly_012
ということで、ついでに、これまでSUN記事ではあまり扱ってないリアルっぽいシェーダー関係も書いてみましょう。(Toonだけ、やたら記述てますし・・)
アニメでも3D表現多くなりましたが、水とか金属とかはToonじゃなくてリアルなシェーダー設定が必要な場合もあることでしょう。
このシェーダーはsimbiontMRというノードを通じて
DarkTree用のシェーダー metalTinFoil.dsts と metalRustySteel.dsts を設定したものです。
Poly_013
うっすら青いのは、既に環境Mapを付けているからですが、そのテクスチャー以外は絵がない、
いわゆる、プロシージャル・シェーダーです。バンプやリフレクションなどが簡単に設定できます。
Poly_014
このシェーダー情報についてはこちらを参考にしてください。
英語の解説でシェーダーを入れ置く場所設定等も必要です。DarkTree Shader for XSI http://www.darksim.com/html/softimagexsi.html
 < ソフトのバージョンがどんどん進歩していってしまうので、不安定さなど、自己責任にてお願いしますよ・・>

で、次の話は、この水なんです、蛇口じゃなくて・・・
Poly_015
水滴のシェーダー設定です。
環境マップからの RGBA_Keyer でカラコレしています。
あと、反射とか透明度、屈折設定部分に工夫を入れていてFront-Back_Swich で表と裏でその設定が違います。
これで背景が入ると、こうなります。↓(つまり、背景があることが前提のシェーダー設定です)
Poly_016
アニメーションはemPolygonizer で作成してるポリゴンの源である Null を動かしているだけで、 
それっぽく、でも少し誇張した動き等も付ることをしています。
レンダリングした画像です。<っていうか、この水玉でかい。>



ICEパーティクル
ホースからの水
さて、今度は簡単なパーティクルからemPolygonizerを使ってポリゴン化したもので何か表現できるのか試してみました。
上記シェーダーを使ってレンダリングし、コンポジットもしてみます。

まずは、ホースを作成します。モデリングは単なる円柱からの加工ですが。形状はICEを使っています。
ICEKinematicsのその1を参照していください。そこに解説しているカーブに沿って変形する ICE設定 そのもです。
カーブの先端には、クラスターセンターを作成し、別Nullにそれを位置コンストレイントを付けれてやり、自由に動かせるようにします。
Poly_018
今度はシェーダーです。
それっぽいものをDarkTreeシェーダーで用意してみました。<なんとなくゴム/プラスチックでザラついた質感と広い範囲の光沢です。>
Poly_019
次はパーティクルです。・・が、その前に、Emitte=発生部分の構築について。
カーブの先端に付け、その先端に位置する円盤ポリゴンからパーティクルを発生させるのですが・・・、
この円盤ポリゴンの方向は、カーブの押し出しから導かれた方向を向くようにし、その法線方向で発生させる、ということを考えておきます。
これも何かスクリプトで考えると難しいかもしれませんが、そう、ICEです。しかもホースを作ったやつです。
Poly_020
つまり、こうです。円盤ポリゴンをカーブに沿って移動させるのですが、カーブの先端が値1の少し前の位置にとどめておけば良いと。
たったこれだけです。ICEって便利で処理が速いし、ぜひぜひICEを色んなところで応用しましょう。
Poly_021
さて、記事書いている間にSoftimageのバージョンが変化し、画面も少し変化しました。
パーティクルを発生させる標準的な接続方法はこのようになります。
SimulationRootという大きなノード以下に EmitやForceやSimulateParticlesが置かれています。
今回のこの設定では、Speedにばらつき、フォースに重力を、放出方向にランダムを設定しています。
Poly_022
動きに満足したらその動きをキャッシュ化し、アニメーションが即再生するようにします。
2つ方法があります。
・パーティクルの動きをキャッシュ化して、 emPolygonizer はその場生成でも高速なのてそのままレンダリングしてしまうか、
・emPolygonizer自身のキャッシュ化機能を利用して即再生し、パーティクルの生成は無効にしておくか、
です。

以下はパーティクルをキャッシュ化した方法です。
Writeタブにて書き込み、それを選択したPointcloudに読み込ませると
AnimationMixer上にClipとして登録されます。
Poly_024
さて肝心の emPolygonizer ですが、
ポリゴン化するのに使う主な値は Parameter項目の ISOlevel Level Of Detail の2つです。
パーティクル同士の距離と細かさで生成されるポリゴンがくっ付くので、ここの値で表現はかなり変わります。
Poly_025
emPolygonizer のキャッシュ機能を使う方法は、
Caching タブ内で、最初に書き出ししておいて、次にそれを読み込むようにします。
Poly_026
お次はコンポジットです。
またまたFXTreeを使用します。Softimageユーザーはぜひ試しに使ってみてください。きっと目から鱗ですよ。
残念ながら、FXTreeで利用できるモーションベクターのブラープラグインを持ってないので、
かなり多くのプレーム数分レンダリングしておいて、Retiming処理をしてぶれているように見せます。
Poly_027
という訳で、コンポジットの全体としては、このくらいになりました。
勝手に地面の影書いたり、カラコレ、追加の色など、この作業は本当に楽しいのですが、あっという間の5分くらい。。。
Poly_028
動かすと、こんなんでした。もっと細かい飛び散りと、キラキラが欲しいところです。
おまけで、キャラと遊ぶとこんなところ???・・・
Poly_029



流れる水の透かし
ちょっとした思い付きで・・・、
昔の某劇場版アニメの演出で、流れる水の向こう側に写る顔が、すっごく歪んで愉快な映像だったのを思い出した。
それは当然2Dのセルアニメなのですが、同じような映像がCGでも再現するのか試してみたくなったのです。

まー、ずばりこんなようなシーンをこしらえます。
キャラクターが間に挟まるような感じにしておいて、ICEのパーティクルを設定します。
 < 背景は、去年大阪に行った時に地下通路の壁をデジカメで撮ったものを、ライオンはヨーロッパからのを加工したものです。 > 
Poly_030
おニューなICEパーティクルの標準接続方法は、SimulationRoot というノードが設定されます。(従来通りの接続も稼動します。)
パーティクルの寿命を3として、その寿命が来たら削除します。
何かに当たって跳ね返るのを想定した場合は Bounce off Surface が便利です。(ここでは結局使わなかった・・)
Poly_031
emPolygonizer で水を作成、水じぶきとか別エフェクトが欲しいところです。
下半分は使用しなかったのですが、ここまで用意はしてたものです。背景との組み合わせ、おもしろいでしょ。
Poly_032
レンダリングした素材を使用して組み合わせます。
今回は、出来上がる”素材”を見せたかったので、エフェクトとかのせてない状態として見てみてください。
Poly_033
もっとブサイクになるかと思った♪



流体マークの飛び散り
次に紹介するのは”特定の形の流体的なかたまりが流れ落ち始めて、地面に衝突して水っぽく飛び散る”っというのを作成してみます。
これも他のエフェクトとか入れず、emPolygonizer だけで作れた画像をお見せします。

まずは、ICEのパーティクルのシュミレーションで以下のような状態を作ることを考えます。
  • マークの形にくっ付いていて、全体として特定の形を成しているようにする
  • タイムラインが進むに連れて、下から順番に距離に応じて崩壊するアニメーションの設定をする
  • 床を想定したポリゴンの板に当たって跳ね返るコリジョンの設定をする
また、考察として、
  • バーテックスカラーの設定をパーティクルにして emPolygonizer にその色が反映するようにする
  • 床にレンダリングの反射設定をして影のような演出にする
  • FXTreeにてカラコレをして色を水っぽくし直す
  • 音を付けてみる

まずはポリゴンで最初の形を作りバーテックスカラーを設定します。<XSIっすね>
そのポリゴンを発生源とするICEパーティクルを作成します。
2011SAPでの標準接続では SimulationRoot というのが設定されています。
発生数は2000個として、 Speed にするとその発生源の形にくっ付いている状態が作成出来ます。
バーテックスカラーをパーティクルに設定するには、
GetData でSelf.PointPositionで取得してGet Closest Location ClosestSurfaceに設定し、発生位置を特定し、
そのLocation の cls.UV_Cluster_AUTO.Vertex_Color.Colors をGetDataで色を拾って Color に接続します。
次は少し工夫が入ります。参考になると思うので、この設定は覚えておくと良いです。
レンダリングされないようにレイヤ分けしたポリゴンのグリッドを下に置きます。
ここからの距離で、まずは順次消える設定をします。AgeLimit ですね。
Get Distance to Surface で GetData したポリゴングリッドを Surface に接続し、その Distance をRescaleノードのValueに接続します。
Rescaleノードは実際の距離を 0~1 までの値変化に変換してくれます。(35.184は一番上までのたまたまの距離)
Randomize Value by Range ノードを取り出し、Multiply by Scale Rescaleから得た値と組み合わせ、
もう一回のMultiply by Scale は1×になっていて調整用です。
その値を SetParticleAge Self.AgeLimit/Seconds を設定して寿命とします。
動作を確認するため、一旦 Delete Particle at Age Limit を接続して動きを見てみます。
下から順次、少しランダムに消えていくはずです。
次はその第一の寿命に達成したパーティクルから順次次の動作、
つまり落下するということが行えるようにState番号が変化するようにします。
そのState番号が変化する条件は、書いた通りその寿命です=トリガーの条件となります。
Softimage のバージョンになるべくよらないようにも設定しました。
StateMachineノードを取り出しておき、そこの最初の Execute State1 にStateノードを接続します。
Stateノードの設定はStateID 0 が トリガーとその結果で State1 になるとします。
その条件;Trigger1 は実際のパーティクルの寿命がその制限の値を超えた時と設定すれば良いので、
Get Particle Age Get Particle Age Limit よりも > ならばを Trigger1 に接続します。
で、その条件になった時の動作をSpawn on Trigger ノードで設定しますので、 State のExecute on Trigger1 に接続します。
Spawn on Trigger ノードでは State 1 に ID を設定し、色を付け(ここでの紫色が反映されてますね)解りやすくしておきます。
すると消えるのでは無く、下から順次色が変化するはずです。
では、今度は紫色に変わったパーティクルに動きを付けます。
勝手にバラバラに散るのではなく、少し収束して欲しかったので、目的の場所を設定してその縮尺を小さくして集まるような感じにしました。
床を想定したポリゴンの下に少し小さいサイズの別ポリゴングリッドを用意し、それをSetParticleGoalとしてジオメトリーに接続しました。
Move Toward Goal ノードを取り出し、Spawn on Trigger の Execute on Spawn1 に接続します。
すると色が変化したら落下し始めます。
色が変化しつつも全体も落下するということとこのあとのコリジョン後の下への動きを設定する為 重力を設定しました。
AddForceを通じてGravity Force で重力を -5 くらいに設定します。
さて、最後に床への衝突です。
Bounce off Surface ノードを取り出し床を想定したポリゴングリッドを Surface1 に接続します。
Bounce off Surface では抜けたりしないように少し距離のオフセット値(ここでは 0.406)を入れておくと良いです。
あとは跳ね返る大きさなどを変えると動きが全く変わって来ます。
さて、StateID値が変化してもパーテックスカラーが反映されるようにしたかったので、
クラスターの色を Spawn on Trigger ノードの Colorに接続しました。
で、ようやくemPolygonizerの話へ。
pointcloud ノードを選択した状態でemPolygonizerを設定するとポリゴン化します。
Dataタブ内で VertexColors 項目にて[Recrate] ボタンを押すと、ポリゴンにバーテックスカラーの色が反映されます。
最初は形に沿った形状にしたいので緻密性が欲しいのですが、
そのまま再生し続けると今度はパーティクルが散って距離が開くので、単にパーティクルになってしまいます。
そこで、Isolevel Level of Detalにアニメーションを付けて序々に大雑把になるようにアニメーションを設定します。
全部を再生して見ながら調整というのは処理時間的に無理なので、
パーティクルだけの表示にしてアニメーションを再生させ、
プレビューしたいフレームで emPolygonizer2 ポリゴンを表示にすると、そのフレームでの形状が描画されます。
床に反射の設定をしたり、背景にHDR画像を使用してみたりしてみました。
さて、レンダリング作業に入りますが、
パーティクルは生成しているは、ポリゴンが生成しているは、メンタルレイは動くはでもメモリーも処理時間もかかります。
そこでキャッシュを使用します。ICEパーティクルのキャッシュをするとどうやらバーテックスカラーを失うようでしたので
emPolygonizer のキャッシュを使います。
Caching タブにて最初は◎Simulate and Write を ON にして全フレームシーン再生をします。
レンダリングする時は、◎ReadOnly にして行いますが、キャッシュの書き出し先がシーン名付きになっているのがデフォルトなので、
保存したシーン名を変えた時はキャッシュファイル先のディレクトリーに注意してください。
カメラは、手で持ったカメラが現象を追って撮ったような・・少し変に。
さてレンダリングし終わったら、FXTreeにてブラーやボケやカラコレをしました。



という訳で、使い方の手始め的に紹介してみました。液体みたいなものを簡単に作成できる例になっていますでしょうか。
emPolygonizer の操作が難しい訳ではなく、その素材作りの方に時間と工夫が要るといった感じです。
なので、今後紹介予定の Lagoa と組み合わせて使うと、より流体らしい動きをポリゴン化出来ると思います。
今回は emPolygonizer2 を使用しましたが、メモリー管理とか処理部分での改善がなされているバージョンだそうです。
(と将来バージョンの提供もしてくれると思われます。)
現在は 2011SAPにて V1.7相当の Polygonizer が付属していますので、操作は似たようになっていると思われます。

という訳で、次回は Lagoa かな?
乞う、ご期待!!
戻る 次へ

お気軽にお問い合わせください

Daikin CG News お申し込み

CGクリエイター向けのセミナー・イベントやキャンペーン、製品情報をメールマガジンでお届けします。(登録無料)

Twitter

ページの先頭へ