14.頂点法線ベクトルデータを使用した描画



13.で作成したモデルビューワは、光源の効果の利用に際して面法線ベクトルデータを使用した描画を行っています。面法線ベクトルデータを使用した描画の場合、面の折れ目が目立ちます。
頂点法線ベクトルデータを使用した描画を行うと、面の折れを目を立たなくすることができます。

実行形式ファイルダウンロード (ModelViewer11_exe.lzh)

ソースファイルダウンロード (ModelViewer11_src.lzh)

プロジェクトを開く

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

面の描画処理に頂点法線ベクトルデータを使用する処理の追加

頂点法線ベクトルデータを使用した描画を行うと、面の折れを目を立たなくすることができます。

CModelViewerView::RenderObjects関数の実装を変更します。

面の描画処理の、glVertex関数呼び出しの前の、glNormal関数呼び出しを、
頂点法線ベクトルデータが空なら、面法線データを使用し、
頂点法線ベクトルデータが空でないなら、頂点法線データを使用する処理に変更します。



ビルドし、エラー、警告がないことを確認します。

実行

実行し、couch.objファイルを読み込み、面の折れを目が立たない描画になっているのを確認します。

couch.objファイルの読み込み
(面の折れ目が目立たない描画になっています)
(「メニュー/表示/描画」で、点、線を非描画にしています。)
(画像をクリックすると大きい画像が表示されます)


参考)13.で作成したモデルビューワで、couch.objを読み込んだ場合の画面
(面の折れ目が目立つ描画になっています)
(「メニュー/表示/描画」で、点、線を非描画にしています。)
(画像をクリックすると大きい画像が表示されます)