簡易形状表示システム用クラス [詳細]
Public メソッド | |
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) |
形状設定初期化関数 | |
virtual bool | shapeProcess (fk_Solid *shape) |
形状設定時処理関数 | |
全体描画属性制御関数 | |
void | setDrawMode (fk_DrawMode mode) |
描画モード設定関数 | |
fk_DrawMode | getDrawMode (void) |
描画モード参照関数 | |
void | setBGColor (fk_Color col) |
背景色設定関数1 | |
void | setBGColor (float r, float g, float b) |
背景色設定関数2 | |
fk_Color | getBGColor (void) |
背景色参照関数 | |
void | setAxisScale (double scale) |
座標軸大きさ設定関数 | |
double | getAxisScale (void) |
座標軸大きさ参照関数 | |
fk_Vector | getCenter (void) |
描画領域中心座標参照関数 | |
形状個別描画属性・マテリアル設定関数 | |
void | setDrawMode (int ID, fk_DrawMode mode) |
個別形状描画モード設定関数 | |
fk_DrawMode | getDrawMode (int ID) |
個別形状描画モード参照関数 | |
void | setLineWidth (int ID, double width) |
形状稜線描画幅設定関数 | |
double | getLineWidth (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 | setFrameMode (fk_FrameMode mode) |
フレームレート制御方法指定関数 | |
fk_FrameMode | getFrameMode (void) |
フレームレート制御方法参照関数 | |
void | setFrameInterval (int ms) |
フレーム間時間設定関数 | |
int | getFrameInterval (void) |
フレーム間時間参照関数 | |
int | getSkipFrame (void) |
スキップフレーム数参照関数 | |
描画画像取り込み関数 | |
bool | snapImage (std::string fileName, fk_ImageType format=FK_IMAGE_BMP, fk_SnapProcMode mode=FK_SNAP_GL_FRONT) |
描画画像ファイル出力関数 | |
bool | snapImage (fk_Image *image, fk_SnapProcMode mode=FK_SNAP_GL_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 システムにおいて、形状を表示するためには形状用インスタンスの他にモデル、 シーン、ウィンドウを準備する必要があります。 また、様々な角度から形状を閲覧したい場合には、 さらにカメラ操作のプログラムを追加しなければなりません。 fk_ShapeViewer を用いると、モデル、シーン、ウィンドウを準備する必要はなく、 閲覧するための機能が最初から備わっています。
fk_ShapeViewer が備えている標準機能は、以下のようなものがあります。
上記の操作は全てメニューなどの GUI から操作が可能で、 プログラムとして記述する必要がありません。 また、以下に述べるような各種メンバ関数を利用することで、 プログラムから細かく制御することもできます。 例えば、複数の形状を別々に動作させるといった制御も可能となります。 特に ID を指定しなかった場合や、メニューから形状データを読み込んだ場合は、 形状 ID が 0 となります。
変形アニメーションの様子を表示することも可能です。 これは、 draw() を変形する度に呼び出すことで実現できます。
fk_ShapeViewer::fk_ShapeViewer | ( | int | w = 300 , |
|
int | h = 360 | |||
) |
コンストラクタ
描画領域の大きさを指定することができます。単位はピクセルとなります。 ウィンドウ全体の大きさではないことに注意して下さい。
[in] | w | 描画領域横幅 |
[in] | h | 描画領域縦幅 |
virtual fk_ShapeViewer::~fk_ShapeViewer | ( | ) | [virtual] |
デストラクタ
bool fk_ShapeViewer::draw | ( | void | ) |
描画更新関数
形状の描画を行います。 GUI ならびにメンバ関数によって操作を行っても、 この関数を呼ばなければ画面は更新されません。
通常は、以下のようなコードを記述することになります。
fk_ShapeViewer viewer; while(viewer.draw() == true) { // (もし必要なら)形状の変形処理を記述 }
void fk_ShapeViewer::setWindowSize | ( | int | w, | |
int | h | |||
) |
描画領域サイズ変更関数
描画領域のサイズを変更します。単位はピクセルとなります。
[in] | w | 描画領域横幅 |
[in] | h | 描画領域縦幅 |
void fk_ShapeViewer::setShape | ( | fk_Shape * | shape | ) |
単独形状設定関数
形状を描画対象として設定します。 fk_Shape の派生クラスであれば、 (テクスチャ系も含めて)全てのクラスを描画対象として設定できます。 なお、この関数は ID を 0 番として setShape(int, fk_Shape *) を用いた場合と同義になります。
[in] | shape | 形状インスタンス |
void fk_ShapeViewer::setShape | ( | int | ID, | |
fk_Shape * | shape | |||
) |
ID付き形状設定関数.
形状を描画対象として設定します。 setShape(fk_Shape *) との違いは、 指定の際に ID を付けることです。 複数の形状を同時に描画したい場合は、 異なる ID をそれぞれの形状に付けることで実現できます。
[in] | ID | 形状 ID |
[in] | shape | 形状インスタンス |
fk_Shape* fk_ShapeViewer::getShape | ( | int | ID = 0 |
) |
形状参照関数
指定した ID で設定されている形状インスタンスを返します。
[in] | ID | 形状 ID |
int fk_ShapeViewer::getModelNum | ( | void | ) |
形状設定数参照関数
現在設定されている形状の個数を返します。
void fk_ShapeViewer::clearModel | ( | void | ) |
形状設定初期化関数
現在設定されている全ての形状情報を消去します。
virtual bool fk_ShapeViewer::shapeProcess | ( | fk_Solid * | shape | ) | [virtual] |
形状設定時処理関数
この関数は、 setShape() やファイルからの形状入力が行われた際に、 自動的に呼び出されます。 呼び出された際に、引数には形状インスタンスが入ります。 このクラスは仮想関数となっており、 fk_ShapeViewer の派生クラスにおいてこの関数を再定義することにより、 形状設定やファイル入力時に形状に対して修正や分析などを行うことが可能となります。
[in] | shape | 形状インスタンス |
void fk_ShapeViewer::setDrawMode | ( | fk_DrawMode | mode | ) |
描画モード設定関数
登録されている全ての形状の描画モードを設定します。 描画モードとは、 面、稜線、頂点のそれぞれを描画するかどうかを制御するものです。 描画モードには以下のようなものがあります。
これらの描画モードは、 ビット論理和を用いて複数のものを同時に指定することが可能です。 以下のコードは、頂点、稜線、面の表をすべて描画するように設定します。
fk_ShapeViewer viewer; viewer.setDrawMode(FK_POINTMODE | FK_LINEMODE | FK_POLYMODE);
個別の形状に対して別々の描画モードを設定する場合は、 setDrawMode(int, fk_DrawMode) を利用して下さい。
[in] | mode | 描画モード |
fk_DrawMode fk_ShapeViewer::getDrawMode | ( | void | ) |
void fk_ShapeViewer::setBGColor | ( | fk_Color | col | ) |
背景色設定関数1
描画領域の背景色を設定します。
[in] | col | 背景色 |
void 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_ShapeViewer::getBGColor | ( | void | ) |
void fk_ShapeViewer::setAxisScale | ( | double | scale | ) |
座標軸大きさ設定関数
座標軸の大きさを設定します。ここでいう大きさとは、 各軸の長さのことです。
[in] | scale | 大きさ |
double fk_ShapeViewer::getAxisScale | ( | void | ) |
fk_Vector fk_ShapeViewer::getCenter | ( | void | ) |
描画領域中心座標参照関数
現在の描画領域で中心(注視点)となっている位置の位置ベクトルを返します。
void fk_ShapeViewer::setDrawMode | ( | int | ID, | |
fk_DrawMode | mode | |||
) |
個別形状描画モード設定関数
個別の形状に対して描画モードを設定します。 描画モードとは、 面、稜線、頂点のそれぞれを描画するかどうかを制御するものです。 描画モードには以下のようなものがあります。
これらの描画モードは、 ビット論理和を用いて複数のものを同時に指定することが可能です。 以下のコードは、頂点、稜線、面の表をすべて描画するように設定します。
fk_ShapeViewer viewer; viewer.setDrawMode(0, FK_POINTMODE | FK_LINEMODE | FK_POLYMODE);
全ての形状に対しての描画モードを設定する場合は、 setDrawMode(fk_DrawMode) を利用して下さい。
[in] | ID | 形状 ID |
[in] | mode | 描画モード |
fk_DrawMode fk_ShapeViewer::getDrawMode | ( | int | ID | ) |
void fk_ShapeViewer::setLineWidth | ( | int | ID, | |
double | width | |||
) |
形状稜線描画幅設定関数
形状に対し、稜線の描画幅を設定します。 単位はピクセルです。整数以外も設定可能です。
[in] | ID | 形状ID |
[in] | width | 描画幅 |
double fk_ShapeViewer::getLineWidth | ( | int | ID | ) |
void fk_ShapeViewer::setPointSize | ( | int | ID, | |
double | size | |||
) |
形状頂点描画サイズ設定関数
形状に対し、頂点描画サイズを設定します。 単位はピクセルです。整数以外も設定可能です。
[in] | ID | 形状ID |
[in] | size | 描画サイズ |
double fk_ShapeViewer::getPointSize | ( | int | ID | ) |
void fk_ShapeViewer::setMaterial | ( | int | ID, | |
fk_Material | mat | |||
) |
形状マテリアル設定関数
形状に対し、面のマテリアルを設定します。
[in] | ID | 形状ID |
[in] | mat | マテリアル |
void fk_ShapeViewer::setEdgeColor | ( | int | ID, | |
fk_Color | col | |||
) |
形状稜線描画色設定関数
形状に対し、稜線の描画色を設定します。
[in] | ID | 形状ID |
[in] | col | 稜線色 |
void fk_ShapeViewer::setVertexColor | ( | int | ID, | |
fk_Color | col | |||
) |
形状頂点描画色設定関数
形状に対し、頂点の描画色を設定します。
[in] | ID | 形状ID |
[in] | col | 頂点色 |
void fk_ShapeViewer::setHead | ( | double | angle | ) |
カメラヘッド角設定関数
カメラのヘッド角を設定します。 ヘッド角についての詳細は、 fk_Angle の解説を参照して下さい。 引数の単位は弧度法(ラジアン)となります。
[in] | angle | ヘッド角の角度 |
double fk_ShapeViewer::getHead | ( | void | ) |
void fk_ShapeViewer::setPitch | ( | double | angle | ) |
カメラピッチ角設定関数
カメラのピッチ角を設定します。 ピッチ角についての詳細は、 fk_Angle の解説を参照して下さい。 引数の単位は弧度法(ラジアン)となります。
[in] | angle | ピッチ角の角度 |
double fk_ShapeViewer::getPitch | ( | void | ) |
void fk_ShapeViewer::setBank | ( | double | angle | ) |
カメラバンク角設定関数
カメラのバンク角を設定します。 バンク角についての詳細は、 fk_Angle の解説を参照して下さい。 引数の単位は弧度法(ラジアン)となります。
[in] | angle | バンク角の角度 |
double fk_ShapeViewer::getBank | ( | void | ) |
void fk_ShapeViewer::setScale | ( | double | scale | ) |
double fk_ShapeViewer::getScale | ( | void | ) |
void fk_ShapeViewer::setPosition | ( | int | ID, | |
fk_Vector | pos | |||
) |
形状位置設定関数1
形状の位置を設定します。
[in] | ID | 形状ID |
[in] | pos | 形状位置ベクトル |
void 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_ShapeViewer::setAngle | ( | int | ID, | |
fk_Angle | angle | |||
) |
形状姿勢設定関数1
形状の姿勢をオイラー角で設定します。 オイラー角については、 fk_Angle の解説を参照して下さい。
[in] | ID | 形状ID |
[in] | angle | 姿勢を表すオイラー角 |
void 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_ShapeViewer::setVec | ( | int | ID, | |
fk_Vector | vec | |||
) |
形状方向ベクトル設定関数1
形状の方向ベクトルを設定します。 方向ベクトルは正規化してある必要はありません。
[in] | ID | 形状ID |
[in] | vec | 方向ベクトル |
void 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_ShapeViewer::setUpvec | ( | int | ID, | |
fk_Vector | vec | |||
) |
形状アップベクトル設定関数1
形状のアップベクトルを設定します。 アップベクトルは正規化してある必要はありません。
[in] | ID | 形状ID |
[in] | vec | アップベクトル |
void 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_ShapeViewer::setFrameMode | ( | fk_FrameMode | mode | ) |
フレームレート制御方法指定関数
この関数は、フレームレートを制御するためのモードを指定します。 「フレームレート」とは、1秒間あたりの画面更新回数のことです。 フレームレートの制御には、以下の2種類があります。
モードには、以下の3種類が指定できます。
なお、FK_WAIT_FRAME と FK_SKIP_FRAME は同時に指定することが可能です。 その場合は、以下のようにビット論理和演算子を利用します。
fk_ShapeViewer viewer; viewer.setFrameMode(FK_WAIT_FRAME | FK_SKIP_FRAME);
[in] | mode | 制御モード |
fk_FrameMode fk_ShapeViewer::getFrameMode | ( | void | ) |
void fk_ShapeViewer::setFrameInterval | ( | int | ms | ) |
フレーム間時間設定関数
この関数は、フレームレート制御の「ウェイトモード」および 「スキップモード」における、 フレーム間時間の設定を行います。 「フレーム間時間」とは、 あるフレームが表示されてから次のフレームが表示されるまでの時間のことです。 例えば秒間60フレームとしたい場合は、 フレーム間時間は となります。 なお、本関数では指定はミリ秒(1000分の1秒)単位で行い、 型は int 型となります。従って、前述した秒間60フレームの場合は 「16」または「17」を指定することになります。
[in] | ms | フレーム間時間。単位はミリ秒です。 |
int fk_ShapeViewer::getFrameInterval | ( | void | ) |
int fk_ShapeViewer::getSkipFrame | ( | void | ) |
スキップフレーム数参照関数
フレーム制御で「スキップモード」を用いている場合に、 現在表示されているフレームとその前のフレームの間に、 何枚分のフレームが描画スキップされたかを参照します。
bool fk_ShapeViewer::snapImage | ( | std::string | fileName, | |
fk_ImageType | format = FK_IMAGE_BMP , |
|||
fk_SnapProcMode | mode = FK_SNAP_GL_FRONT | |||
) |
描画画像ファイル出力関数
この関数は、描画領域に表示されている画像を、画像ファイルとして出力します。
[in] | fileName | 画像ファイル名 |
[in] | format | 画像ファイルのフォーマット。 現在利用可能なフォーマットは、 fk_ImageType の解説を参照して下さい。 |
[in] | mode | 画像の取込先となるグラフィックスデバイス名。 取り込みがうまく動作しない場合は、 この引数の値を変更してください。 |
bool fk_ShapeViewer::snapImage | ( | fk_Image * | image, | |
fk_SnapProcMode | mode = FK_SNAP_GL_FRONT | |||
) |
描画画像データ出力関数
この関数は、描画領域に表示されている画像を、 fk_Image 型のインスタンスに出力します。
[in] | image | 画像データ出力先インスタンス |
[in] | mode | 画像の取込先となるグラフィックスデバイス名。 取り込みがうまく動作しない場合は、 この引数の値を変更してください。 |
void fk_ShapeViewer::setPutStrMode | ( | const fk_PutStrMode | mode | ) |
メッセージ出力モード設定関数
実質的に、 fk_Window::setPutStrMode() とまったく同じ動作となります。 そちらの解説を参照して下さい。
fk_PutStrMode fk_ShapeViewer::getPutStrMode | ( | void | ) |
メッセージ出力モード参照関数
実質的に、 fk_Window::getPutStrMode() とまったく同じ動作となります。 そちらの解説を参照して下さい。
bool fk_ShapeViewer::setPutFile | ( | const std::string & | str | ) |
メッセージ出力用ファイル設定関数
実質的に、 fk_Window::setPutFile() とまったく同じ動作となります。 そちらの解説を参照して下さい。
void fk_ShapeViewer::putString | ( | const std::string & | str | ) |
メッセージ出力文字列設定関数
実質的に、 fk_Window::putString() とまったく同じ動作となります。 そちらの解説を参照して下さい。
void fk_ShapeViewer::printf | ( | const char * | format, | |
... | ||||
) |
void fk_ShapeViewer::clearBrowser | ( | void | ) |
メッセージ出力用ブラウザ初期化関数
実質的に、 fk_Window::clearBrowser() とまったく同じ動作となります。 そちらの解説を参照して下さい。