SSブログ

AREarthroid Android 4.0対応 TRANSLUCENTがだめ [Androidアプリ AREarthroid]

久しぶりのブログ更新である。

本日のネタもAndroid。仕事がひと段落したので、AREarthroidのバージョンアップを行っている。

Android 4.0で動かした時に、背景がクリアされない現象は、どうも合成のために、OpenGLのサーフェースをTRANSLUCENTにするとダメになることが判明。
カメラプレビューと、OpenGLの画像を合成することで、AR的な画像が表示できる。OpenGLの背景の部分が、カメラプレビューになる、ということ。

GLSurfaceViewのコンストラクタで、以下のようにして設定を行っている。

    setEGLConfigChooser(8, 8, 8, 8, 16, 0);
    getHolder().setFormat(PixelFormat.TRANSLUCENT);
    renderer = new OpenGLRenderer();
    setRenderer(renderer);
    setRenderMode(RENDERMODE_WHEN_DIRTY);


最初は、カメラプレビューしていない状態から始まる。TRANSLUCENTになっていても、glClearで問題なく背景がクリアされていたが、Android 4.0になってから挙動が変わったらしい。
glClearでクリアする色のアルファ値を1.0に変更したところ、ちゃんと背景がクリアされるようにはなった。しかし、アルファブレンドで処理している部分に、残像が表示されてしまう。キャプチャできればよいのだが、残像はキャプチャできなかった。

TRANSLUCENTの設定をコメントアウトしてやってみると、残像が消えた。カメラプレビューのサーフェースにごみが書き込まれてしまっているのか?アルファ値が怪しそうなのだが...

TRANSLUCENTの設定をコメントアウトすると、当然ながら背景が透けない。カメラプレビューと合成できない。プレビュー開始時に、TRANSLUCENTの設定を行ってみると、ちゃんと合成された。
プレビューを終了する際に、元に戻したいのだが、どうすればよいのかわからない。プレビューは終了するが、残像が発生してしまう。カメラプレビューのON/OFFの方法に問題があるのかも?

とりあえずは、4.0の場合、TRANSLUCENTの設定をしないことで逃げることに。

ローパスフィルタ

ご存じのようにセンサーからの生データをそのまま使用すると、ノイズが多く、手ぶれ状態になる。ローパスフィルタをかけて、滑らかにしないと画面がブレてみれたものではない。原理は異なるが、ソフトウェアでVRをかける感じ。
AREarthroidでは、こんな感じでフィルタをかけている。

	public void onSensorChanged(SensorEvent event) {
		float alpha = 0.8;
		// ローパスフィルター
		accelerometerValues[0] = alpha * accelerometerValues[0] + (1.0f - alpha) * event.values[0];
		accelerometerValues[1] = alpha * accelerometerValues[1] + (1.0f - alpha) * event.values[1];
		accelerometerValues[2] = alpha * accelerometerValues[2] + (1.0f - alpha) * event.values[2];
	}


ここで、alphaの値を0.9とかにすると、滑らか度が増す。かわりに、反応は悪くなる。0.7にすると、反応はよくなるが、ブレブレな感じは増す。
AREarthroidでは、強、中、弱の設定が可能なようにした。

objファイルの選択

課題となっていた、objファイルの選択は、暗黙的インテントでファイルマネージャを起動することで行うことにした。以下のような、インテントを投げると、ファイルマネージャが起動する。

	Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
	intent.setType("text/plain");
	startActivityForResult(intent, REQUEST_CODE_PICK_OBJ);


ファイルマネージャに、拡張子の登録がないと、リストされないが、そこまで面倒をみるのは大変。ユーザーに、やってもらうことにする。
ファイルマネージャ的なアプリが入っていないと、何も起動しないかも。
アクセス権の問題があるので、ローカルファイルにコピーしてきて、3Dデータを読み込む。obj形式の3Dデータには、マテリアルファイルが別にあるので、こちらのファイルも別途インポートしてもらう。少し手間がかかるが、しょうがない。

読み込んだ3Dデータの大きさは、スライドで調整できるようにした。調整できないと地球サイズのガンダムになってしまう。

超巨大ガンダム.png

関連ページ
http://asai-atsushi.blog.so-net.ne.jp/2012-06-12

回転マトリックス

AREarthroidでは、端末向きを計算して、カメラの位置を計算している。これが、ちょっとまどろっこしい方法になっていたので、getRotationMatrixで得られる回転マトリックスで回転させる方法に変更。
これで、少しブレブレ感を抑えることができた。また、カメラ位置の計算方法が変更になったので、地球から離れた位置からみたときの挙動が変わった。スペースシャトルから地球を「見下ろしている」感じになる。これがなかなか「かっこいい」。
端末を四方に並べてみたら、かなり面白そう。車に積んでみるのもいいか。

衛星軌道からの眺め1.png衛星軌道からの眺め2.png

AREarthroid


サイト内を検索

nice!(0)  コメント(0) 
共通テーマ:携帯コンテンツ

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。



Copyright Atsushi Asai Google+朝井淳
[改訂第4版]SQLポケットリファレンス

[改訂第4版]SQLポケットリファレンス

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/02/18
  • メディア: 単行本(ソフトカバー)

イラストで理解 SQL はじめて入門

イラストで理解 SQL はじめて入門

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2019/05/16
  • メディア: 単行本(ソフトカバー)

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2015/03/03
  • メディア: 単行本(ソフトカバー)

Access クエリ 徹底活用ガイド ~仕事の現場で即使える

Access クエリ 徹底活用ガイド ~仕事の現場で即使える

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/05/25
  • メディア: 大型本

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。