10. マテリアルの効果の利用

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

マテリアルの効果を利用すると、描画されるモデルに質感を与えることができます。
09.で作成したモデルビューアにマテリアルの効果を付加します。

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

解説

09. で作成したモデルビューアは、色設定をマテリアル設定として使用して光源の効果を利用した描画をおこなっていました。

色設定をマテリアル設定として使用した描画では、質感の表現力は十分ではありません。
マテリアル設定を使用した描画をおこないます。

実装

プロジェクトを開く

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

面に対してマテリアルの効果を有効にする

面に対してマテリアルの効果が有効になるように
モデルビューアレンダラクラスのモデルレンダラ関数の実装を変更します。

面の描画処理の、

gl.glEnable( GL10.GL_COLOR_MATERIAL );
gl.glColor4f( 0.5f, 0.5f, 0.0f, 1.0f );

をコメントアウトし、
直後に、

float f4Ambient[4] = { 0.25f, 0.20725f, 0.20725f, 1.0f };
::glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT, f4Ambient );
float f4Diffuse[4] = { 1.0f, 0.829f, 0.829f, 1.0f };
::glMaterialfv( GL_FRONT_AND_BACK, GL_DIFFUSE, f4Diffuse );
float f4Specular[4] = { 0.296648f, 0.296648f, 0.296648f, 1.0f };
::glMaterialfv( GL_FRONT_AND_BACK, GL_SPECULAR, f4Specular );
float fShininess = 0.088f;
::glMaterialf( GL_FRONT_AND_BACK, GL_SHININESS, fShininess );

を追加します。

モデルビューアレンダラクラスに、マテリアル設定のメンバ変数を追加し、コンストラクタにマテリアル設定の構築処理を追加します。

実行

Android Virtual Device にて、動作確認。

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

実行し、sphere.stlファイルを読み込み、真珠のような質感でモデルが描画されているのを確認します。
(点、線を非描画設定)


参考)9.で作成したモデルビューアで、sphere.stlの読み込み
(点、線を非描画設定)

ダウンロード

サンプルプロジェクト

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

関連ページ

前項目:09.光源の効果の利用

次項目:11. 「面はすべて同一のマテリアル設定」ではないモデルファイルの描画に対応する