ラベル RayCast の投稿を表示しています。 すべての投稿を表示
ラベル RayCast の投稿を表示しています。 すべての投稿を表示

2009/04/19

ズーム機能


 ズーム機能を入れました。あと、カメラを回す機能もついでに。インターフェース的には左下のアイコンを触れているときだけ臨時で機能がオンになる仕様。これならiPhoneを左手で持ちながら一時的にズームにして、右手で色を塗ったり操作できるという感じになります。

 こないだのレイキャストによるコリジョン計算が、プロジェクションの逆マトリクスを使用して原点からカメラ座標へ逆変換するということをしてるのですが、この逆変換がどうやらカメラの移動に関しては効かない様子。カメラ座標を若干移動した分に関しては自前で逆変換しないとだめなようでした。

2009/04/18

より正確なコリジョン計算を


 なかなかいろいろな進展がありました。

 まずは、描画で、面と面の継ぎ目部分をつないでしまうと隣の面の側面が表面まで出てきてチラチラしてしまう問題がありましたが、それを完全に解消しました。隣のキューブの存在の有無を調べてそれに応じて面の表示をするかどうかを変えるようにしたところ、表示もきれいになったのは当然として(左の画像)、画面に描画されている無駄なポリゴンがなくなったことでだいぶ高速に動作するようになりました。いまでは20x20x20くらいでもヌルヌルです。

 そして、コリジョン関係をより丁寧なものに変更。見えている中での判別としたかったので、キューブが隣り合う面のどちらから見えているのかによってオブジェクトとしての法線を用意し、その法線とレイキャスト用のベクトルでキューブが見えているかどうかを判定するようにしました。それによって、すべてに対してレイキャスト計算をしないでよくなったため、若干の高速化も達成。高解像度キューブでの動作が多少快適になりました。

 あと、カメラ操作。ちょっとしたアイデアでしたが、画面端の方をフリックする際には視点座標系のZ軸を中心に回転するようなニュアンスにしました。普通の3Dツールだとそういうのはありませんが、これはこれでいい感じかと。

 そんなこんなで盛りだくさんな更新でした。そろそろ完成が見えてきたかな?