On this page |
このノードは、メタボールとメタサーフェスを作成します。 メタサーフェスは、メタボールを汎用化します。つまり、メタボールが楕円体である必要がありません。
序文 ¶
メタボールは有機的な見た目のサーフェスを作成することができます。 メタボールは空間内に浮いた“density”の塊、つまりブロッブ(“fields”)です。 Houdiniは、ある閾値よりも濃い“density”の領域まわりにサーフェスをスキン化します。
メタボールが重なれば、Houdiniは、それらのメタボールのフィールドを合算します。 フォースフィールドの密度は、他のメタボールのフォースフィールドとの距離を近づけることで上げることができるので、 メタボールは、周辺のメタボールと融合して形状を変更するという固有の特性を持ちます。 この特性によって、有機的なサーフェスのモデリングで非常に効果があります。
マイナスのWeightを指定すれば、メタボールを“押し寄せる”ことができます。 これによって、効果的に密度を下げることができるので、サーフェス内に穴を作成することができます。
フィールドは、 Kernel Function と Weight で制御します。 Kernel Functionは、メタボールのフィールドの密度を1(中心)から0(外側エッジ)のグラデーションで制御します。 Weightは、密度をスケールすることで、サーフェスの位置をより近くに、または中心から離すようにします。 現在のところ、フィールドの形状は、楕円体や 二次曲面 として指定することができます。
メタボールの配置 ¶
To... | Do this |
---|---|
シーン内のどこかにメタボールを配置する |
|
原点にメタボールを配置する |
ジオメトリレベルまたはオブジェクトを選択した状態でメタボールを作成すると、選択したオブジェクト内に移動します。シーンレベルでメタボールを作成すると、ビューアとネットワークエディタは選択したオブジェクトのジオメトリレベルに切り替わります。この固有な特徴は、連続でメタボールを複数作成すると、近くにあるメタボールを1つに結合します。
メタボールのハンドル ¶
Metaballオブジェクトに対して、ジオメトリレベルで利用可能な特別なハンドルがあり、それを使えば伸縮や押し潰しをすることができます。
-
ネットワークエディタでMetaballノードをダブルクリック、またはオペレーションコントロールツールバーの Jump to Operator ボタンをクリックして、ジオメトリレベルに移動します。
-
ハンドルをドラッグすることで、メタボールを押し潰したり、伸縮させることができます。
To... | Do this |
---|---|
X軸に沿って円を伸縮または押し潰す |
赤のハンドルをドラッグします。 |
Y軸に沿って円を伸縮または押し潰す |
緑のハンドルをドラッグします。 |
Z軸に沿って円を伸縮または押し潰す |
青のハンドルをドラッグします。 |
How to ¶
To... | Do this |
---|---|
メタボールを相互に作用させる |
メタボールのノードをMergeノードで一緒に結合します。 |
膨大な数のメタボールを簡単に作成する |
1個のメタボールを作成し、それをCopyノードを使って、他のジオメトリのポイント上にコピーします。 メタボールをパーティクルシステムのポイント上にコピーすれば、色々な立体的な視覚効果を表現することができます。 |
メタボールの表示を高速化する |
|
メタボールを他のジオメトリタイプに変換する |
Convertツールを使用します。 |
二次曲面形状 ¶
通常の楕円体形状とは違って、XY Exponent、Z Exponentのパラメータを増減することで“星形”(exponent > 1)や“四角形”(exponent < 1)を作成することができます。
Exponentパラメータを1以外にすることで、メタボールが二次曲面になります。
メタボールの動作方法 ¶
各メタボールは“球状の影響力”を持ちます。2つのメタボールをMergeで結合することで、相互に影響を及ぼし合って、水滴のような挙動をします。 つまり、表面張力が働いて、メタボール間が滑らかに繋がります。 これは、お互いに融合し合う有機的な“ブロッブ”を作成するのに役に立ちます。
メタボールを球状のフォースフィールドと考えることができ、メタボールのサーフェスは、フォースフィールドの密度が特定の閾値を超えた箇所に暗黙関数が定義されます。 フォースフィールドの密度は、他のメタボールのフォースフィールドの近接度によって濃くなるので、メタボールは、自身の形状が周辺のメタボールと融合する固有の特性を持っています。 これは、有機的なサーフェスのモデリングで非常に効果があります。メタボールのサーフェスは、メタボールの密度が、特定の閾値を越えると存在します:
2つ以上のメタボールのフォースフィールドが結合されると、下図のように、フォースフィールドの密度が追加されて、 サーフェスがフォースフィールドが交差する領域まで伸びます。
Display Optionsツールバーの Markers タブの Hulls をオンにすることで、メタボールの影響フィールドを確認することができます。
このノードは、有機的なモデル、液体表現、他のブロッブサーフェスの作成に役に立ちます。
役立つ情報 ¶
Level Of Detail
Display OptionsのLevel Of Detailパラメータを調整することで、メタボールとNURBSの表示の詳細レベルを変更することができます。
メタボールシェーディングの改善
メタボールをポリゴンに変換する時に 法線 アトリビュートが存在すれば、正確にメタボールの法線が計算されます。 つまり、ポリゴン化したメタボールのシェーディングを改善するには、メタボールを変換する前に、法線アトリビュート(Facet SOPを使用)を追加するのが良いでしょう。
メタボールによってL-Systemのコピーをふやけさせる
これは、通常ではCopy SOPを使って、メタボールを変形ポリゴン/メッシュの入力ソースのすべてのポイントにコピーすることで行ないます。これをする時に、変形ジオメトリをFacet SOPに接続して、
スプラインサーフェスから変換する時、まず最初に、サーフェスを改良してから、メタボールを滑らかに分布させます。
メタボールを使ってParticle SOPの変形アトラクターを作成するなら、Group SOPによって境界領域を定義して、メタボールを、そのグループ内のポイントのみにコピーしたい場合があります。 これは、アトラクター領域の制御とアニメーションが簡単になります。
メタエクスプレッション ¶
メタエクスプレッションとは、メタボールの融合の仕方を決めるためのユーザ指定アトリビュートのことです。メタエクスプレッションを使うには、すべてのメタボールをグループでまとめます。メタボールをグループやプリミティブ番号として参照することができます。そして、Attribute Create SOPを使ってmetaExpression
という名前の文字列のDetailアトリビュートを構築します。
Note
アトリビュート名は、必ずmetaExpression
にしてください。
それから、文字列フィールド内で、エクスプレッションをタイプして、メタボールの融合の仕方を制御します。これらのエクスプレッションは、引用符で閉じたグループ名、引用符なしのプリミティブ番号、min
, max
, sum
のオペレーションの組み合わせで構築します。有効なエクスプレッションの例。
sum(max("group1", "group2"), max("group3", "group4"), 0, 1)
group1, group2, group3, group4がグループ名、0と1がメタボールのプリミティブ番号です。min
, max
, sum
オペレーションは、任意の数の引数を受け取ることができ、sum(max(...), ...)
のようなネストを使ったエクスプレッションをサポートしています。min
, max
, sum
に渡す引数は、カンマで区切ります。引用符で閉じたグループ名の指定は、そのグループ内の各メタボールプリミティブを現行引数リストに追加しているだけです。例えば、group1に0,1,2のプリミティブ番号のメタボールがあれば、以下のエクスプレッション
max("group1")
は、以下のエクスプレッションと等価です。
max(0, 1, 2)
重複した引数名も、このエクスプレッションでサポートされています。例えば、プリミティブ番号0のメタボールを定義する時に、sum(0, 0)
エクスプレッションを指定すれば、2つの別のメタボールをメタボール0と同じ場所で結合することと同じです。
以下の画像は、2つのメタボールの融合結果をsum, max, minのオペレーション別に表示しています。
Sum |
|
Max |
|
Min |
|
このエクスプレッションは、メタボールを含むジオメトリ上にDetail/文字列のアトリビュートを必要なエクスプレッションと一緒に作成することで設定することができます。この機能は、部分的にMetaGroups SOPでも表示されます。このSOPは、ユーザが簡単に以下のエクスプレッションを生成することができます。
max(sum(...), sum(...), ..., sum(...))
これらのグループは、スペース区切りのグループ名のリストで構成されます。2つのメタボールのグループを'group1 group2'、'group3 group4'と定義すれば、SOPは、以下と同じメタエクスプレッションを生成します。
max(sum("group1", "group2"), sum("group3", "group4"))
Tip
Display Optionsの Geometry タブの Level Of Detail を上げれば、表示精度が良くなりますが、メモリ使用量が増えます。
上級 ¶
RIBにブロッブプリミティブを生成する時、文字列パラメータが空っぽのリストにハードコーディングされます。SOHOは、“RiBlobby_Strings”(大文字小文字区別あり)という名前のDetailアトリビュートを検索します。この文字列の値は、Python関数のshlex.split()によって解読されます。その結果の文字列のリストは、RiBlobby()
コールで出力されます。
パラメータ ¶
Mode
メタボールの指定で使用するパラメータを解釈する方法。
Field Radius
Radius をDensityフィールドのスケールとして扱います。メタボールのサーフェスが、この Radius 、 Weight 、 Kernel Function の関数になります。
Threshold Radius
Radius を孤立したメタボールのサーフェスの半径として扱い、この Radius 、 Weight 、 Kernel Function からDensityフィールドのスケールを計算します。 このモードで Weight を変更しても、孤立したメタボールのサーフェスの大きさは変わりません。
Radius
メタボールの半径。 XYZフィールドに別々の値を入力すれば、楕円体になります。
Center
メタボールの中心。この値は、メタボールを作成する時にクリックした位置で更新されます。
Rotate
メタボールの中心を基準とした回転。
Weight
メタボールが周辺のメタボールを“引っ張る”度合い。
Kernel Function
|
Blinn |
Weightが1.0未満であっても、常にブロッブの中心に球を配置します。すべてのモデルの中で一番高速で安定しています。 |
|
Wyvill |
WyvillとElendtのモデルは、非常に似ています。ウェイト分布の関数のみが異なります。 |
|
Elendt |
一番速いメソッドで、一番単純な近似計算なので、ウェイト分布の観点では、他の関数ほど滑らかにならない場合があります。 |
|
Links |
区分的多項式。 1 - 3*t*t, t < 1/3 1.5 * (1 - t)^2, t < 1 |
|
RenderMan |
PixarのRenderMan(またはRIB互換レンダラー)で使います。以下の計算で定義します。 Density = 1 - 3*R^2 + 3*R^4 - R^6 |
|
Hart |
数学者John Hart提案のカーネル関数。 1 - 6*t^5 + 15*t^4 - 10*t^3 |
XY Exponent
XY軸方向での膨張/収縮を決めます。
この指数は、以下のように、メタボールを“四角形”に近づくように膨張、または“星形”に近づくように収縮します:
> 1 = 星形に近づきます。 < 1 = 四角形に近づきます。1 = 球になります。
Z Exponent
Z軸方向での膨張/収縮を決めます。
Examples ¶
BlendMetaballs Example for Metaball geometry node
このサンプルは、メタボールがフォースとして作用することを基本的な例を使って説明しています。メタボールはMetaball SOPで作成することができます。
Point SOPは、各フォースがお互いに引き寄せられた状態のメタボールを視覚的に表現するために使用しています。
MetaExpression Example for Metaball geometry node
このサンプルでは、Attribute Create SOPのmetaExpressionを使ってメタボールを色々な方法でくっつける方法を説明しています。
See also |