■ [AR][ARToolKit]ARToolKitを試してみた(5)
そろそろ休みも終わってしまうので、最後にちゃんとARを活用できるよう、PhysXの物理計算と組み合わせてマーカーにオブジェクトを乗せて動かせるものを作ってみた。物理計算を組み込むのは面倒臭そうだったので後回しにしてたのだけど、実際にやってみるとPhysXのライブラリがシンプルで使いやすかったおかげもあってかなり短時間で実装でき、ARToolKitの座標系のZ軸が上向きなのでその対応に少し手間取ったくらいであとは特に詰まるような部分はなかった。
ブロックを板の上にのせて移動。
板の上に物が乗っているときに、マーカーの認識誤差や手の震えのブレを拾って物理計算が発散して吹き飛んだり、ちょっと板を動かすだけで物体があらぬ方向に飛んでいってしまう事故が多発したので、対策として基準マーカーのマトリクスは10フレームくらいの平均を取るようにしてみたり、物体の密度を高くして慣性モーメントを増やしたりなどの調整をしてみた。ブレでおかしな動きになるのは改善されたものの、大きく動かすと飛んでいってしまう問題は完全には解決できず。
また、傾けたり動かしたりしているときにマーカーがカメラから見て裏向きになって認識しなくなったり、他のマーカーと重なったりして誤動作を起こすことも多いので、物体を思い通りの場所に運ぶのは相当に難度が高い。あと、影がないので位置関係がわかりにくいのも問題か。
きっと2枚同時に使えばオブジェクトを挟めるので簡単に動かせるに違いない、思って複数マーカー対応も試してみたのだけど、これもあまり上手くいかず。ただでさえ扱いにくいのに、操作するものが2つになったせいでマーカーが隠れることが多くなり、動きの自由度が減って操作ミスが増えたのと、相変わらずちょっと力加減を失敗するとすぐに意図しない方向に飛んでいったりしてしまうのが主な原因。思った通りに動かせないのでかなりイライラする。しばらく調整してみたけれどこれもあまりいい改善策はみつけられなかった。
ちょっとオブジェクトの数が増ると、どこをどう動かしていいものかわからなくなってすぐに収拾がつかなくなる。とりあえず、邪魔な物体を画面外に弾き飛ばすのだけは随分上手くなった。
これを書いてる途中に思いついたのだけど、板の移動が早すぎて上に乗ってる物体が追随できないのが動かしにくい原因の一つだろうから、カメラから取得した板の位置を前フレームと補間して内部計算だけ何回も回せば改善できるのではないかという気がしてきた。いずれ試してみたい。
せっかくだからフレームレートの限界を超えて破綻するくらいまで積み上げてみた。
死屍累々。
影とかIBLとかをちゃんと入れて背景と馴染ませれば、面白い絵ができそう。