06.モデルデータファイル読み込みを作る

(開発環境として「Eclipse」を使用した、古い情報です。
 開発環境として「Android Studio」を使用した、新しい情報は、
 「ホーム > プログラミング > モデルビューアを作る ( Android + OpenGL ES 1.0/1.1 ) ( Android Studio 2.3.3 版 )」)

05.で作成したモデルビューアは、表示するモデルデータをアプリケーション内で定義していました。
モデルデータファイル読み込み処理を作成し、05.で作成したモデルビューアを、ファイルからモデルデータを読み込んで描画するようにします。(アスキー形式STLファイル読み込み処理を作成します。)

使用開発環境は、Eclipse 3.7.2 ベースの Pleiades です。

解説

Android APIには、標準では、ファイル選択に関する関数、クラスは用意されていないので、自作します。
ファイル選択アクティビティ ( Activity + ListView + 拡張子フィルタ ) のページのファイルを流用します。

アスキー形式STLファイル読み込み処理を作成します。

ファイル選択アクティビティを呼び出す項目を、オプションメニュー項目として追加します。

実装

プロジェクトを開く

05.で作成したモデルビューアプロジェクトを開きます。

STLファイル読み込みクラスの作成

STLファイルの読み込み処理を担うクラスを作成します。

パッケージエクスプローラで、作成したプロジェクトの下の「src」の下の作成したパッケージを右クリックし、 右クリックメニューの「新規 > クラス」 を選択します。


名前 にクラス名「StlFileLoader」、
を入力し、「完了」ボタンを押します。

StlFileLoaderクラスの中身を以下のようにします。

モデルビューアビュークラスにモデルファイル読み込み関数の追加

モデルビューアビュークラスにモデルファイル読み込み関数を追加します。
処理内容は、
・StlFileLoaderクラスのload関数の呼び出し
・StlFileLoaderクラスのload関数の結果のモデルデータを、RendererオブジェクトのsetModel関数で、セット。
・再描画要求の呼び出し

ファイル選択アクティビティ関連ファイルの追加

Android APIには、標準では、ファイル選択に関する関数、クラスは用意されていないので、自作します。
ファイル選択アクティビティ ( Activity + ListView + 拡張子フィルタ ) のページのファイルを流用します。
ファイル選択アクティビティ ( Activity + ListView + 拡張子フィルタ ) のページのサンプルプロジェクト (FileSelectionActivityExtFilterSample.zip)の中の

を下記手続きでプロジェクトに配置します。

  1. FileSelectionActivityExtFilterSample.zip をダウンロードし、適当なフォルダに解凍します。
  2. Windowsのエクスプローラで、モデルビューアプロジェクトのフォルダを探します。
  3. プロジェクトのフォルダの下の「src」フォルダを掘り下げ、「modelvieweretude」フォルダを探します。
  4. 「FileInfo.java」「FileInfoArrayAdapter.java」「FileSelectionActivity.java」ファイルを、「modelvieweretude」フォルダにコピーします。
  5. Eclipseのメニュー「ファイル > リフレッシュ」を選択します。
  6. 「FileInfo.java」「FileInfoArrayAdapter.java」「FileSelectionActivity.java」ファイルの、package宣言を修正します。

メインアクティビティのオプションメニューにファイル選択に関する項目の追加

メインアクティビティのオプションメニューにファイル選択に関する項目を追加します。メニューのファイル選択を選択したときの処理も追加します。

メニューのファイル選択を選択したときの処理として、インテントを介してファイル選択アクティビティを起動する処理を記述します。

ファイル選択アクティビティの初期フォルダに関するメンバ変数も追加します。

メインアクティビティクラスにファイル選択アクティビティの結果に関する処理の追加

メインアクティビティクラスにファイル選択アクティビティの結果に関する処理の追加します。

処理として、選択したファイル名を引数として、モデルビューアビューのloadModelFile関数を呼び出す処理を記述します。

モデルビューアビュークラスのモデル作成処理の削除

3. で作成した、モデルビューアクラスのモデルデータ作成処理は不要なので削除します。

AndroidManifest.xml へのファイル選択アクティビティの追加

「FileSelectionActivity」を使用するためには、AndroidManifest.xml に、「FileSelectionActivity」に関する記述を追加する必要があります。

AndroidManifest.xml に
<activity android:name="FileSelectionActivity"></activity>
という記述を、直接追記、もしくは、GUI操作で追記します。

実行

Android Virtual Device にて、動作確認。

※ ターゲット:「Android 4.0.3 - API Level 15」、ハードウェア:「GPU emulation」をyes、として作成したAndroid Virtual Device にて動作確認。

実行し、アスキー形式STLファイルからモデルデータを読み込んで描画できるようになっていることを確認します。

起動直後


ModelData01.stlファイルの読み込み


ModelData02.stlファイルの読み込み

ダウンロード

サンプルプロジェクト

サンプルモデル(ModelData01.stl)

サンプルモデル(ModelData02.stl)

関連ページ

前項目:05.モデルビューアレンダラクラスを作る

次項目:07.描画速度の計測