00001 // MFCD3DDyna.h : MFCD3DDyna アプリケーションのメイン ヘッダー ファイル 00002 // 00003 00004 #if !defined(AFX_MFCD3DVIEWER_H__76565EAB_E58D_4F61_A6A0_E8BB59F3208B__INCLUDED_) 00005 #define AFX_MFCD3DDyna_H__76565EAB_E58D_4F61_A6A0_E8BB59F3208B__INCLUDED_ 00006 00007 #if _MSC_VER > 1000 00008 #pragma once 00009 #endif // _MSC_VER > 1000 00010 00011 #ifndef __AFXWIN_H__ 00012 #error include 'stdafx.h' before including this file for PCH 00013 #endif 00014 00015 #include "resource.h" // メイン シンボル 00016 00017 /** @page MFCD3DDyna 物理シミュレータ(VisualC++ MFC SDI版) 00018 @section MFCD3DDynaAbst 概要 00019 Springheadライブラリを用いて作成した,物理シミュレータです.フレーム階層 00020 を持つDirectXファイルをロードして,表示し,物理シミュレーションを行います. 00021 00022 キーボードとマウスで,視点を動かせます. 00023 力覚ポインタを持つデータファイルでは,力覚ポインタも動かせます. 00024 名前にD3Dが入っていますが,描画はOpenGLでも行えます. 00025 00026 @section MFCD3DDynaHowToBuild ビルドの方法 00027 - 環境変数 Springhead に Springheadをインストールしたディレクトリを指定 00028 して下さい.Windows2000ならば[マイコンピュータ]-[プロパティ]-[詳細]-[環境変数]- 00029 [新規]のダイアログに[変数名] Springhead [変数値] C:\\home\\Project\\Springhead 00030 としてください. 00031 - DirectX8.1のSDKをインストールしてください. 00032 - <A href=../../Samples/MFCD3DDyna/MFCD3DDyna.dsw>Samples/MFCD3DDyna/MFCD3DDyna.dsw</A>を 00033 開いてビルドして実行してください.<br> 00034 ビルドが成功しない人は以下のことを確認してください. 00035 - DirectX SDKのインクルードファイルとライブラリファイルのディレクトリの設定<br> 00036 Visual C++ならば,[ツール]-[オプション]-[ディレクトリ]の「表示するディレクトリ(S)」 00037 を「インクルードファイル」に変え,DirectX SDKのインクルードファイルのディレクトリ 00038 (例:"C:\DXSDK\INCLUDE")が設定されているか確認してください. 00039 設定されていなければ設定してください. 00040 また,検索の優先順位を上げるために「↑」のボタンを何度かクリックして, 00041 一番上に来るようにしてください.<br> 00042 ライブラリファイルについてもインクルードファイルと同様にパスの設定を行ってください 00043 (「表示するディレクトリ(S)」を「ライブラリファイル」に変更する). 00044 00045 - ロードするデータファイル(@ref XFile "Direct3D Xファイル")は 00046 <A href=../../Samples/data/>Samples/data/</A>にあります. 00047 00048 @section MFCD3DDynaMouseHowToOperate 操作方法 00049 キーボード操作 00050 00051 - ↑:前進 00052 - ↓:後退 00053 - ←:左回転 00054 - →:右回転 00055 - S:上回転 00056 - X:下回転 00057 - Q:左平行移動 00058 - W:右平行移動 00059 - A:上平行移動 00060 - Z:下平行移動 00061 - R:視点リセット 00062 - F:フルスクリーン 00063 - G:画面をフルスクリーンから元に戻す 00064 - スペース:ポインタに力を返すか返さないかのON-OFF 00065 - T:マルチメディアタイマーの起動(精度を求めるなら必要.Release版のみ) 00066 00067 00068 マウス操作 00069 00070 - 左ドラッグ:ポインタをカメラ座標系のx軸,y軸周りに回転 00071 - 中ドラッグ:ポインタをカメラ座標系のx-z平面で平行移動 00072 - 右ドラッグ:ポインタをカメラ座標系のx-y平面で平行移動 00073 - 左右ドラッグ:ポインタをカメラ座標系のx-z平面で平行移動(中ボタンorホイールがないマウス用) 00074 - 右中ドラッグ:ポインタをカメラ座標系のy-z平面で平行移動 00075 - ホイール:ポインタをカメラ座標系のz軸方向に平行移動 00076 - 左ダブルクリック:ポインタの姿勢を初期化 00077 - 右ダブルクリック:ポインタの位置を初期化 00078 - Shift + 左ドラッグ:カメラをx軸,y軸周りに回転 00079 - Shift + 中ドラッグ:カメラをx-z平面で平行移動 00080 - Shift + 右ドラッグ:カメラをx-y平面で平行移動 00081 - Shift + 左右ドラッグ:カメラをx-z平面で平行移動(中ボタンorホイールがないマウス用) 00082 - Shift + 右中ドラッグ:カメラをy-z平面で平行移動 00083 - Shift + ホイール:カメラをz軸方向に平行移動 00084 - Shift + 左ダブルクリック:カメラの位置・姿勢を初期化 00085 00086 @section MFCD3DDynaPoint 見所 00087 - CMFCD3DDynaViewクラス<br> 00088 メンバ変数に,render(レンダラ),afBody*afHead(視点行列), 00089 world(シーングラフのトップフレーム)を加えている. 00090 - CMFCD3DDynaView::OnInitialUpdate()<br> 00091 初期化 00092 - CMFCD3DDynaView::Load()<br> 00093 Xファイルのロード 00094 - CMFCD3DDynaView::OnDraw()<br> 00095 レンダリング処理 00096 - CMFCD3DDynaView::PreTranslateMessage()<br> 00097 マウスとキー入力処理.ここでキーとマウスのメッセージを見てしまっています. 00098 - CMFCD3DDynaDoc::OnOpenDocument()<br> 00099 ファイルのオープン(単にLoadを呼び出すだけ) 00100 他の部分はAppWizerdが作ったままになっています. 00101 */ 00102 00103 ///////////////////////////////////////////////////////////////////////////// 00104 // CMFCD3DDynaApp: 00105 // このクラスの動作の定義に関しては MFCD3DDyna.cpp ファイルを参照してください。 00106 // 00107 class CMFCD3DDynaApp : public CWinApp 00108 { 00109 public: 00110 CMFCD3DDynaApp(); 00111 00112 // オーバーライド 00113 // ClassWizard は仮想関数のオーバーライドを生成します。 00114 //{{AFX_VIRTUAL(CMFCD3DDynaApp) 00115 public: 00116 virtual BOOL InitInstance(); 00117 //}}AFX_VIRTUAL 00118 00119 // インプリメンテーション 00120 //{{AFX_MSG(CMFCD3DDynaApp) 00121 afx_msg void OnAppAbout(); 00122 // メモ - ClassWizard はこの位置にメンバ関数を追加または削除します。 00123 // この位置に生成されるコードを編集しないでください。 00124 //}}AFX_MSG 00125 DECLARE_MESSAGE_MAP() 00126 }; 00127 00128 00129 ///////////////////////////////////////////////////////////////////////////// 00130 00131 //{{AFX_INSERT_LOCATION}} 00132 // Microsoft Visual C++ は前行の直前に追加の宣言を挿入します。 00133 00134 #endif // !defined(AFX_MFCD3DDyna_H__76565EAB_E58D_4F61_A6A0_E8BB59F3208B__INCLUDED_)