10. マテリアルの効果の利用
マテリアルの効果を利用すると、描画されるモデルに質感を与えることができます。
09.で作成したモデルビューアにマテリアルの効果を付加します。
解説
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 );
を追加します。
モデルビューアレンダラクラスに、マテリアル設定のメンバー変数を追加し、コンストラクタにマテリアル設定の構築処理を追加します。
「Cannot resolve symbol」エラーは、「Alt + Enter」で、必要なクラスをimportします。
リビルドし、エラー、警告がないことを確認します。
実行
Android端末にて、動作確認。
実行し、sphere.stlファイルを読み込み、真珠のような質感でモデルが描画されます。
(点、線を非描画設定)
ダウンロード
サンプルプロジェクト
(github.com上のダウンロードページ)
サンプルモデル(sphere.stl)
関連ページ
前項目:09.光源の効果の利用
次項目:11. 「面はすべて同一のマテリアル設定」ではないモデルファイルの描画に対応する