FineKernelToolKit 4.2.13
|
簡易形状表示システム用クラス [詳解]
#include <CLI/FK_CLI/include/ShapeViewer_CLI.h>
公開メンバ関数 | |
fk_ShapeViewer () | |
コンストラクタ1 | |
fk_ShapeViewer (int w, int h) | |
コンストラクタ2 | |
~fk_ShapeViewer () | |
デストラクタ | |
!fk_ShapeViewer () | |
ファイナライザ | |
描画処理・描画領域制御メソッド | |
bool | Draw (void) |
描画更新メソッド | |
void | SetShape (int ID, fk_Shape^ shape) |
ID付き形状設定メソッド | |
fk_Shape ^ | GetShape (int ID) |
形状参照メソッド | |
void | ClearModel (void) |
形状設定初期化メソッド | |
形状個別描画属性・マテリアル設定メソッド | |
void | SetDrawMode (int ID, fk_Draw mode) |
個別形状描画モード設定メソッド | |
fk_Draw | GetDrawMode (int ID) |
描画モード参照メソッド | |
void | SetElementMode (int ID, fk_ElementMode mode) |
形状別要素モード設定関数 | |
fk_ElementMode | GetElementMode (int ID) |
形状別要素モード設定関数 | |
void | SetShadingMode (int ID, fk_ShadingMode mode) |
要素モード設定関数 | |
fk_ShadingMode | GetShadingMode (int ID) |
シェーディングモード参照関数 | |
void | SetSmoothMode (int ID, bool mode) |
スムースモード設定関数 | |
bool | GetSmoothMode (int ID) |
スムースモード参照関数 | |
void | SetPointSize (int ID, double size) |
形状頂点描画サイズ設定メソッド | |
double | GetPointSize (int ID) |
形状頂点描画サイズ参照メソッド | |
void | SetMaterial (int ID, fk_Material^ mat) |
形状マテリアル設定メソッド | |
void | SetEdgeColor (int ID, fk_Color^ col) |
形状稜線描画色設定メソッド | |
void | SetVertexColor (int ID, fk_Color^ col) |
形状頂点描画色設定メソッド | |
カメラ角度・倍率制御メソッド | |
void | SetPosition (int ID, fk_Vector^ pos) |
形状位置設定メソッド1 | |
void | SetPosition (int ID, double x, double y, double z) |
形状位置設定メソッド2 | |
void | SetAngle (int ID, fk_Angle^ angle) |
形状姿勢設定メソッド1 | |
void | SetAngle (int ID, double h, double p, double b) |
形状姿勢設定メソッド2 | |
void | SetVec (int ID, fk_Vector^ vec) |
形状方向ベクトル設定メソッド1 | |
void | SetVec (int ID, double x, double y, double z) |
形状方向ベクトル設定メソッド2 | |
void | SetUpvec (int ID, fk_Vector^ vec) |
形状アップベクトル設定メソッド1 | |
void | SetUpvec (int ID, double x, double y, double z) |
形状アップベクトル設定メソッド2 | |
描画画像取り込みメソッド | |
bool | SnapImage (String^ fileName, fk_ImageType format) |
描画画像ファイル出力メソッド | |
bool | SnapImage (fk_Image^ image) |
描画画像データ出力メソッド | |
プロパティ | |
fk_Dimension^ | WindowSize [set] |
描画領域サイズプロパティ | |
fk_Shape^ | Shape [get, set] |
単独形状参照・設定プロパティ | |
int | ModelNum [get] |
形状設定数プロパティ | |
fk_Draw | DrawMode [get, set] |
描画モードプロパティ | |
fk_ElementMode | ElementMode [get, set] |
fk_ShadingMode | ShadingMode [get, set] |
bool | SmoothMode [get, set] |
bool | BlendStatus [get, set] |
透過処理プロパティ | |
fk_Color^ | BGColor [get, set] |
背景色プロパティ | |
bool | AxisMode [get, set] |
座標軸描画設定メソッド | |
double | AxisScale [get, set] |
座標軸大きさ設定メソッド | |
fk_Vector^ | Center [get] |
描画領域中心座標プロパティ | |
double | Head [get, set] |
カメラヘッド角プロパティ | |
double | Pitch [get, set] |
カメラピッチ角プロパティ | |
double | Bank [get, set] |
カメラバンク角プロパティ | |
double | Scale [get, set] |
カメラ倍率プロパティ | |
int | FPS [set] |
FPS 設定プロパティ | |
簡易形状表示システム用クラス
このクラスは、簡易形状表示システムを制御する機能を提供します。
FK システムにおいて、形状を表示するためには形状用インスタンスの他にモデル、 シーン、ウィンドウを準備する必要があります。 また、様々な角度から形状を閲覧したい場合には、 さらにカメラ操作のプログラムを追加しなければなりません。 fk_ShapeViewer を用いると、モデル、シーン、ウィンドウを準備する必要はなく、 閲覧するための機能が最初から備わっています。
fk_ShapeViewer が備えている標準機能は、以下のようなものがあります。
上記の操作は全てメニューなどの GUI から操作が可能で、 プログラムとして記述する必要がありません。 また、以下に述べるような各種メソッドを利用することで、 プログラムから細かく制御することもできます。 例えば、複数の形状を別々に動作させるといった制御も可能となります。 特に ID を指定しなかった場合や、メニューから形状データを読み込んだ場合は、 形状 ID が 0 となります。
変形アニメーションの様子を表示することも可能です。 これは、 Draw() を変形する度に呼び出すことで実現できます。
FK_CLI::fk_ShapeViewer::fk_ShapeViewer | ( | ) |
コンストラクタ1
描画領域の大きさが横幅 300 ピクセル、 縦幅 360 ピクセルとしてインスタンスを生成します。 ウィンドウ全体の大きさではないことに注意して下さい。
FK_CLI::fk_ShapeViewer::fk_ShapeViewer | ( | int | w, |
int | h | ||
) |
コンストラクタ2
描画領域の大きさを指定することができます。単位はピクセルとなります。 ウィンドウ全体の大きさではないことに注意して下さい。
[in] | w | 描画領域横幅 |
[in] | h | 描画領域縦幅 |
FK_CLI::fk_ShapeViewer::~fk_ShapeViewer | ( | ) |
デストラクタ
FK_CLI::fk_ShapeViewer::!fk_ShapeViewer | ( | ) |
ファイナライザ
bool FK_CLI::fk_ShapeViewer::Draw | ( | void | ) |
描画更新メソッド
形状の描画を行います。 GUI ならびにメソッドによって操作を行っても、 このメソッドを呼ばなければ画面は更新されません。
通常は、以下のようなコードを記述することになります。
fk_ShapeViewer viewer; while(viewer.Draw() == true) { // (もし必要なら)形状の変形処理を記述 }
void FK_CLI::fk_ShapeViewer::SetShape | ( | int | ID, |
fk_Shape^ | shape | ||
) |
ID付き形状設定メソッド
形状を描画対象として設定します。 複数の形状を同時に描画したい場合は、 異なる ID をそれぞれの形状に付けることで実現できます。
Shape プロパティによる設定は、 本メソッドで ID に 0 を入力した場合と同義となります。
[in] | ID | 形状 ID |
[in] | shape | 形状インスタンス |
fk_Shape ^ FK_CLI::fk_ShapeViewer::GetShape | ( | int | ID | ) |
形状参照メソッド
指定した ID で設定されている形状インスタンスを返します。 Shape プロパティを参照することは、 本メソッドで ID に 0 を入力した場合と同義となります。
[in] | ID | 形状 ID |
void FK_CLI::fk_ShapeViewer::ClearModel | ( | void | ) |
形状設定初期化メソッド
現在設定されている全ての形状情報を消去します。
void FK_CLI::fk_ShapeViewer::SetDrawMode | ( | int | ID, |
fk_Draw | mode | ||
) |
個別形状描画モード設定メソッド
個別の形状に対して描画モードを設定します。 描画モードとは、 面、稜線、頂点のそれぞれを描画するかどうかを制御するものです。 描画モードには以下のようなものがあります。
これらの描画モードは、 ビット論理和を用いて複数のものを同時に指定することが可能です。 以下のコードは、頂点、稜線、面の表をすべて描画するように設定します。
fk_ShapeViewer viewer; viewer.setDrawMode(1, fk_Draw.POINTMODE | fk_Draw.LINEMODE | fk_Draw.POLYMODE);
全ての形状に対しての描画モードを設定する場合は、 fk_ShapeViewer::DrawMode プロパティを利用して下さい。
[in] | ID | 形状 ID |
[in] | mode | 描画モード |
fk_Draw FK_CLI::fk_ShapeViewer::GetDrawMode | ( | int | ID | ) |
void FK_CLI::fk_ShapeViewer::SetElementMode | ( | int | ID, |
fk_ElementMode | mode | ||
) |
形状別要素モード設定関数
形状表示の際、モデル設定と形状個別要素設定のどちらを採用するかを設定します。 モードには以下のものがあります。
[in] | ID | 形状 ID |
[in] | mode | 設定モード |
fk_ElementMode FK_CLI::fk_ShapeViewer::GetElementMode | ( | int | ID | ) |
形状別要素モード設定関数
表示の際の優先モードを取得します。
[in] | ID | 形状 ID |
void FK_CLI::fk_ShapeViewer::SetShadingMode | ( | int | ID, |
fk_ShadingMode | mode | ||
) |
要素モード設定関数
シェーディングモード設定関数
描画の際のシェーディングモードを設定します。 詳細は fk_Model::ShadingMode を参照して下さい。
[in] | ID | 形状ID |
[in] | mode | シェーディグモード |
fk_ShadingMode FK_CLI::fk_ShapeViewer::GetShadingMode | ( | int | ID | ) |
シェーディングモード参照関数
現在設定されているシェーディングモードを取得します。
[in] | ID | 形状ID |
void FK_CLI::fk_ShapeViewer::SetSmoothMode | ( | int | ID, |
bool | mode | ||
) |
スムースモード設定関数
指定した ID 形状のスムースモードを設定します。 詳細は fk_Model::SmoothMode を参照して下さい。
[in] | ID | 形状ID |
[in] | mode | true である場合、スムースモードを有効とします。 false である場合無効とします。 |
bool FK_CLI::fk_ShapeViewer::GetSmoothMode | ( | int | ID | ) |
スムースモード参照関数
指定した ID 形状のスムースモードを取得します。
[in] | ID | 形状ID |
void FK_CLI::fk_ShapeViewer::SetPointSize | ( | int | ID, |
double | size | ||
) |
形状頂点描画サイズ設定メソッド
形状に対し、頂点描画サイズを設定します。 単位はピクセルです。整数以外も設定可能です。
[in] | ID | 形状ID |
[in] | size | 描画サイズ |
double FK_CLI::fk_ShapeViewer::GetPointSize | ( | int | ID | ) |
void FK_CLI::fk_ShapeViewer::SetMaterial | ( | int | ID, |
fk_Material^ | mat | ||
) |
形状マテリアル設定メソッド
形状に対し、面のマテリアルを設定します。
[in] | ID | 形状ID |
[in] | mat | マテリアル |
void FK_CLI::fk_ShapeViewer::SetEdgeColor | ( | int | ID, |
fk_Color^ | col | ||
) |
形状稜線描画色設定メソッド
形状に対し、稜線の描画色を設定します。
[in] | ID | 形状ID |
[in] | col | 稜線色 |
void FK_CLI::fk_ShapeViewer::SetVertexColor | ( | int | ID, |
fk_Color^ | col | ||
) |
形状頂点描画色設定メソッド
形状に対し、頂点の描画色を設定します。
[in] | ID | 形状ID |
[in] | col | 頂点色 |
void FK_CLI::fk_ShapeViewer::SetPosition | ( | int | ID, |
fk_Vector^ | pos | ||
) |
形状位置設定メソッド1
形状の位置を設定します。
[in] | ID | 形状ID |
[in] | pos | 形状位置ベクトル |
void FK_CLI::fk_ShapeViewer::SetPosition | ( | int | ID, |
double | x, | ||
double | y, | ||
double | z | ||
) |
形状位置設定メソッド2
形状の位置を設定します。
[in] | ID | 形状ID |
[in] | x | 形状位置ベクトルのx成分 |
[in] | y | 形状位置ベクトルのy成分 |
[in] | z | 形状位置ベクトルのz成分 |
void FK_CLI::fk_ShapeViewer::SetAngle | ( | int | ID, |
fk_Angle^ | angle | ||
) |
void FK_CLI::fk_ShapeViewer::SetAngle | ( | int | ID, |
double | h, | ||
double | p, | ||
double | b | ||
) |
形状姿勢設定メソッド2
形状の姿勢をオイラー角で設定します。 オイラー角については、 fk_Angle の解説を参照して下さい。 なお、角度の単位は弧度法(ラジアン)となります。
[in] | ID | 形状ID |
[in] | h | 姿勢を表すオイラー角のヘッド角度 |
[in] | p | 姿勢を表すオイラー角のピッチ角度 |
[in] | b | 姿勢を表すオイラー角のバンク角度 |
void FK_CLI::fk_ShapeViewer::SetVec | ( | int | ID, |
fk_Vector^ | vec | ||
) |
形状方向ベクトル設定メソッド1
形状の方向ベクトルを設定します。 方向ベクトルは正規化してある必要はありません。
[in] | ID | 形状ID |
[in] | vec | 方向ベクトル |
void FK_CLI::fk_ShapeViewer::SetVec | ( | int | ID, |
double | x, | ||
double | y, | ||
double | z | ||
) |
形状方向ベクトル設定メソッド2
形状の方向ベクトルを設定します。 方向ベクトルは正規化してある必要はありません。
[in] | ID | 形状ID |
[in] | x | 方向ベクトルのx成分 |
[in] | y | 方向ベクトルのy成分 |
[in] | z | 方向ベクトルのz成分 |
void FK_CLI::fk_ShapeViewer::SetUpvec | ( | int | ID, |
fk_Vector^ | vec | ||
) |
形状アップベクトル設定メソッド1
形状のアップベクトルを設定します。 アップベクトルは正規化してある必要はありません。
[in] | ID | 形状ID |
[in] | vec | アップベクトル |
void FK_CLI::fk_ShapeViewer::SetUpvec | ( | int | ID, |
double | x, | ||
double | y, | ||
double | z | ||
) |
形状アップベクトル設定メソッド2
形状のアップベクトルを設定します。 アップベクトルは正規化してある必要はありません。
[in] | ID | 形状ID |
[in] | x | アップベクトルのx成分 |
[in] | y | アップベクトルのy成分 |
[in] | z | アップベクトルのz成分 |
bool FK_CLI::fk_ShapeViewer::SnapImage | ( | String^ | fileName, |
fk_ImageType | format | ||
) |
描画画像ファイル出力メソッド
このメソッドは、描画領域に表示されている画像を、画像ファイルとして出力します。
[in] | fileName | 画像ファイル名 |
[in] | format | 画像ファイルのフォーマット。 現在利用可能なフォーマットは、 fk_ImageType の解説を参照して下さい。 |
bool FK_CLI::fk_ShapeViewer::SnapImage | ( | fk_Image^ | image | ) |
描画画像データ出力メソッド
このメソッドは、描画領域に表示されている画像を、 fk_Image 型のインスタンスに出力します。
[in] | image | 画像データ出力先インスタンス |
|
set |
描画領域サイズプロパティ
描画領域のサイズを変更します。単位はピクセルとなります。
|
getset |
単独形状参照・設定プロパティ
形状を描画対象として設定します。 fk_Shape の派生クラスであれば、 (テクスチャ系も含めて)全てのクラスを描画対象として設定できます。
なお、このプロパティへの設定は ID を 0 番として SetShape(int, fk_Shape^) を用いた場合と同義になります。 また、参照は GetShape() において ID に 0 を指定した場合と同義となります。
|
get |
形状設定数プロパティ
現在設定されている形状の個数を参照します。
|
getset |
描画モードプロパティ
登録されている全ての形状の描画モードを設定します。 描画モードとは、 面、稜線、頂点のそれぞれを描画するかどうかを制御するものです。 描画モードには以下のようなものがあります。
これらの描画モードは、 ビット論理和を用いて複数のものを同時に指定することが可能です。 以下のコードは、頂点、稜線、面の表をすべて描画するように設定します。
fk_ShapeViewer viewer; viewer.DrawMode = fk_Draw.POINTMODE | fk_Draw.LINEMODE | fk_Draw.POLYMODE;
個別の形状に対して別々の描画モードを設定する場合は、 SetDrawMode(int, fk_Draw) を利用して下さい。
|
getset |
登録されている全ての形状の要素モードを設定します。 要素モードとは、モデル設定と形状個別要素設定のどちらを採用するかを設定するものです。 モードには以下のものがあります。
|
getset |
登録されている全ての形状のシェーディングモードを設定します。 シェーディングモードの詳細は fk_Model::ShadingMode を参照してください。
|
getset |
登録されている全ての形状のスムースモードを設定します。 スムースモードの詳細は fk_Model::SmoothMode を参照してください。
|
getset |
透過処理プロパティ
描画の際、透過処理を有効とするかどうかの参照・設定を行います。 true であれば有効、false であれば無効とします。 機能的には fk_Scene::BlendStatus プロパティと同様です。 詳細は、 fk_Scene::BlendStatus のマニュアルを参照して下さい。
|
getset |
背景色プロパティ
描画領域背景色の参照・設定を行います。
|
getset |
|
getset |
|
get |
描画領域中心座標プロパティ
現在の描画領域で中心(注視点)となっている位置の位置ベクトルを参照します。
|
getset |
|
getset |
|
getset |
|
set |
FPS 設定プロパティ
update()をコールした際に調整するFPSを指定します。 FPS(Frame Per Second)とは、1秒間中で画面更新が行われる回数の単位です。 この値を 0 に設定した場合は、FPS制御を行いません。 デフォルトは 0 です。