2009/04/19

Cubing Timer ver1.2

昨日ですが、ようやく審査が通りました。
新機能は以下になります。
お待たせしました。これでスクランブル後の色配置を見る以外はできあがって、練習用に使えるようになったかと思います。

JP
- 計測履歴をメールで転送できるようになりました。
- ローリング計測ができます。(12回以上計測するとローリングアベレージ表示になります)
- 計測結果を消去して再計測ができるようになりました。
- OS2.0以降に対応。

ENG
- You can send the measurement history by mail.
- You can measure rolling average. (It is changed to the rolling average mode when measuring it more than 12 times. )
- You can delete the measurement result, and can measure it again.
- It can run in OS2.0 or later.

ズーム機能


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

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

2009/04/18

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


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

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

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

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

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

2009/04/17

色塗れるぞ


 パレットで選んで、ブロックに色を付けられるようになりました。ただ、塗る先の選択がなかなか思った通りにいかないので、座標の判定方法を変えてみました。
 以前は、3D空間上の座標をスクリーン座標系へ変換し、スクリーンをタップした座標を比較、あたったもののうち手前にあるものを優先で選択させるという方法をとってましたが、今回はカメラ座標からスクリーンをタップした座標を通過するベクトルが、3D座標上のブロック(球で判定してますが)にあたるかどうかを判別し、手前のものを優先するとしました。ま、ちょっとはましになったけど、やっぱ奥のものを選ぶのが難しい。混み合っているところを選択させるには、カメラのズームを入れないとだめかもですね。なにかいいズームのUI考えないとね。

2009/04/15

パレット作成中...


結構おしゃれにできてきたんではないかと。

これでカラー選択して、ボックスに塗っていければなと。

2009/04/12

コマンドメニューつけてみた


掘削の機能をいろいろ用意して、選ばせるメニューをつけてみた。武器とか並んでて楽しそうでしょw

・手袋:物体を回してみるモード
・短剣:1個づつブロックを消すモード
・モーニングスター:中心の1個とその周り上下前後左右を1個づつ消すモード
・長剣:なぞった部分を貫通しながらズバズバ消していくモード
・岩:ブロックを1個追加するモード

ってのをとりあえず実装。消すモードはいいんですけど、追加するモードの追加部分の選出がうまくいかないなぁ。一番手前でなおかつ隣り合うブロックが存在していることを条件にしているけど、それだと思った場所にブロックを置けないことがあるんですわ。見えてる中で一番奥ってのを割り出せるといいんですけどね。

・フラスコ:色をつける
・本:セーブとか

なんてのを考えてますが、当分先かな。

2009/04/10

Cubing Timer またもリジェクト

メール送信についてのUI設計に問題があるとのことです。これについては指摘はありませんでしたが、履歴の削除ボタンや全選択ボタンについても同様のことがいえますね。要は何かを行おうとした際に、条件を満たしていなくて実行できない状態であることをユーザーにわからせないといけない、あるいは、実行できない状況であれば、原因はともかく実行できないんだなと思わせるようなアフォーダンスが無いとならないわけですな。至極当たり前のことでした。チェック不足というか、自分本位になりすぎてたな。反省します。

現状は、履歴が1つも無い状態で削除ボタンやメールボタン、全選択ボタンを押しても何も起きない。全選択ボタンは反応がないだけでまだましだが、削除やメールについては「メール送信しますか」のようなダイアログを出して実行させた上で何も起きないので、たちが悪いですね。

本日訂正版を提出できそうなので、新バージョンはまた来週までお待ちください。