2009-04-16

[][]テオ・ヤンセン機構の3D化 テオ・ヤンセン機構の3D化 - Nao_uの日記 を含むブックマーク はてなブックマーク - テオ・ヤンセン機構の3D化 - Nao_uの日記 テオ・ヤンセン機構の3D化 - Nao_uの日記 のブックマークコメント

先日のテオ・ヤンセン機構のデモは、もともとはXNAで3Dで動くものを目指して作っていたものだった。

f:id:Nao_u:20090415010503j:image

XNA版での2D動作のスクリーンショット。ここまでは順調だった。

f:id:Nao_u:20090415010501j:image

上記の2D構造を、何も考えずに手前の足と奥の足のZ値をずらして3D化してみると、

f:id:Nao_u:20090415010502j:image

地面にぺしゃんこに潰れてしまった。軸が一つ増えてるので当然か。3D用にちゃんと立体として成立しているデータを作る必要がありそう。

f:id:Nao_u:20090415010457j:image

3Dの座標テーブルを手入力するのは大変なので、XSIで作ったデータを読み込めるようにしてみた。が、いろんなパターンを試してみたけどうまくいかない。

たくさんの質点を硬いバネで繋いで固定するような方式で動かしてるんのだけど、ちゃんと体を支えて力が伝えられるように立体構造にしようとすると、どうしてもリンクの接続点が増えてしまう。

点が増えると計算が発散しやすくなって安定せず、立つことはできても歩きはじめると固まってしまったり、ちょっとした衝撃で吹き飛んだりと、なかなか思ったように動いてくれない。

f:id:Nao_u:20090415010458j:image

自前の適当な物理計算に限界を感じたので、「JigLibX」というXbox360の実機でも動作する物理エンジンを使ってみることにした。

たくさんの板をヒンジで接続してそれっぽい形を組み上げてみたものの、

f:id:Nao_u:20090415010459j:image

これまた自重を支えることさえできないまま、

f:id:Nao_u:20090415010504j:image

あっさりと崩壊して弾け飛んでしまった。3Dで沢山の間接をリング状に拘束する計算は上手くやらないと発散しやすいみたい。板の厚さや重さを変えてみたけどうまくいかず。

しかも、この程度の数しか動かしていないのに10~15fpsくらいでしか動作しない。

もっとたくさんの足が繋がった大規模なモデルを出したかったのだけど、XNAで現状のやり方ではこれ以上は難しそう。

・・・というような過程を経て、結局のところあきらめて試作段階の2DのものをWonderflに移植したのが先日のデモだったりする。ここまでにそれなりの時間がかかっていただけに、とても残念な結果に。

フリーのものとはいえ、それなりにちゃんと作られていそうな物理エンジンを使っても簡単には動いてくれなかったのは予想外だった。でもやはり2Dでなく3Dであの構造が動いているところを見てみたいので、機会があればPCのBulletとかPhysXとかでやってみたらどうなるのかも試してみたい。バネの計算のやり方とかも考えないと。今後の検討課題。