ちょっと勉強がてら。

細胞分裂みたい。 気分は河口洋一郎w
最初はMathematicaで、整数計画法とか、Reduce関数による不等式の解き方を勉強してたはずなのですが、知らないうちに脱線(汗
単純にメタボールでCGを作るだけなら、Blenderでやったほうが速いですけど。(Blenderなら 球をマウスでドラッグすると、リアルタイムでグリグリくっついたり離れたりしますし)
メタボールというのは、電子のような仮想的な、「近づけると、くっついちゃう球」 を使って、有機的な局面をモデリングする手法。詳しくはgoogle先生で。
NHKの番組「人体」でも使われました。
昔はPCのメモリが少なかったので、滑らかな曲面を使いたいとき、ポリゴンよりも重宝されたのです。(昔話)
以下はMathematica用のプログラム。
tの値を適宜変えてやると、4つの球が近づいたり離れたりします。
t=2.5;
plist={ {t,0,t},{-t,0,t},
{t,0,-t},{-t,0,-t} };
e=Compile[ {x,y,z},
9/ ( x^2 + y^2 + z^2 +1*^-5)];
p={x,y,z};
RegionPlot3D[
Total[e@@(p-#)&/@plist] >3.2,
{x, -6, 6},
{y, -6, 6}, {z, -6, 6},
Mesh -> False, PlotPoints -> 35,Axes->False,Boxed->False]
IronPython側で、適宜 tの値を変更して アニメを作成しました。
今回使ったのが、RegionPlot3D関数。空間中の、与えられた条件を満たしているところを3DCGで表示してくれます。便利。
Tags: 3DCG, CG, MathematicaRelated posts
タグ: 3DCG, CG, Mathematica