[pukiwiki]
ちょっと勉強がてら。
http://boxheadroom.com/wp/wp-content/uploads/2009/11/metaball.gif
細胞分裂みたい。 気分は[[河口洋一郎>ググる:河口洋一郎]]w
[/pukiwiki]
[pukiwiki]
最初はMathematicaで、整数計画法とか、Reduce関数による不等式の解き方を勉強してたはずなのですが、知らないうちに脱線(汗
単純にメタボールでCGを作るだけなら、[[Blender:http://blender.jp]]でやったほうが速いですけど。(Blenderなら 球をマウスでドラッグすると、リアルタイムでグリグリくっついたり離れたりしますし)
メタボールというのは、電子のような仮想的な、「近づけると、くっついちゃう球」 を使って、有機的な局面をモデリングする手法。詳しくはgoogle先生で。
-[[ググる:メタボール]]
NHKの番組「人体」でも使われました。
昔はPCのメモリが少なかったので、滑らかな曲面を使いたいとき、ポリゴンよりも重宝されたのです。(昔話)
以下はMathematica用のプログラム。
tの値を適宜変えてやると、4つの球が近づいたり離れたりします。
[/pukiwiki]
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で表示してくれます。便利。