05.モデルビューワレンダラクラスを作る



描画要素(点、線、面)のON/OFF
マウス操作(回転、平行移動、拡大縮小)のON/OFF
ピック要素(点、線、面)のON/OFF
上記機能を有するモデルビューワレンダラクラスを、ピックDirect3Dレンダラクラスの派生クラスとして作成します。

プロジェクトを開く

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

トラックDirect3Dレンダラクラスの作成

「メニュー/プロジェクト/クラスの追加」でクラス名「CModelViewerRenderer」のクラスを作成します。


テンプレート:C++ クラス
で追加ボタンを押します。


クラス名:CModelViewerRenderer
基本クラス:CDirect3DRendererPick
で完了ボタンを押します。

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

メンバ変数、メンバ関数の宣言の追加

ModelViewerRenderer.h のモデルビューワレンダラクラス定義にメンバ変数、メンバ関数の宣言を追加します。



ビルドし、エラーが2件(「外部シンボルが未解決」1件、「外部参照が未解決」1件)あり、警告がないことを確認します。

メンバ変数の初期化

ModelViewerRenderer.cpp のモデルビューワレンダラクラスのコンストラクタにメンバ変数の初期化を追加します。



ビルドし、エラーが2件(「外部シンボルが未解決」1件、「外部参照が未解決」1件)あり、警告がないことを確認します。

RenderScene関数のオーバーロード

モデルビューワのレンダラクラスに描画要素のON/OFFに対応した要素描画処理 RenderScene関数 をオーバーライドします。

ModelViewerRenderer.cpp の末尾にRenderScene関数の定義を追加します。



Direct3DRendererPick.h のピックDirect3Dレンダラクラスのメンバ変数
m_auiName_pick
をprotected変数とします。



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

DoTracking関数のオーバーライド

モデルビューワのレンダラクラスにマウス操作のON/OFFに対応したトラッキング処理 DoTracking関数 をオーバーライドします。

ModelViewerRenderer.cpp の末尾にDoTracking()の定義を追加します。



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

DoPicking関数のオーバーライド

モデルビューワのレンダラクラスにピック要素のON/OFFに対応したピッキング処理 DoPicking関数 をオーバーライドします。

ModelViewerRenderer.cpp の末尾にDoPicking()の定義を追加します。



ModelViewerRenderer.cpp のファイルヘッダー部に
#include "PickUtil.h"
を追加します。



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

メニューアイテムの追加

メニュー/表示 に以下のメニューアイテムを追加します。

メニュー名 メニューID
マウス操作
回転 ID_VIEW_SPIN
平行移動 ID_VIEW_PAN
拡大縮小 ID_VIEW_ZOOM
描画
ID_VIEW_RENDERPOINT
ID_VIEW_RENDERLINE
ID_VIEW_RENDERFACE
ピック
ID_VIEW_PICKPOINT
ID_VIEW_PICKLINE
ID_VIEW_PICKFACE

ModelViewer.rc を編集しメニューアイテムを追加します。



Resource.h にメニューID(ID_VIEW_SPIN~ID_VIEW_PICKFACE)の定義を追加します。



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

レンダラオブジェクトのクラスの変更

ModelViewer.cpp の
#include "Direct3DRendererPick.h"

#include "ModelViewerRenderer.h"
に、
CDirect3DRendererPick d3drenderer;

CModelViewerRenderer d3drenderer;
に変更します。



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

メニューアイテムの応答関数の追加、編集

ModelViewer.cpp の WndProc関数に、以下のメニュー操作ウィンドウメッセージ処理を追加します。

メニューコマンドID
ID_VIEW_SPIN
ID_VIEW_PAN
ID_VIEW_ZOOM
ID_VIEW_RENDERPOINT
ID_VIEW_RENDERLINE
ID_VIEW_RENDERFACE
ID_VIEW_PICKPOINT
ID_VIEW_PICKLINE
ID_VIEW_PICKFACE

メニューハンドラ変数の宣言を追加をします。
WM_CREATEウィンドウメッセージ処理を追加し、メニュー初期化処理を追加します。
WM_COMMANDウィンドウメッセージ処理に、メニューハンドラの取得処理およびメニュー操作ウィンドウズメッセージ処理を追加します。



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

実行

メニューから
描画要素(点、線、面)のON/OFF
マウス操作(回転、平行移動、拡大縮小)のON/OFF
ピック要素(点、線、面)のON/OFF
を変更することが可能となっていること、
メニューの変更が画面、操作に反映されていることを確認します。

実行結果

ダウンロード

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

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