FineKernelToolKit 3.1.0

- 総合概要
- 名前空間
- クラス
- ファイル

- クラス一覧
- クラス階層
- クラスメンバ

公開メンバ関数 | プロパティ | 全メンバ一覧
FK_CLI::fk_ShapeViewer クラス

簡易形状表示システム用クラス [詳解]

FK_CLI::fk_ShapeViewer の継承関係図
[凡例]
FK_CLI::fk_ShapeViewer 連携図
[凡例]

## 公開メンバ関数
| 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_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 | 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_DrawMode | DrawMode`[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]`
| カメラ倍率プロパティ [詳解]

## 詳解

簡易形状表示システム用クラス

このクラスは、簡易形状表示システムを制御する機能を提供します。

FK システムにおいて、形状を表示するためには形状用インスタンスの他にモデル、 シーン、ウィンドウを準備する必要があります。 また、様々な角度から形状を閲覧したい場合には、 さらにカメラ操作のプログラムを追加しなければなりません。 fk_ShapeViewer を用いると、モデル、シーン、ウィンドウを準備する必要はなく、 閲覧するための機能が最初から備わっています。

fk_ShapeViewer が備えている標準機能は、以下のようなものがあります。

- VRML、STL、DXF 各フォーマットファイル入力機能と、VRML ファイル出力機能。
- 表示されている画像をファイルに保存する機能。
- 面表示、稜線表示、頂点表示の各 ON/OFF および座標軸表示の ON/OFF。
- 光源回転有無の制御。
- 面のマテリアルおよび稜線、頂点の表示色設定。
- GUI による姿勢制御および表示倍率、座標軸サイズの制御。
- 左右矢印キーによるヘディング角制御。
- スペースキーによる表示倍率制御。スペースキー単体で拡大、 シフトキーとスペースキーを同時に押すことで縮小が行えます。
- マウスドラッグ操作による形状の平行移動。

上記の操作は全てメニューなどの GUI から操作が可能で、 プログラムとして記述する必要がありません。 また、以下に述べるような各種メソッドを利用することで、 プログラムから細かく制御することもできます。 例えば、複数の形状を別々に動作させるといった制御も可能となります。 特に ID を指定しなかった場合や、メニューから形状データを読み込んだ場合は、 形状 ID が 0 となります。

変形アニメーションの様子を表示することも可能です。 これは、 Draw() を変形する度に呼び出すことで実現できます。

参照
  fk_AppWindow

## 構築子と解体子

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) {
        // (もし必要なら)形状の変形処理を記述
    }

戻り値
  描画が正常に行えた場合、true を返します。 そうでない場合に false を返します。 これは例えば、ウィンドウが閉じられた場合などがそれに当たります。

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

戻り値
  形状インスタンスを返します。 指定した ID の形状インスタンスが存在しない場合は、null を返します。

void FK_CLI::fk_ShapeViewer::ClearModel | ( | void |  | ) |

形状設定初期化メソッド

現在設定されている全ての形状情報を消去します。

void FK_CLI::fk_ShapeViewer::SetDrawMode | ( | int | ID,
|  | fk_DrawMode | mode
| ) |  |

個別形状描画モード設定メソッド

個別の形状に対して描画モードを設定します。 描画モードとは、 面、稜線、頂点のそれぞれを描画するかどうかを制御するものです。 描画モードには以下のようなものがあります。

- fk_DrawMode.NONEMODE: 何も描画しません。
- fk_DrawMode.POINTMODE: 頂点を描画します。
- fk_DrawMode.LINEMODE: 稜線を描画します。
- fk_DrawMode.POLYMODE: 面の表を描画します。
- fk_DrawMode.BACK_POLYMODE: 面の裏を描画します。
- fk_DrawMode.FRONTBACK_POLYMODE: 面の表と裏を描画します。
- fk_DrawMode.TEXTUREMODE: テクスチャを描画します。

これらの描画モードは、 ビット論理和を用いて複数のものを同時に指定することが可能です。 以下のコードは、頂点、稜線、面の表をすべて描画するように設定します。

    fk_ShapeViewer  viewer;

    viewer.setDrawMode(1, fk_DrawMode.POINTMODE | fk_DrawMode.LINEMODE | fk_DrawMode.POLYMODE);

全ての形状に対しての描画モードを設定する場合は、 fk_ShapeViewer::DrawMode プロパティを利用して下さい。

引数

  [in] | ID | 形状 ID
  [in] | mode | 描画モード

参照
  DrawMode, fk_Model::DrawMode

fk_DrawMode FK_CLI::fk_ShapeViewer::GetDrawMode | ( | int | ID | ) |

描画モード参照メソッド

現在の描画モードを参照します。

戻り値
  描画モード

参照
  SetDrawMode(int, fk_DrawMode)

void FK_CLI::fk_ShapeViewer::SetLineWidth | ( | int | ID,
|  | double | width
| ) |  |

形状稜線描画幅設定メソッド

形状に対し、稜線の描画幅を設定します。 単位はピクセルです。整数以外も設定可能です。

引数

  [in] | ID | 形状ID
  [in] | width | 描画幅

double FK_CLI::fk_ShapeViewer::GetLineWidth | ( | int | ID | ) |

形状稜線描画幅参照メソッド

形状の稜線描画幅を取得します。 単位はピクセルです。

引数

  [in] | ID | 形状ID

戻り値
  描画幅

参照
  GetLineWidth()

void FK_CLI::fk_ShapeViewer::SetPointSize | ( | int | ID,
|  | double | size
| ) |  |

形状頂点描画サイズ設定メソッド

形状に対し、頂点描画サイズを設定します。 単位はピクセルです。整数以外も設定可能です。

引数

  [in] | ID | 形状ID
  [in] | size | 描画サイズ

double FK_CLI::fk_ShapeViewer::GetPointSize | ( | int | ID | ) |

形状頂点描画サイズ参照メソッド

形状の頂点描画サイズを取得します。 単位はピクセルです。

引数

  [in] | ID | 形状ID

戻り値
  描画サイズ

参照
  SetPointSize()

void FK_CLI::fk_ShapeViewer::SetMaterial | ( | int | ID,
|  | fk_Material^ | mat
| ) |  |

形状マテリアル設定メソッド

形状に対し、面のマテリアルを設定します。

引数

  [in] | ID | 形状ID
  [in] | mat | マテリアル

参照
  SetEdgeColor(), SetVertexColor(), fk_Material

void FK_CLI::fk_ShapeViewer::SetEdgeColor | ( | int | ID,
|  | fk_Color^ | col
| ) |  |

形状稜線描画色設定メソッド

形状に対し、稜線の描画色を設定します。

引数

  [in] | ID | 形状ID
  [in] | col | 稜線色

参照
  SetMaterial(), SetVertexColor(), fk_Color

void FK_CLI::fk_ShapeViewer::SetVertexColor | ( | int | ID,
|  | fk_Color^ | col
| ) |  |

形状頂点描画色設定メソッド

形状に対し、頂点の描画色を設定します。

引数

  [in] | ID | 形状ID
  [in] | col | 頂点色

参照
  SetMaterial(), SetEdgeColor(), fk_Color

void FK_CLI::fk_ShapeViewer::SetPosition | ( | int | ID,
|  | fk_Vector^ | pos
| ) |  |

形状位置設定メソッド1

形状の位置を設定します。

引数

  [in] | ID | 形状ID
  [in] | pos | 形状位置ベクトル

参照
  SetPosition(int, double, double, double), SetAngle(int, fk_Angle^), SetVec(int, fk_Vector^), SetUpvec(int, fk_Vector^)

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成分

参照
  SetPosition(int, fk_Vector^), SetAngle(int, fk_Angle^), SetVec(int, fk_Vector^), SetUpvec(int, fk_Vector^)

void FK_CLI::fk_ShapeViewer::SetAngle | ( | int | ID,
|  | fk_Angle^ | angle
| ) |  |

形状姿勢設定メソッド1

形状の姿勢をオイラー角で設定します。 オイラー角については、 fk_Angle の解説を参照して下さい。

引数

  [in] | ID | 形状ID
  [in] | angle | 姿勢を表すオイラー角

参照
  SetAngle(int, double, double, double), SetPosition(int, fk_Vector^), SetVec(int, fk_Vector^), SetUpvec(int, fk_Vector^)

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 | 姿勢を表すオイラー角のバンク角度

参照
  SetAngle(int, fk_Angle^), SetPosition(int, fk_Vector^), SetVec(int, fk_Vector^), SetUpvec(int, fk_Vector^)

void FK_CLI::fk_ShapeViewer::SetVec | ( | int | ID,
|  | fk_Vector^ | vec
| ) |  |

形状方向ベクトル設定メソッド1

形状の方向ベクトルを設定します。 方向ベクトルは正規化してある必要はありません。

引数

  [in] | ID | 形状ID
  [in] | vec | 方向ベクトル

参照
  SetVec(int, double, double, double), SetPosition(int, fk_Vector^), SetAngle(int, fk_Angle^), SetUpvec(int, fk_Vector^)

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成分

参照
  SetVec(int, fk_Vector^), SetPosition(int, fk_Vector^), SetAngle(int, fk_Angle^), SetUpvec(int, fk_Vector^)

void FK_CLI::fk_ShapeViewer::SetUpvec | ( | int | ID,
|  | fk_Vector^ | vec
| ) |  |

形状アップベクトル設定メソッド1

形状のアップベクトルを設定します。 アップベクトルは正規化してある必要はありません。

引数

  [in] | ID | 形状ID
  [in] | vec | アップベクトル

参照
  SetUpvec(int, double, double, double), SetPosition(int, fk_Vector^), SetAngle(int, fk_Angle^), SetVec(int, fk_Vector^)

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成分

参照
  SetUpvec(int, fk_Vector^), SetPosition(int, fk_Vector^), SetAngle(int, fk_Angle^), SetVec(int, fk_Vector^)

bool FK_CLI::fk_ShapeViewer::SnapImage | ( | String^ | fileName,
|  | fk_ImageType | format
| ) |  |

描画画像ファイル出力メソッド

このメソッドは、描画領域に表示されている画像を、画像ファイルとして出力します。

引数

  [in] | fileName | 画像ファイル名
  [in] | format | 画像ファイルのフォーマット。 現在利用可能なフォーマットは、 fk_ImageType の解説を参照して下さい。

戻り値
  出力に成功すれば true を、失敗すれば false を返します。

bool FK_CLI::fk_ShapeViewer::SnapImage | ( | fk_Image^ | image | ) |

描画画像データ出力メソッド

このメソッドは、描画領域に表示されている画像を、 fk_Image 型のインスタンスに出力します。

引数

  [in] | image | 画像データ出力先インスタンス

戻り値
  出力に成功すれば true を、失敗すれば false を返します。

## プロパティ詳解

fk_Dimension^ FK_CLI::fk_ShapeViewer::WindowSize
| set

描画領域サイズプロパティ

描画領域のサイズを変更します。単位はピクセルとなります。

fk_Shape^ FK_CLI::fk_ShapeViewer::Shape
| get set

単独形状参照・設定プロパティ

形状を描画対象として設定します。 fk_Shape の派生クラスであれば、 (テクスチャ系も含めて)全てのクラスを描画対象として設定できます。

なお、このプロパティへの設定は ID を 0 番として SetShape(int, fk_Shape^) を用いた場合と同義になります。 また、参照は GetShape() において ID に 0 を指定した場合と同義となります。

参照
  SetShape(), GetShape()

int FK_CLI::fk_ShapeViewer::ModelNum
| get

形状設定数プロパティ

現在設定されている形状の個数を参照します。

fk_DrawMode FK_CLI::fk_ShapeViewer::DrawMode
| get set

描画モードプロパティ

登録されている全ての形状の描画モードを設定します。 描画モードとは、 面、稜線、頂点のそれぞれを描画するかどうかを制御するものです。 描画モードには以下のようなものがあります。

- fk_DrawMode.NONEMODE: 何も描画しません。
- fk_DrawMode.POINTMODE: 頂点を描画します。
- fk_DrawMode.LINEMODE: 稜線を描画します。
- fk_DrawMode.POLYMODE: 面の表を描画します。
- fk_DrawMode.BACK_POLYMODE: 面の裏を描画します。
- fk_DrawMode.FRONTBACK_POLYMODE: 面の表と裏を描画します。
- fk_DrawMode.TEXTUREMODE: テクスチャを描画します。

これらの描画モードは、 ビット論理和を用いて複数のものを同時に指定することが可能です。 以下のコードは、頂点、稜線、面の表をすべて描画するように設定します。

    fk_ShapeViewer  viewer;

    viewer.DrawMode = fk_DrawMode.POINTMODE | fk_DrawMode.LINEMODE | fk_DrawMode.POLYMODE;

個別の形状に対して別々の描画モードを設定する場合は、 SetDrawMode(int, fk_DrawMode) を利用して下さい。

参照
  SetDrawMode(int, fk_DrawMode), fk_Model::DrawMode

bool FK_CLI::fk_ShapeViewer::BlendStatus
| get set

透過処理プロパティ

描画の際、透過処理を有効とするかどうかの参照・設定を行います。 true であれば有効、false であれば無効とします。 機能的には fk_Scene::BlendStatus プロパティと同様です。 詳細は、 fk_Scene::BlendStatus のマニュアルを参照して下さい。

参照
  fk_Scene::BlendStatus

fk_Color^ FK_CLI::fk_ShapeViewer::BGColor
| get set

背景色プロパティ

描画領域背景色の参照・設定を行います。

bool FK_CLI::fk_ShapeViewer::AxisMode
| get set

座標軸描画設定メソッド

座標軸の表示の有無の参照・設定を行います。 true であれば描画有効、false であれば無効とします。

参照
  AxisScale

double FK_CLI::fk_ShapeViewer::AxisScale
| get set

座標軸大きさ設定メソッド

座標軸の大きさの参照・設定を行います。 ここでいう大きさとは、各軸の長さのことです。

参照
  AxisMode

fk_Vector^ FK_CLI::fk_ShapeViewer::Center
| get

描画領域中心座標プロパティ

現在の描画領域で中心(注視点)となっている位置の位置ベクトルを参照します。

double FK_CLI::fk_ShapeViewer::Head
| get set

カメラヘッド角プロパティ

カメラのヘッド角の参照・設定を行います。 ヘッド角についての詳細は、 fk_Angle の解説を参照して下さい。 引数の単位は弧度法(ラジアン)となります。

参照
  Pitch, Bank, Scale, fk_Angle

double FK_CLI::fk_ShapeViewer::Pitch
| get set

カメラピッチ角プロパティ

カメラのピッチ角の参照・設定を行います。 ピッチ角についての詳細は、 fk_Angle の解説を参照して下さい。 引数の単位は弧度法(ラジアン)となります。

参照
  Head, Bank, Scale, fk_Angle

double FK_CLI::fk_ShapeViewer::Bank
| get set

カメラバンク角プロパティ

カメラのバンク角の参照・設定を行います。 バンク角についての詳細は、 fk_Angle の解説を参照して下さい。 引数の単位は弧度法(ラジアン)となります。

参照
  Head, Pitch, Scale, fk_Angle

double FK_CLI::fk_ShapeViewer::Scale
| get set

カメラ倍率プロパティ

カメラの表示倍率を設定します。

参照
  Head, Picth, Bank