SSブログ

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
  • メディア: 単行本(ソフトカバー)





サイト内を検索

タグ:Android OpenGL
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
  • メディア: 大型本

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