メタボールの分布式とその形状

メタボールとは?

メタボールは,簡単に言えばメタボール同士で相手を引っ張り合う性質を持つ形状のこと.

メタボールが引っ張り合う図.
2つのメタボールが引っ張り合っている.

メタボールを表現する式

CGで使われるため,何らかの計算式からどのように引っ張り合うかを求めている.このことを踏まえて,メタボール濃度分布で表現される球(の集合)のことを指す.そして, 濃度分布の計算式は以下の通り.

D(r) = D_{\rm{center}} \exp(-ar^ 2)
  • D_{\rm{center}}は球の中心の濃度
  • aは濃度の減衰定数
  • rは球の中心からの距離
  • D(r)は距離rにおける濃度

3次元空間で原点にメタボールがあるとr = \sqrt{x^ 2+y^ 2},つまりr^ 2 = x^ 2+y^ 2であるため,

D(x, y) = D_{\rm{center}} \exp(-a(x^ 2+y^ 2))

と表せる.図で見てみよう.数式を入力するとプロットしてくれる便利なWebサイトがある.

Wolfram|Alpha: Computational Intelligence

プロット結果と等高線は以下の通り(D_\rm{center} = 1, a=1).

メタボールが引っ張り合う

メタボールが引っ張り合う時の分布は,メタボールの濃度分布の和で表現できる.

原点にあるメタボールは以下の式で表される.

D_1(x, y) = D_{\rm{center}} \exp(-a(x^ 2+y^ 2))

原点からx方向にx_0分だけ移動したメタボールは以下の式で表せる.

D_2(x, y) = D_{\rm{center}} \exp(-a( (x-x_0)^ 2+y^ 2))

このメタボール2つで表される濃度分布は

D(x, y)=D_1(x,y)+D_2(x,y)

と表せる(ただし,しきい値以上とする場合もある).これも図で見てみよう.

Wolfram|Alpha: Computational Intelligence

プロット結果と等高線は以下の通り(D_\rm{center} = 1, a=1, x_0=-2.25).

等高線は,メタボールが引っ張り合ったときの形になっている. x_0の値を変更すれば,メタボール同士がどの程度引っ張り合うのかがわかる.

メタボールの打ち消し

片方だけD_\rm{center} = -1としてみると,プロット結果と等高線は以下の通り.

軟式のテニスボールが凹んだような形状になる.

濃度分布が有限の範囲の分布関数

今までは,メタボールは以下の分布式で表した.

D(r) = D_{\rm{center}} \exp(-ar^ 2)

この分布式では,無限の範囲に分布を持つため形状の局所的な変更が難しい.そのことから,有限の範囲に絞った式も存在する.

\begin{eqnarray}D(r) =  \begin{cases} D_\rm{center}(1-(\frac{r}{R})^ 2 )^ 2 & (0 \leq r \leq R) \\\\  0  & (R \lt r)  \end{cases}\end{eqnarray}