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



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

プロジェクトを開く

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

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

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


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


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

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

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

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



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

メンバ変数の初期化

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



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

RenderObjects関数のオーバーロード

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

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



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



OpenGLRendererPick.h のピックOpenGLレンダラクラスのメンバ関数
RenderObjects
をprotected関数、さらにvirtual関数とします。



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

DoTracking関数のオーバーライド

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

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



OpenGLRendererTrack.h のトラックOpenGLレンダラクラスのメンバ変数
m_eTrackingMode
をprotected変数とします。



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

メニューアイテムの追加

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

メニュー名 メニュー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 "OpenGLRendererPick.h"

#include "ModelViewerRenderer.h"
に、
COpenGLRendererPick glrenderer;

CModelViewerRenderer glrenderer;
に変更します。



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

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

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
を変更することが可能となっていること、
メニューの変更が画面、操作に反映されていることを確認します。

実行結果

ダウンロード

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

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