So-net無料ブログ作成
検索選択

Androidアプリ開発 OBJ形式のファイルを開くために「ファイル選択ダイアログ」が欲しい [Androidアプリ AREarthroid]



えーと、本日はAREarthroid関係のネタである。
AREarthroidでは、OpenGLを使用して3Dデータを表示している。自分でモデリングして作成した3Dデータを地球上に置くことができたら、かっこいいのではないかと思っている。
しかし、プログラムが「便利かどうか」ではなく「かっこいいかどうか」で機能拡張されていく気がしてならない。いいのだろうか... まぁ、いいとしよう。

でもって、3Dデータといってもいろいろな形式があるわけだが、無難なのは、OBJ形式かなぁ。
他には、DXFとか、3DSといった形式がある。OBJ形式は、Wavefrontの汎用フォーマットなわけね。

OBJ形式といってもバイナリじゃなくてテキスト。拡張子.objだとコンパイラが生成するオブジェクトファイルのイメージが強いので、バイナリか?と思ってしまうが、テキスト形式である。

開いて見てみると、数値がたくさん並んでいるだけ。ぱっと見何がなんやらわけがわからない。まぁ、3次元での座標値が書いてあるだけなので、ファイルの内容をみても何がなんだか、らわからなくて当たり前。

まずは、読み込み部分を作るか。えーと、最初から作成するのも骨が折れるので、検索。

http://www.saturn.dti.ne.jp/npaka/android/HelloGL10_21/index.html

にあるOBJ読み込みコードを参考にして作り始めた。

えーと、OBJファイルのフォーマットがわかっていないとプログラムも作れんなぁ。
上記のサイトにフォーマットの説明もあった。

なになに、基本「行」でひとつのデータになるのね。mtlibはマテリアルデータファイルの指定か。マテリアルは別のファイルになっているのか。

gは、グループ。
vが頂点座標(XYZ)。
vtは、テクスチャマッピングの座標(UV)。
vnは、法線(XYZ)。
usemtlでマテリアル名を指定。
fでポリゴン。

だいだいわかった。
しかし、Javaで書いたら「遅そう」。と思いつつも、なんとか完成。

とりあえず、初音ミクのOBJ形式データをassets/miku.objで作成して読み込ませてみた。案の定遅い。しかもバグっていてちゃんと表示されないし。
OpenGL ESでは、三角形のポリゴンしか表示できない。四角形もあるじゃないの。
なんか、テクスチャ座標番号の入っていないところもあるし。

なんやかんやいろいろと修正。ついでにparseFloatが遅いので、C/C++で作成。少し速くなった。

でどうなったかというと、今のところ、こんな感じです。

巨大初音ミク東京駅に出現.png

巨大初音ミク東京駅に出現-2.png

スケールを自動調整しないと、だめだなぁ。いくらなんでもでかすぎ。

ガンダムも表示してみた。
日光の当たり具合で、後ろ向きじゃないと逆行で真っ黒になってしまう。

巨大ガンダム東京駅に出現.png

巨大ガンダム富士山付近に出現.png

ガンダムは、地面にめりこんでるなぁ。初音ミクは浮いてるし。標高データの精度が悪いっていうことか。これはいたしかたなしか...

どちらのデータもOBJファイルで1.3M程度の大きさ。頂点数もshortで収まっているので、2万個程度。メモリ的には大丈夫らしい。VBOにはまだしていないが、いずれはするつもり。描画速度はそれほど悪くない。読み込みには2秒程かかる。
テクスチャマッピングはしない方向で考えている。

ファイル選択したい

ここからが、本題。長い前振りであった。
外部にあるOBJファイルを選択して、AREarthroidに読み込ませたいと思っている。OBJファイルをインポートして、ローカルファイルにバイナリで保存しておけば、読み込み速度も改善されるでしょう。
それはよいとして、問題はどうやってファイル選択をするかである。画像ファイルなら、暗黙的インテントでピックアップすればよかったが、OBJファイルってテキストファイル。どういったインテントを投げればいいのやら... MIMEタイプをtext/plainにすればいいだけなのか?...
ファイルマネージャ的なアプリがインストールされていれば、そこに向かってインテントを投げてやればよさそうな気がするが、Android標準のファイルマネージャっていうのがありません(よね?)。

OBJファイルは、どこからかダウンロードしてくるであろうから、/download以下のファイルをリストするアクティビティでも作るか。/downloadならダウンロードアプリを起動すればいいかも?

ということで、ファイル選択の方法で行き詰っている。

初音ミクのOBJデータは、以下のURLにあった「Blenderデータ」を使って、適当にポーズを付けてエクスポートして作成。

キオ式アニキャラ3D act.3
http://kiomodel3.sblo.jp/

ガンダムの方は、以下のサイトにあったのを使わせてもらっている。

SeaGate Blog
http://pub.ne.jp/seagate/

他にも3Dデータがいろいろあるなぁ。Androidアプリも開発しているのか。とても参考になりそう。

AREarthroid

「かんたんAndroidアプリ作成入門」には、インテントの使い方も載ってます。

かんたんAndroidアプリ作成入門 (プログラミングの教科書)

かんたんAndroidアプリ作成入門 (プログラミングの教科書)

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



関連記事





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

nice! 0

コメント 0

コメントを書く

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


AREarthroidPro ARで地球を表示するアプリ

Copyright Atsushi Asai Google+朝井淳

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

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

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

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

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

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2015/03/03
  • メディア: 単行本(ソフトカバー)
C言語 ポインタが理解できない理由 [改訂新版] (プログラミングの教科書)

C言語 ポインタが理解できない理由 [改訂新版] (プログラミングの教科書)

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

かんたんAndroidアプリ作成入門 (プログラミングの教科書)

かんたんAndroidアプリ作成入門 (プログラミングの教科書)

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