2011年11月30日

クォータニオンによるボーンの回転

クォータニオンとボーンについての解説は省きます。

クォータニオンを使って回転を合成し、ボーン1にはボーン1の回転が、ボーン2にはボーン1とボーン2の回転、ボーン3にはボーン1とボーン2とボーン3の回転を与えます。
これにより、人間の関節やロボットアームのような複雑な動きを表現する事が可能になります。

クォータニオンによる回転の合成は、クォータニオンの積の計算によって求まります。 ただしOpenGL ESの場合、クォータニオンのままでは座標変換が行えないため、クォータニオンを座標変換行列に変換する必要があります。
※動画キャプチャの都合上、端末(SC-01C)で遅回しして編集で早回し




全てのボーンが同じ原点を共有して回転してしまっています。
パタパタママのようでもありますが、表現したい事はこれではありません。


2011年11月23日

OpenGL ES 2.0と1.1の処理速度を比較

OpenGL ES 2.0と同程度の処理をES 1.1で実装し、処理速度を比較しました。 全く同じ処理をしているとは言えないため、厳密な比較ではありませんが。
※端末はSC-01C



左がOpenGL ES 1,1、右がOpenGL ES 2.0です。
オブジェクトを200個描画し、秒あたりのポリゴン数を計測しました。TPSはtriangles/sec。

予想に反し、OpenGL ES 2.0の方が処理性能が高くなっています。
OpenGL ES 2.0がプログラムシェーダだからと言って、処理速度が見劣りするという訳ではないようです。

このテストは平行光源を一つのみ配置して行いましたが、OpenGL ES 1.1では最大8つライトを配置できます。
OpenGL ES 1.1で8つの平行光源を配置して測ったところ、このような結果でした。


少し処理速度が落ちています。
一方、OpenGL ES 2.0で光源を増やせば、処理速度が落ちるのは自明です。
つまりどちらを採用するにせよ、光源は少ない方が処理速度は上がる、という事になります。

2011年11月22日

OpenGL ES 2.0 test4(for Android)

物体の質感を表現する。
※動画キャプチャの都合上、端末(SC-01C)で遅回しして編集で早回し

 


側面はペイントでベタ塗りしただけの手抜きです。

1つ目は拡散光のみを表現したモデル、
2つ目は環境光、拡散光、反射光を表現したモデルです。

反射光によって金属のような光沢感が表現され、絵がくるくる回るだけの状態よりは少しリアリティが増しています。


OpenGL ES2.0は、これらのシェーディング処理をシェーダプログラムで実装しますが、環境光と反射光のコードを追加した結果、フレームレートが60→40台に低下しました。
(動画は遅回しのため変化していません)

実際に追加したコードは僅か2、3行で、それも頂点シェーダ側です。それでもここまで速度低下を招くのは意外でした。

OpenGL ES 1.1よりも、上位のOpenGL ES 2.0の方が全てにおいて優れている、という訳ではないのかもしれません。同程度のシェーディング処理だとパフォーマンス的にどちかが優位なのか、比較検討する必要がありそうです。

2011年11月18日

OpenGL ES 2.0 test3(for Android)

テクスチャを貼れるようにする。
※動画キャプチャの都合上、端末(SC-01C)で遅回しして編集で早回し

 

テクスチャとフラットシェーディングだけでもそれなりにリアルな絵になります。
繰り返し見てたら目が回りました。

カメラビューにこの矢印を重ねて、拡張現実的な道案内アプリなんてのもいいかもしれません。
更に空間認識技術で、GPSの測定誤差を補正してくれたり、
道路に誘導ラインが表示できるようになれば、地図アプリなんて不要になりそう。

2011年11月15日

OpenGL ES 2.0 test2(for Android)

処理能力を確認するため、ポリゴン数の多いオブジェクトを表示する。
※動画キャプチャの都合上、端末(SC-01C)で遅回しして編集で早回し


これでポリゴン数380。
60fpsを下回ってるので、既に処理能力の限界に達している事が分かります。
ただ高速化の手法は使ってないので、実際はもっと処理能力を高められるはずです。
 
当初は数万ポリゴンのオブジェクトを作成したものの、定数データが多すぎてコンパイルエラー。
これはAndroidというより、Java自体が65,536バイト以上の定数データを扱えないようです。
1000ポリゴン程度でもこの上限に引っかかるため、ちょっと複雑なオブジェクトになるとソースにデータを直接埋め込むようなお手軽方法は使えない、という事になります。


2011年11月14日

OpenGL ES 2.0 test1(for Android)

OpenGL ES 2.0(for Android)の学習を始めました。

まずは、立方体をフラットシェーディングで表示する。
サンプルプログラムをちょっと変えて楽しようと思いましたが、手こずったので最初からプログラムを組みました。
動画キャプチャの都合上、端末(SC-01C)で遅回しして編集で早回しです。




参考文献。
巻末のAndroid用プログラムはES 1.0用ですが、サイトからES 2.0用プログラムがダウンロードできます。
ES 2.0に関してはまだネットの情報が少ないのでもっと書籍が欲しいところです。

2011年11月7日

HomeCompass::Update Ver.1.0.6

Ver.1.0.6版を公開しました。

方位センサ異常を無視する設定にすると、方位センサ異常を通知するメッセージが表示される不具合を修正しました。


2011年11月5日

HomeCompass::Update Ver.1.0.5

Ver.1.0.5版を公開しました。


コンパスのオーバーレイ表示

ホームコンパスを、他のアプリの上に重ねて表示できるようになりました。
目標の方向を確認しつつ、他のアプリを操作できます。




※Googleマップ上に重ねて表示


2011年11月2日

Study Timer::0.9.0.15リリース

時刻に秒表示を追加しただけです。


大きさが変更できて、秒が表示できるデジタル時計ソフトが必要だったんですが。
探したんですが見つからなかったので、自分のソフトを修正して使っています。

Vectorよりダウンロードできます。

2011年8月13日

HomeCompass::Update Ver.1.0.4

Ver.1.0.4版を公開しました。

・方位磁針の追加

設定でONにすると、左下に小さく表示されます。



矢印の方向がおかしいと感じた時は、方位磁針を表示して
正しい方位を指しているか確認してみてください。
狂っている場合、近くに磁気があるかセンサーの調整不足が考えられます。

なお本アプリは真北を基準にしていますので、永久磁石の方位磁針が示す磁北とはずれがあります。

2011年7月5日

HomeCompass::Update Ver.1.0.3

Ver.1.0.3版を公開しました。

・安定性の向上
・描画が遅い場合、矢印サイズをリセット

矢印が大きいと、動作が重くなって操作を受け付けなくなる
不具合があったため、対策を行いました。

タブレットなど大画面タイプのAndroidでも、安定して動作すると思います。

2011年6月23日

Study Timer::0.9.0.14リリース

Ver.0.9.0.13でバグが発見されました。
反復回数が2以上の項目で、作業開始のログ記録が1回しか行われません。
これにより、反復2回目以降の作業時間が集計されなくなってしまいます。

このバグの修正版は以下よりダウンロードできます。
Vectorは差し替え申請中です。

http://hp.vector.co.jp/authors/VA048156/

Ver.0.9.0.12以下、または反復回数が1の項目であれば、このバグは発生しません。

2011年6月4日

HomeCompass::Language

誤訳、他言語サポートについての要望などはこちらへコメントしてください。

Mistranslations and other language support requests, please comment here.

2011年6月1日

HomeCompass::Update Ver.1.0.1

Ver.1.0.1版を公開しました。


PC版のAndroidマーケットの説明が更新されていないようです。
更新内容は以下のとおりです。

新しい機能:
・99まで場所を登録できるようにした
・現在地を登録できるようにした
・矢印の最大サイズを指定できるようにした
・距離に関係なく、GPS更新間隔を最短に設定できるようにした

バグ修正:
・住所検索時のフリーズ
・矢印が欠ける不具合

自宅に限らず、複数の場所を登録できるようになりました(お気に入り登録)。
勤務先・旅行先の、避難場所や最寄駅などを予め登録しておく事ができます。

現在位置を離れて、また現在位置に戻ってくる必要があるときは、
現在地の登録機能が役立ちます。

矢印の最大サイズ指定は負荷対策です。
大画面タブレットでは、矢印が大きく表示され動きが重くなってしまいます。
動きが重いと感じたらサイズを小さくしてみてください。


初心者が戸惑わないよう、新しい機能はデフォルトでOFFになっています。
設定で機能をONにするとボタンが表示され、新しい機能が使えるようになっています。

2011年5月23日

Home Compass::English

(日本語)

Home Compass (for Android) support homepage.

Your feedback, please comment to:
・Language support -> here
・Other -> here


Overview
Use situation
Download
About Geomagnetism sensor
About power consumption
About input of the address
How to use the favorites feature
How to use "set target on the current location"
Supplements on the preference screen
Supplements on the main screen


========================================
★Overview
========================================
It's a compass for going home (or refuge) at disaster outbreak.
This software determines current position only in a GPS satellite and
is not affected by the network obstacle.

This software is not many functions so that anyone is easily usable.
Arrow shows the direction it is easy to see even smaller screen.

A flashlight and an SOS light features are attached.


========================================
★Use situation
========================================
・Transportation was paralyzed by accident occurrence,
and a map apps also fell into not ready by network failure.

・I encountered an earthquake at a travel destination,
and I'd like to take refuge in a hill right now.
But there is no time to look a map.

・It is possible to go home safely
if the child or the elderly person have the smartphone.

・A network can be used, but I also walk for several hours.
So the communication charge is worried a map apps.

・Even if I walk while looking a map,I'm lost.
But I have sense of direction, and there is probably a problem with
a map apps.I have sense of direction certainly.

When this apps also registers a target, a network is used.
It's necessary to prepare for an accident and finish
registration of a target beforehand.


========================================
★Download
========================================
Android Market,or please search for "homecompass" by a market application of Android.


========================================
★About Geomagnetism sensor
========================================
Methods for coordination of a geomagnetism sensor,
please check the instruction manual of the smartphone.


========================================
★About power consumption
========================================
As for the GPS measurement and the screen display, power consumption is large.
And, the battery is consumed early.

The consumption of the battery can be suppressed by pushing the power supply button, and making it to sleep mode.

The GPS measurement is done every minute at sleep mode.
To stop the GPS measurement completely, the application program is ended with the Back button.


========================================
★About input of the address
========================================
It's possible to input the address and a place name and search for a place.
(When a button of the magnifying glass icon is touched, it's searched for.)



========================================
★How to use the favorites feature
========================================
By default, this feature is not displayed.
Please touch a "pref." button, and check a checkbox
[Other features]->[Use favorite feature].


"★" button is shown in main screen.


========================================
★How to use "set target on the current location"
========================================
By default, this feature is not displayed.
Please touch a "pref." button, and check a checkbox
[Other features]->[Can set target on the current location].


"Here!" button is shown in main screen.


========================================
★Supplements on the preference screen
========================================

・Max arrow size
When an arrow is large, processing is burdened.
Please adjust the most large size according to the performance of
the smartphone.

・Shortest GPS intervel
By default, when a target is far, to save the power consumption,
a GPS measurement interval becomes long.
When I approach a target, a GPS measurement interval becomes short.
When the shortest course always does a GPS measurement interval in
spite of the distance, please check a checkbox.


========================================
★Supplements on the main screen
========================================



・Current
This number represents the current position of GPS has shown.
Latitude, longitude, magnetic declination.

・Accuracy
This number represents the GPS measurement error.
Error of the distance(m), measurement time (nn seconds ago)
The actual location isn't always in the reach of error of distance.