English | French | Russian | Italian
既に聞いたかもしれませんが、ジオメトリモーフィングでは2つの3Dモデルが必要でそれらは同じ頂点数から成り立つだけではなく、インデックス(順番)も同じ方法でなければなりません。もしそれらの必要条件の一つが備わっていなければ、モデルをモーフィングは出来ますがよりおかしな結果が得られるかもしれません。
等しいインデックスが施された3Dモデルをあなたのお気に入りのモデリングソフトウェアで作成することはそれらのソフトウェアの役割です。このチュートリアルではvvvvで作られた2つのプリミティブな円錐を単にモーフィングさせます。ではパッチを作りましょう:
最初に作成するパッチは2つのシリンダーの頂点を交互に単純にレンダリングするものです。赤色と緑色にします。一つは正しく、もう一つはさかさまにします。この2つがモーフィングターゲットです。パッチはあなたが何かするまでは下の画像の様になります。
Camera (Transform Softimage)とAspectRatio (Transform) ノードはここでは本質的ではありませんが単に良いアイデアということを書き留めておきます。
変化しないシリンダーの出力はGouraudDirectional (EX9.Effect)のMeshに接続されています。メッシュは頂点とインデックスバッファから成り立ちます。vvvvでのインデックスバッファは単純なスプレッドで表されるのに対して、頂点バッファはジオメトリを作り上げるいくつかの成分の様なものです。VertexDeclaration(EX9.Geometry Mesh)ノードとシリンダーの接続とその変化しない出力は頂点成分が次のものから成り立つことを示してくれます。シリンダーメッシュの中のPosition、Normal、そしてTextureCoordinateの値です。他のメッシュはその他の成分を含むことができます。
ちょうど2つのメッシュとモーフィング要素と私たちのために働きかけるvvvvのノードはまだありません。そして、以降もそのようなノードは恐らく無いでしょう。(なぜなら実装するのにうんざりするからです。)そして直ぐにただ正確にそのようなノードが動作するパッチを作成すればとにかく全てが正確に動作する方法を知りたがるでしょう。
従って、手動でモーフィングできるパッチを作成出来るようにメッシュの全ての成分にアクセスするためのノードが必要です。下のパッチを見てください。Mesh (EX9.Geometry Split)に続いてVertexBuffer (EX9.Geometry Split)が全ての頂点データを読み出しています。このパッチはこの処理が逆にできることも実演しています。Mesh (EX9.Geometry Join)に続くVertexBuffer (EX9.Geometry Join)は、レンダリングするGouraudDirectional (EX9.Effect)のためのもとの正しいメッシュへシリンダーを結合しています。
Mesh (EX9.Geometry Split)の出力であるインデックスバッファは直接 Mesh (EX9.Geometry Join)に接続され、頂点バッファの位置と法線成分は分割されて結合するVertexBufferノードに扱われることに注意してください。
これを見ていて私たちが今行うべきことが既に分かったかもしれませんが、私たちには2つのVertexBufferノード間をモーフィングするパーツが足りません。緑色のシリンダーの頂点データを、赤色のものとモーフィングするための簡単なInputMorph (Value) を使って分割しましょう。
色は頂点バッファの成分ではなくエフェクトのパラメータなので、色のモーフィングをするにはInputMorph (Color)ノードを使いましょう。InputMorphの値を0から1の間でドラッグすれば、赤色のシリンダーと逆さまの緑色のシリンダーが滑らかに混ざり合った結果となります。質問がありますか?
この一時停止は比較的小さなメッシュを動かしている限りは問題ありません。もし全体的に少し遅いと感じたらよりクールなGPUベースのアプローチを読んでください。
もし頂点数とインデックスが一致しない2つのモデルを使ったら何が起こるか見てみましょう。最初のCylinderノードをダブルクリックして、Teapot (EX9.Geometry)ノードに置き換えてください。即席のメディアアートです!
anonymous user login
~3d ago
~10d ago
~10d ago
~11d ago
~24d ago
~1mth ago
~1mth ago
~1mth ago
~1mth ago
~2mth ago