12.「面はすべて同一のマテリアル設定」ではないモデルファイルの読み込みに対応する
(開発環境として「Eclipse」を使用した、古い情報です。
開発環境として「Android Studio」を使用した、新しい情報は、
「ホーム > プログラミング > モデルビューアを作る ( Android + OpenGL ES 1.0/1.1 ) ( Android Studio 2.3.3 版 )」)
「面はすべて同一のマテリアル設定」ではないモデルファイルの読み込みに対応します。
11.のファイル読み込み処理は、アスキー形式STLファイル読み込み処理でしたが、新たに、OBJファイル読み込み処理を追加し、読み込むファイルの拡張子により、アスキー形式STLファイル読み込み処理とOBJファイル読み込み処理のどちらかが呼び出されるように変更します。
※STLファイルは、「面はすべて同一のマテリアル設定」であるモデルしか表現できませんが、OBJファイルは、「面はすべて同一のマテリアル設定」でないモデルも表現できます。
使用開発環境は、Eclipse 3.7.2 ベースの Pleiades です。
解説
以下を行います。
- モデルファイル読み込みパッケージの配置
- OBJファイル読み込みクラスの作成
- STLファイル読み込みクラスの修正
- モデルクラスのの変更
- モデルファイル読み込み処理の変更
- モデル描画処理の変更
実装
プロジェクトを開く
11.で作成したモデルビューアプロジェクトを開きます。
モデルファイル読み込みパッケージの配置
STLファイルおよびOBJファイルの読み込み処理をまとめた下記「モデルファイル読み込みパッケージ」をプロジェクトに配置します。
モデルファイル読み込みパッケージ(modelfileloader.zip)
下記手続きで「モデルファイル読み込みパッケージ」をプロジェクトに配置します。
- modelfileloader.zip をダウンロードし、適当なフォルダに解凍します。
- modelfileloader.zip を解凍するとできるフォルダを掘り下げ 「modelfileloader」フォルダを探します。
- Windowsのエクスプローラで、モデルビューアプロジェクトのフォルダを探します。
- プロジェクトのフォルダの下の「src」フォルダを掘り下げ、「modelvieweretude」フォルダのあるフォルダを探します。
- 「modelfileloader」フォルダ以下を、「modelvieweretude」フォルダのあるフォルダにコピーします。
- Eclipseのメニュー「ファイル > リフレッシュ」を選択します。
Windowsのエクスプローラでのファイル配置の様子
Eclipseのパッケージ・エクスプローラーでのパッケーチ配置の様子
モデルファイル読み込みクラスの作成
モデルファイルの読み込み処理を担うクラスを作成します。
パッケージエクスプローラで、作成したプロジェクトの下の「src」の下の作成したパッケージを右クリックし、 右クリックメニューの「新規 >
クラス」 を選択します。
名前 にクラス名「ModelFileLoader」、
を入力し、「完了」ボタンを押します。
ModelFileLoaderクラスの中身を以下のようにします。
STLファイル読み込みクラスの削除
STLファイルの読み込みは、「モデルファイル読み込みパッケージ」および「モデルファイル読み込みクラス」を使用しておこないます。「STLファイル読み込みクラス」は使用しないので削除します。
パッケージエクスプローラで、作成したプロジェクトの下の「src」の下の「modelvieweretude」パッケージの下の「STLFileLoader.java」を右クリックし、
右クリックメニューの「削除」 を選択します。
「削除の確認」ダイアログが表示されます。
「OK」ボタンを押すと、STLFileLoader.javaファイルが削除されます。
モデルビューアビュークラスのモデルファイル読み込み関数の修正
モデルビューアビュークラスのモデルファイル読み込み関数を修正します。
loadModelFile関数内の
final Model model = StlFileLoader.load( strPath );
を
final Model model = ModelFileLoader.load( strPath );
に修正します。
ファイル選択アクティビティの拡張子フィルタの修正
メインアクティビティのファイル選択アクティビティを起動する処理の拡張子フィルタに関する処理を修正します。
onOptionItemSelected関数内の
intent.putExtra( "ext", "stl" );
を
intent.putExtra( "ext", "stl; obj" );
に修正します。
実行
Android Virtual Device にて、動作確認。
※ ターゲット:「Android 4.0.3 - API Level 15」、ハードウェア:「GPU emulation」をyes、として作成したAndroid
Virtual Device にて動作確認。
実行し、アスキー形式STLファイルだけでなくOBJファイルからモデルデータを読み込んで描画できるようになっていることを確認します。
al.objファイルの読み込み
(点、線を非描画設定)
ダウンロード
関連ページ
前項目:11. 「面はすべて同一のマテリアル設定」ではないモデルファイルの描画に対応する
次項目:13.モデルファイル読み込みの進捗表示