FineKernelToolKit 4.2.13
|
簡易形状表示システム用クラス [詳解]
#include <FK/ShapeViewer.h>
公開メンバ関数 | |
fk_ShapeViewer (int w=300, int h=360) | |
コンストラクタ | |
virtual | ~fk_ShapeViewer () |
デストラクタ | |
描画処理・描画領域制御関数 | |
bool | draw (void) |
描画更新関数 | |
void | setWindowSize (int w, int h) |
描画領域サイズ変更関数 | |
形状制御関数 | |
void | setShape (fk_Shape *shape) |
単独形状設定関数 | |
void | setShape (int ID, fk_Shape *shape) |
ID付き形状設定関数 | |
fk_Shape * | getShape (int ID=0) |
形状参照関数 | |
int | getModelNum (void) |
形状設定数参照関数 | |
void | clearModel (void) |
形状設定初期化関数 | |
全体描画属性制御関数 | |
void | setDrawMode (fk_Draw mode) |
描画モード設定関数 | |
fk_Draw | getDrawMode (void) |
描画モード参照関数 | |
void | setElementMode (fk_ElementMode mode) |
要素モード設定関数 | |
fk_ElementMode | getElementMode (void) |
要素モード設定関数 | |
void | setShadingMode (fk_ShadingMode mode) |
シェーディングモード設定関数 | |
fk_ShadingMode | getShadingMode (void) |
シェーディングモード参照関数 | |
void | setSmoothMode (bool mode) |
スムースモード設定関数 | |
bool | getSmoothMode (void) |
スムースモード参照関数 | |
void | setBlendStatus (bool mode) |
透過処理設定関数 | |
bool | getBlendStatus (void) |
透過処理参照関数 | |
void | setBGColor (fk_Color col) |
背景色設定関数1 | |
void | setBGColor (float r, float g, float b) |
背景色設定関数2 | |
fk_Color | getBGColor (void) |
背景色参照関数 | |
void | setAxisMode (bool mode) |
座標軸描画設定関数 | |
bool | getAxisMode (void) |
座標軸描画参照関数 | |
void | setAxisScale (double scale) |
座標軸大きさ設定関数 | |
double | getAxisScale (void) |
座標軸大きさ参照関数 | |
fk_Vector | getCenter (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 | setHead (double angle) |
カメラヘッド角設定関数 | |
double | getHead (void) |
カメラヘッド角参照関数 | |
void | setPitch (double angle) |
カメラピッチ角設定関数 | |
double | getPitch (void) |
カメラピッチ角参照関数 | |
void | setBank (double angle) |
カメラバンク角設定関数 | |
double | getBank (void) |
カメラバンク角参照関数 | |
void | setScale (double scale) |
カメラ倍率設定関数 | |
double | getScale (void) |
カメラ倍率参照関数 | |
形状位置・姿勢制御関数 | |
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 | |
フレームレート制御関数 | |
void | setFPS (int fps) |
FPS設定関数 | |
描画画像取り込み関数 | |
bool | snapImage (std::string fileName, fk_ImageType format=fk_ImageType::BMP, fk_SnapProcMode mode=fk_SnapProcMode::FRONT) |
描画画像ファイル出力関数 | |
bool | snapImage (fk_Image *image, fk_SnapProcMode mode=fk_SnapProcMode::FRONT) |
描画画像データ出力関数 | |
メッセージ出力制御関数 | |
void | setPutStrMode (const fk_PutStrMode mode) |
メッセージ出力モード設定関数 | |
fk_PutStrMode | getPutStrMode (void) |
メッセージ出力モード参照関数 | |
bool | setPutFile (const std::string &str) |
メッセージ出力用ファイル設定関数 | |
void | putString (const std::string &str) |
メッセージ出力文字列設定関数 | |
void | printf (const char *format,...) |
メッセージ出力書式付き設定関数 | |
void | clearBrowser (void) |
メッセージ出力用ブラウザ初期化関数 | |
![]() | |
fk_BaseObject (fk_Type type=fk_Type::BASEOBJECT) | |
コンストラクタ | |
fk_Type | getObjectType (void) const |
タイプ取得関数 | |
簡易形状表示システム用クラス
このクラスは、簡易形状表示システムを制御する機能を提供します。
FK システムにおいて、形状を表示するためには形状用インスタンスの他にモデル、 シーン、ウィンドウを準備する必要があります。 また、様々な角度から形状を閲覧したい場合には、 さらにカメラ操作のプログラムを追加しなければなりません。 fk_ShapeViewer を用いると、モデル、シーン、ウィンドウを準備する必要はなく、 閲覧するための機能が最初から備わっています。
fk_ShapeViewer が備えている標準機能は、以下のようなものがあります。
上記の操作は全てメニューなどの GUI から操作が可能で、 プログラムとして記述する必要がありません。 また、以下に述べるような各種メンバ関数を利用することで、 プログラムから細かく制御することもできます。 例えば、複数の形状を別々に動作させるといった制御も可能となります。 特に ID を指定しなかった場合や、メニューから形状データを読み込んだ場合は、 形状 ID が 0 となります。
変形アニメーションの様子を表示することも可能です。 これは、 draw() を変形する度に呼び出すことで実現できます。
FK::fk_ShapeViewer::fk_ShapeViewer | ( | int | w = 300 , |
int | h = 360 |
||
) |
コンストラクタ
描画領域の大きさを指定することができます。単位はピクセルとなります。 ウィンドウ全体の大きさではないことに注意して下さい。
[in] | w | 描画領域横幅 |
[in] | h | 描画領域縦幅 |
|
virtual |
デストラクタ
bool FK::fk_ShapeViewer::draw | ( | void | ) |
描画更新関数
形状の描画を行います。 GUI ならびにメンバ関数によって操作を行っても、 この関数を呼ばなければ画面は更新されません。
通常は、以下のようなコードを記述することになります。
fk_ShapeViewer viewer; while(viewer.draw() == true) { // (もし必要なら)形状の変形処理を記述 }
void FK::fk_ShapeViewer::setWindowSize | ( | int | w, |
int | h | ||
) |
描画領域サイズ変更関数
描画領域のサイズを変更します。単位はピクセルとなります。
[in] | w | 描画領域横幅 |
[in] | h | 描画領域縦幅 |
void FK::fk_ShapeViewer::setShape | ( | fk_Shape * | shape | ) |
単独形状設定関数
形状を描画対象として設定します。 fk_Shape の派生クラスであれば、 (テクスチャ系も含めて)全てのクラスを描画対象として設定できます。 なお、この関数は ID を 0 番として setShape(int, fk_Shape *) を用いた場合と同義になります。
[in] | shape | 形状インスタンス |
void FK::fk_ShapeViewer::setShape | ( | int | ID, |
fk_Shape * | shape | ||
) |
ID付き形状設定関数
形状を描画対象として設定します。 setShape(fk_Shape *) との違いは、 指定の際に ID を付けることです。 複数の形状を同時に描画したい場合は、 異なる ID をそれぞれの形状に付けることで実現できます。
[in] | ID | 形状 ID |
[in] | shape | 形状インスタンス |
fk_Shape * FK::fk_ShapeViewer::getShape | ( | int | ID = 0 | ) |
形状参照関数
指定した ID で設定されている形状インスタンスを返します。
[in] | ID | 形状 ID |
int FK::fk_ShapeViewer::getModelNum | ( | void | ) |
形状設定数参照関数
現在設定されている形状の個数を返します。
void FK::fk_ShapeViewer::clearModel | ( | void | ) |
形状設定初期化関数
現在設定されている全ての形状情報を消去します。
void FK::fk_ShapeViewer::setDrawMode | ( | fk_Draw | mode | ) |
描画モード設定関数
登録されている全ての形状の描画モードを設定します。 描画モードとは、 面、稜線、頂点のそれぞれを描画するかどうかを制御するものです。 描画モードには以下のようなものがあります。
これらの描画モードは、 ビット論理和を用いて複数のものを同時に指定することが可能です。 以下のコードは、頂点、稜線、面の表をすべて描画するように設定します。
fk_ShapeViewer viewer; viewer.setDrawMode(fk_Draw::POINT | fk_Draw::LINE | fk_Draw::FACE);
個別の形状に対して別々の描画モードを設定する場合は、 setDrawMode(int, fk_Draw) を利用して下さい。
[in] | mode | 描画モード |
fk_Draw FK::fk_ShapeViewer::getDrawMode | ( | void | ) |
void FK::fk_ShapeViewer::setElementMode | ( | fk_ElementMode | mode | ) |
要素モード設定関数
形状表示の際、モデル設定と形状個別要素設定のどちらを採用するかを設定します。 モードには以下のものがあります。
[in] | mode | 設定モード |
fk_ElementMode FK::fk_ShapeViewer::getElementMode | ( | void | ) |
void FK::fk_ShapeViewer::setShadingMode | ( | fk_ShadingMode | mode | ) |
fk_ShadingMode FK::fk_ShapeViewer::getShadingMode | ( | void | ) |
void FK::fk_ShapeViewer::setSmoothMode | ( | bool | mode | ) |
スムースモード設定関数
モデルのスムースモードを設定します。 詳細は fk_Model::setSmoothMode() を参照して下さい。
[in] | mode | true である場合、スムースモードを有効とします。 false である場合無効とします。 |
bool FK::fk_ShapeViewer::getSmoothMode | ( | void | ) |
void FK::fk_ShapeViewer::setBlendStatus | ( | bool | mode | ) |
透過処理設定関数
描画の際、透過処理を有効とするかどうかを設定します。 機能的には fk_Scene::setBlendStatus() と同様です。 詳細は、 fk_Scene::setBlendStatus() のマニュアルを参照して下さい。
[in] | mode | true であれば有効、false であれば無効とします。 |
bool FK::fk_ShapeViewer::getBlendStatus | ( | void | ) |
void FK::fk_ShapeViewer::setBGColor | ( | fk_Color | col | ) |
void FK::fk_ShapeViewer::setBGColor | ( | float | r, |
float | g, | ||
float | b | ||
) |
背景色設定関数2
描画領域の背景色を設定します。 各色要素は 0 から 1 までの値を取ります。 それ以外の値が与えられた場合、0 以下なら 0 に、1 以上なら 1 に丸められます。
[in] | r | 背景色の赤要素 |
[in] | g | 背景色の緑要素 |
[in] | b | 背景色の青要素 |
fk_Color FK::fk_ShapeViewer::getBGColor | ( | void | ) |
void FK::fk_ShapeViewer::setAxisMode | ( | bool | mode | ) |
座標軸描画設定関数
座標軸の表示の有無を設定します。
[in] | mode | true であれば描画有効、false であれば無効とします。 |
bool FK::fk_ShapeViewer::getAxisMode | ( | void | ) |
void FK::fk_ShapeViewer::setAxisScale | ( | double | scale | ) |
座標軸大きさ設定関数
座標軸の大きさを設定します。ここでいう大きさとは、 各軸の長さのことです。
[in] | scale | 大きさ |
double FK::fk_ShapeViewer::getAxisScale | ( | void | ) |
fk_Vector FK::fk_ShapeViewer::getCenter | ( | void | ) |
描画領域中心座標参照関数
現在の描画領域で中心(注視点)となっている位置の位置ベクトルを返します。
void FK::fk_ShapeViewer::setDrawMode | ( | int | ID, |
fk_Draw | mode | ||
) |
個別形状描画モード設定関数
個別の形状に対して描画モードを設定します。 描画モードとは、 面、稜線、頂点のそれぞれを描画するかどうかを制御するものです。 描画モードには以下のようなものがあります。
これらの描画モードは、 ビット論理和を用いて複数のものを同時に指定することが可能です。 以下のコードは、頂点、稜線、面の表をすべて描画するように設定します。
fk_ShapeViewer viewer; viewer.setDrawMode(fk_Draw::POINT | fk_Draw::LINE | fk_Draw::FACE);
全ての形状に対しての描画モードを設定する場合は、 setDrawMode(fk_Draw) を利用して下さい。
[in] | ID | 形状 ID |
[in] | mode | 描画モード |
fk_Draw FK::fk_ShapeViewer::getDrawMode | ( | int | ID | ) |
void FK::fk_ShapeViewer::setElementMode | ( | int | ID, |
fk_ElementMode | mode | ||
) |
形状別要素モード設定関数
形状表示の際、モデル設定と形状個別要素設定のどちらを採用するかを設定します。 モードには以下のものがあります。
[in] | ID | 形状 ID |
[in] | mode | 設定モード |
fk_ElementMode FK::fk_ShapeViewer::getElementMode | ( | int | ID | ) |
void FK::fk_ShapeViewer::setShadingMode | ( | int | ID, |
fk_ShadingMode | mode | ||
) |
シェーディングモード設定関数
描画の際のシェーディングモードを設定します。 詳細は fk_Model::setShadingMode() を参照して下さい。
[in] | ID | 形状ID |
[in] | mode | シェーディグモード |
fk_ShadingMode FK::fk_ShapeViewer::getShadingMode | ( | int | ID | ) |
シェーディングモード参照関数
現在設定されているシェーディングモードを取得します。
[in] | ID | 形状ID |
void FK::fk_ShapeViewer::setSmoothMode | ( | int | ID, |
bool | mode | ||
) |
スムースモード設定関数
指定した ID 形状のスムースモードを設定します。 詳細は fk_Model::setSmoothMode() を参照して下さい。
[in] | ID | 形状ID |
[in] | mode | true である場合、スムースモードを有効とします。 false である場合無効とします。 |
bool FK::fk_ShapeViewer::getSmoothMode | ( | int | ID | ) |
スムースモード参照関数
指定した ID 形状のスムースモードを取得します。
[in] | ID | 形状ID |
void FK::fk_ShapeViewer::setPointSize | ( | int | ID, |
double | size | ||
) |
形状頂点描画サイズ設定関数
形状に対し、頂点描画サイズを設定します。 単位はピクセルです。整数以外も設定可能です。
[in] | ID | 形状ID |
[in] | size | 描画サイズ |
double FK::fk_ShapeViewer::getPointSize | ( | int | ID | ) |
void FK::fk_ShapeViewer::setMaterial | ( | int | ID, |
fk_Material | mat | ||
) |
形状マテリアル設定関数
形状に対し、面のマテリアルを設定します。
[in] | ID | 形状ID |
[in] | mat | マテリアル |
void FK::fk_ShapeViewer::setEdgeColor | ( | int | ID, |
fk_Color | col | ||
) |
形状稜線描画色設定関数
形状に対し、稜線の描画色を設定します。
[in] | ID | 形状ID |
[in] | col | 稜線色 |
void FK::fk_ShapeViewer::setVertexColor | ( | int | ID, |
fk_Color | col | ||
) |
void FK::fk_ShapeViewer::setHead | ( | double | angle | ) |
カメラヘッド角設定関数
カメラのヘッド角を設定します。 ヘッド角についての詳細は、 fk_Angle の解説を参照して下さい。 引数の単位は弧度法(ラジアン)となります。
[in] | angle | ヘッド角の角度 |
double FK::fk_ShapeViewer::getHead | ( | void | ) |
void FK::fk_ShapeViewer::setPitch | ( | double | angle | ) |
カメラピッチ角設定関数
カメラのピッチ角を設定します。 ピッチ角についての詳細は、 fk_Angle の解説を参照して下さい。 引数の単位は弧度法(ラジアン)となります。
[in] | angle | ピッチ角の角度 |
double FK::fk_ShapeViewer::getPitch | ( | void | ) |
void FK::fk_ShapeViewer::setBank | ( | double | angle | ) |
カメラバンク角設定関数
カメラのバンク角を設定します。 バンク角についての詳細は、 fk_Angle の解説を参照して下さい。 引数の単位は弧度法(ラジアン)となります。
[in] | angle | バンク角の角度 |
double FK::fk_ShapeViewer::getBank | ( | void | ) |
void FK::fk_ShapeViewer::setScale | ( | double | scale | ) |
double FK::fk_ShapeViewer::getScale | ( | void | ) |
void FK::fk_ShapeViewer::setPosition | ( | int | ID, |
fk_Vector | pos | ||
) |
形状位置設定関数1
形状の位置を設定します。
[in] | ID | 形状ID |
[in] | pos | 形状位置ベクトル |
void FK::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::fk_ShapeViewer::setAngle | ( | int | ID, |
fk_Angle | angle | ||
) |
void FK::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::fk_ShapeViewer::setVec | ( | int | ID, |
fk_Vector | vec | ||
) |
形状方向ベクトル設定関数1
形状の方向ベクトルを設定します。 方向ベクトルは正規化してある必要はありません。
[in] | ID | 形状ID |
[in] | vec | 方向ベクトル |
void FK::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::fk_ShapeViewer::setUpvec | ( | int | ID, |
fk_Vector | vec | ||
) |
形状アップベクトル設定関数1
形状のアップベクトルを設定します。 アップベクトルは正規化してある必要はありません。
[in] | ID | 形状ID |
[in] | vec | アップベクトル |
void FK::fk_ShapeViewer::setUpvec | ( | int | ID, |
double | x, | ||
double | y, | ||
double | z | ||
) |
形状アップベクトル設定関数2
形状のアップベクトルを設定します。 アップベクトルは正規化してある必要はありません。
[in] | ID | 形状ID |
[in] | x | アップベクトルのx成分 |
[in] | y | アップベクトルのy成分 |
[in] | z | アップベクトルのz成分 |
void FK::fk_ShapeViewer::setFPS | ( | int | fps | ) |
FPS設定関数
update()をコールした際に調整するFPSを指定します。 FPS(Frame Per Second)とは、1秒間中で画面更新が行われる回数の単位です。 この値を 0 に設定した場合は、FPS制御を行いません。 デフォルトは60です。
[in] | fps | FPS値 |
bool FK::fk_ShapeViewer::snapImage | ( | std::string | fileName, |
fk_ImageType | format = fk_ImageType::BMP , |
||
fk_SnapProcMode | mode = fk_SnapProcMode::FRONT |
||
) |
描画画像ファイル出力関数
この関数は、描画領域に表示されている画像を、画像ファイルとして出力します。
[in] | fileName | 画像ファイル名 |
[in] | format | 画像ファイルのフォーマット。 現在利用可能なフォーマットは、 fk_ImageType の解説を参照して下さい。 |
[in] | mode | 画像の取込先となるグラフィックスデバイス名。 取り込みがうまく動作しない場合は、 この引数の値を変更してください。 |
bool FK::fk_ShapeViewer::snapImage | ( | fk_Image * | image, |
fk_SnapProcMode | mode = fk_SnapProcMode::FRONT |
||
) |
描画画像データ出力関数
この関数は、描画領域に表示されている画像を、 fk_Image 型のインスタンスに出力します。
[in] | image | 画像データ出力先インスタンス |
[in] | mode | 画像の取込先となるグラフィックスデバイス名。 取り込みがうまく動作しない場合は、 この引数の値を変更してください。 |
void FK::fk_ShapeViewer::setPutStrMode | ( | const fk_PutStrMode | mode | ) |
メッセージ出力モード設定関数
実質的に、 fk_Window::setPutStrMode() とまったく同じ動作となります。 そちらの解説を参照して下さい。
fk_PutStrMode FK::fk_ShapeViewer::getPutStrMode | ( | void | ) |
メッセージ出力モード参照関数
実質的に、 fk_Window::getPutStrMode() とまったく同じ動作となります。 そちらの解説を参照して下さい。
bool FK::fk_ShapeViewer::setPutFile | ( | const std::string & | str | ) |
メッセージ出力用ファイル設定関数
実質的に、 fk_Window::setPutFile() とまったく同じ動作となります。 そちらの解説を参照して下さい。
void FK::fk_ShapeViewer::putString | ( | const std::string & | str | ) |
メッセージ出力文字列設定関数
実質的に、 fk_Window::putString() とまったく同じ動作となります。 そちらの解説を参照して下さい。
void FK::fk_ShapeViewer::printf | ( | const char * | format, |
... | |||
) |
void FK::fk_ShapeViewer::clearBrowser | ( | void | ) |
メッセージ出力用ブラウザ初期化関数
実質的に、 fk_Window::clearBrowser() とまったく同じ動作となります。 そちらの解説を参照して下さい。