# クラス fk_IndexFaceSet

インデックスフェースセットによる任意形状を生成、管理するクラス [詳細]

fk_IndexFaceSetに対する継承グラフ
[凡例]
fk_IndexFaceSetのコラボレーション図
[凡例]

すべてのメンバ一覧

## Public メソッド
| fk_IndexFaceSet (void)
| コンストラクタ
| ~fk_IndexFaceSet ()
| デストラクタ
ファイル・データ入力関数
bool | readSMFFile (std::string fileName)
| SMFファイル入力関数.
bool | readVRMLFile (std::string fileName, bool materialFlg=true, bool solidFlg=true)
| VRML ファイル入力関数.
bool | readSTLFile (std::string fileName, bool solidFlg=true, double tolerance=1.0e-08)
| STL ファイル入力関数.
bool | readHRCFile (std::string fileName)
| HRCファイル入力関数.
bool | readRDSFile (std::string fileName, bool solidFlg=true)
| RDSファイル入力関数.
bool | readDXFFile (std::string fileName, bool solidFlg=true)
| DXFファイル入力関数.
bool | readMQOFile (std::string fileName, std::string objName, bool solidFlg=true, bool contFlg=true, bool materialFlg=false)
| MQOファイル入力関数1.
bool | readMQOFile (std::string fileName, std::string objName, int materialID, bool solidFlg=true, bool contFlg=true, bool materialFlg=false)
| MQOファイル入力関数2.
bool | readMQOData (unsigned char *buffer, std::string objName, bool solidFlg=true, bool contFlg=true, bool materialFlg=false)
| MQOデータ入力関数1.
bool | readMQOData (unsigned char *buffer, std::string objName, int materialID, bool solidFlg=true, bool contFlg=true, bool materialFlg=false)
| MQOデータ入力関数2.
bool | readD3DXFile (std::string fileName, std::string objName, bool solidFlg=true)
| DirectX (D3DX) ファイル入力関数1.
bool | readD3DXFile (std::string fileName, std::string objName, int materialID, bool solidFlg=true)
| DirectX (D3DX) ファイル入力関数2.
ファイル出力関数
bool | writeVRMLFile (std::string fileName, fk_Material *material=NULL, bool triFlg=false)
| VRML ファイル出力関数1.
bool | writeVRMLFile (std::string fileName, std::vector< double > *time, std::vector< fk_Vector > *pos, fk_Material *material=NULL, bool triFlg=false)
| VRML ファイル出力関数2.
bool | writeSTLFile (std::string fileName)
| STL ファイル出力関数.
bool | writeDXFFile (std::string fileName, bool triFlg=false)
| DXF ファイル出力関数.
bool | writeMQOFile (std::string fileName)
| MQO ファイル出力関数.
形状情報参照関数
int | getPosSize (void)
| 頂点数参照関数
int | getFaceSize (void)
| 面数参照関数
fk_Vector | getPosVec (int vertexID)
| 頂点位置ベクトル参照関数
std::vector< int > | getFaceData (int faceID)
| 頂点 ID 配列参照関数
int | getFaceData (int faceID, int vertexNum)
| 頂点 ID 参照関数
fk_IFType | getFaceType (void)
| 面タイプ取得関数
fk_Vector | getPNorm (int faceID, int order=0)
| 面法線ベクトル取得関数
fk_Vector | getVNorm (int vertexID, int order=0)
| 頂点法線ベクトル取得関数
int | getElemMaterialID (int faceID)
| マテリアルID取得関数
汎用形状操作関数
bool | moveVPosition (int vertexID, const fk_Vector &pos, int order=0)
| 頂点移動関数1
bool | moveVPosition (int vertexID, double x, double y, double z, int order=0)
| 頂点移動関数2
bool | moveVPosition (int vertexID, double *array, int order=0)
| 頂点移動関数3
void | makeIFSet (int faceNum, int polyNum, int *IFSet, int vertexNum, fk_Vector *posArray, int order=0)
| 任意形状生成関数
bool | setPNorm (int faceID, const fk_Vector &norm, int order=0)
| 面法線ベクトル設定関数
bool | setVNorm (int vertexID, const fk_Vector &norm, int order=0)
| 頂点法線ベクトル設定関数
bool | setElemMaterialID (int faceID, int materialID)
| マテリアルID設定関数
void | flush (void)
| 法線ベクトル強制計算関数
直方体形状制御関数
void | makeBlock (double x, double y, double z)
| 直方体生成関数
void | setBlockSize (double x, double y, double z)
| 直方体辺長変更関数
void | setBlockSize (double length, fk_Axis axis)
| 直方体個別辺長設定関数
void | setBlockScale (double scale)
| 直方体全体拡大縮小関数
void | setBlockScale (double scale, fk_Axis axis)
| 直方体軸方向拡大縮小関数
void | setBlockScale (double x, double y, double z)
| 直方体軸方向個別拡大縮小関数
円形状制御関数
void | makeCircle (int div, double rad)
| 円形状生成関数
void | setCircleRadius (double rad)
| 円形状半径設定関数
void | setCircleDivide (int div)
| 円形状分割数設定関数
void | setCircleScale (double scale)
| 円形状拡大縮小関数
球形状制御関数
void | makeSphere (int div, double rad)
| 球形状生成関数
void | setSphereRadius (double rad)
| 球形状半径設定関数
void | setSphereDivide (int div)
| 球形状分割数設定関数
void | setSphereScale (double scale)
| 球形状拡大縮小関数
正多角柱(円柱)形状制御関数
void | makePrism (int div, double top, double bottom, double height)
| 正多角柱(円柱)形状生成関数
void | setPrismDivide (int div)
| 正多角柱(円柱)角数設定関数
void | setPrismTopRadius (double top)
| 正多角柱(円柱)上面半径設定関数
void | setPrismBottomRadius (double bottom)
| 正多角柱(円柱)角数設定関数
void | setPrismHeight (double height)
| 正多角柱(円柱)高さ設定関数
正多角錐(円錐)形状制御関数
void | makeCone (int div, double rad, double height)
| 正多角錐(円錐)形状生成関数
void | setConeDivide (int div)
| 正多角錐(円錐)角数設定関数
void | setConeRadius (double rad)
| 正多角錐(円錐)底面半径設定関数
void | setConeHeight (double height)
| 正多角錐(円錐)高さ設定関数
その他
void | putSolid (fk_Solid *solid)
| fk_Solid 出力関数
void | setAnimationTime (double time)
| アニメーション時間設定関数
void | setBVHMotion (fk_BVHMotion *bvh)
| BVHデータ設定関数.

## 説明

インデックスフェースセットによる任意形状を生成、管理するクラス

このクラスは、「インデックスフェースセット」による任意形状を制御する機能を提供します。

fk_IndexFaceSet の主な用途は、3次元形状データファイルからデータを読み込み、 それを表示することです。以下のデータフォーマットをサポートしています。

- VRML 形式
- STL 形式
- SMF 形式
- HRC 形式
- RDS (Ray Dream Studio) 形式
- DXF 形式
- MQO (Metasequoia) 形式
- D3DX (DirectX) 形式

また、これらのデータファイル入力の他に、 頂点座標データとインデックスフェースデータから形状を自前で生成することも可能です。 ただし、作成できる形状には制限げあります。 この機能の詳細は makeIFSet() を参照して下さい。

入力した形状に対し、各頂点を移動してアニメーションを表現することが可能です。 この機能の詳細は moveVPosition() を参照して下さい。 位相変化を伴う変形は、 fk_IndexFaceSet では行うことができません。 位相変化を伴う変形を行うには、 fk_Solid クラスを用いてください。

D3DX 形式ではボーンアニメーションをサポートしていますが、 その再生を行うことも可能です。 この機能の詳細は setAnimationTime() を参照して下さい。 また、ボーンアニメーションデータのみのデータとして BVH 形式を入力し、 アニメーションをすることも可能になっています。 この機能の詳細は setBVHMotion() を参照して下さい。

任意の形状を表現するクラスとして、 fk_IndexFaceSet の他に fk_Solid があります。 fk_IndexFaceSet は、 fk_Solid と比較して高速な描画が行えるという長所があります。 しかしその一方で、 fk_IndexFaceSet は面が3角形か4角形のみ(そして混在は不可)という制限があります。 また、位相変化を伴う変形には対応していません。 より高度な形状表現や位相変化を伴う変形を利用する場合は fk_Solid を利用して下さい。

fk_IndexFaceSet 自体は、テクスチャ描画に対応していません。 テクスチャによる形状描画を行いたい場合は、 fk_IFSTexture クラスを用いて下さい。

参照:
  fk_IFSTexture, fk_Solid, fk_Shape, fk_Model, fk_Block, fk_Circle, fk_Sphere, fk_Prism, fk_Cone

## コンストラクタとデストラクタ

fk_IndexFaceSet::fk_IndexFaceSet | ( | void |  | ) |

コンストラクタ

fk_IndexFaceSet::~fk_IndexFaceSet | ( |  | ) |

デストラクタ

## 関数

bool fk_IndexFaceSet::readSMFFile | ( | std::string | fileName | ) |

SMFファイル入力関数.

SMF形式のファイルからデータを入力します。

引数:

  `[in]` | fileName | ファイル名

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

bool fk_IndexFaceSet::readVRMLFile | ( | std::string | fileName,
|  | bool | materialFlg = `true`,
|  | bool | solidFlg = `true` |
| ) |  |  |

VRML ファイル入力関数.

VRML形式のファイルからデータを入力します。 VRMLでは、形状を表す様々なノードがありますが、 本関数が対応しているのは「IndexedFaceSet」ノードに記述された形状のみです。

引数:

  `[in]` | fileName | ファイル名
  `[in]` | materialFlg | true の場合、VRMLファイル中で設定されているマテリアル情報を入力します。 false の場合は、マテリアル情報を無視します。
  `[in]` | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 入力データのままインデックスフェースセットを構築します。

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

覚え書き:
  VRML形式は、1994年に策定された通称「VRML1.0」と、 1997年に策定された「VRML97」の2種類があり、 VRML97は「VRML2.0」とも呼ばれます。 本関数では入力フォーマットとして VRML2.0 を想定しています。
  VRMLは文法解釈、特にセパレータの扱い方についてはあまり厳密になっておらず、 様々なデータによって異なる解釈がなされているようです。 そのため、構文解析がうまくいかずに入力失敗する場合がありえます。

bool fk_IndexFaceSet::readSTLFile | ( | std::string | fileName,
|  | bool | solidFlg = `true`,
|  | double | tolerance = `1.0e-08` |
| ) |  |  |

STL ファイル入力関数.

STL形式のファイルからデータを入力します。 対応しているのは面データのみです。 また、以下の条件に当てはまるデータは fk_IndexFaceSet では入力できません。

- 5以上の角数である面が存在する。
- 3角形面と4角形面が混在している。

引数:

  `[in]` | fileName | ファイル名
  `[in]` | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
  `[in]` | tolerance | solidFlg で true を指定した場合、 頂点同士が同一かどうかを判断するための距離許容誤差を指定します。 solidFlg が false であった場合、この値は無視されます。

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

bool fk_IndexFaceSet::readHRCFile | ( | std::string | fileName | ) |

HRCファイル入力関数.

HRC形式のファイルからデータを入力します。

引数:

  `[in]` | fileName | ファイル名

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

bool fk_IndexFaceSet::readRDSFile | ( | std::string | fileName,
|  | bool | solidFlg = `true` |
| ) |  |  |

RDSファイル入力関数.

RDS (Ray Dream Studio) 形式のファイルからデータを入力します。

引数:

  `[in]` | fileName | ファイル名
  `[in]` | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。

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

bool fk_IndexFaceSet::readDXFFile | ( | std::string | fileName,
|  | bool | solidFlg = `true` |
| ) |  |  |

DXFファイル入力関数.

DXF 形式のファイルからデータを入力します。

引数:

  `[in]` | fileName | ファイル名
  `[in]` | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。

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

bool fk_IndexFaceSet::readMQOFile | ( | std::string | fileName,
|  | std::string | objName,
|  | bool | solidFlg = `true`,
|  | bool | contFlg = `true`,
|  | bool | materialFlg = `false` |
| ) |  |  |

MQOファイル入力関数1.

MQO 形式のファイルからデータを入力します。

この関数は、テクスチャ用のデータの入力は行いません。 テクスチャデータも併せて表示を行いたい場合は、 fk_IFSTexture クラスを利用して下さい。

MQOデータには「オブジェクト」という概念があり、 1つの形状データが複数のオブジェクトによって構成されていることがあります。 この関数では、ファイル名とともにオブジェクト名を指定する必要があります。

引数:

  `[in]` | fileName | ファイル名
  `[in]` | objName | オブジェクト名
  `[in]` | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
  `[in]` | contFlg | テクスチャ断絶の設定を指定します。これは、テクスチャ座標が不連続な箇所に対し、 形状の位相を断絶する操作を行うためのものです。 これを true にした場合は断裂操作が行われ、 テクスチャ座標が不連続な箇所が幾何的にも不連続となるように表示されます。 ほとんどの場合は、断裂操作を行った方が良好な描画結果となります。 ただし、断裂操作を行う際に新たな位相要素を生成するため、 本来のデータよりも頂点、稜線、面が若干増加する場合があります。 false にした場合は、断裂操作を行わずに通常のデータ通り読み込みます。
  `[in]` | materialFlg | true の場合、VRMLファイル中で設定されているマテリアル情報を入力します。 false の場合は、マテリアル情報を無視します。

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

参照:
  readMQOData(), fk_IFSTexture::readMQOFile()

bool fk_IndexFaceSet::readMQOFile | ( | std::string | fileName,
|  | std::string | objName,
|  | int | materialID,
|  | bool | solidFlg = `true`,
|  | bool | contFlg = `true`,
|  | bool | materialFlg = `false` |
| ) |  |  |

MQOファイル入力関数2.

MQO 形式のファイルからデータを入力します。

この関数は、テクスチャ用のデータの入力は行いません。 テクスチャデータも併せて表示を行いたい場合は、 fk_IFSTexture クラスを利用して下さい。

MQOデータには「オブジェクト」という概念があり、 1つの形状データが複数のオブジェクトによって構成されていることがあります。 この関数では、ファイル名とともにオブジェクト名を指定する必要があります。

引数:

  `[in]` | fileName | ファイル名
  `[in]` | objName | オブジェクト名
  `[in]` | materialID | MQOデータではマテリアルを複数設定することができ、 各ポリゴンに対してどのマテリアルを割り振るかのIDが設定されています。 この引数にマテリアルIDを指定すると、そのIDを持つポリゴンのみを読み込みます。 materialID に -1 を入力した場合は、すべてのポリゴンを読み込みます。
  `[in]` | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
  `[in]` | contFlg | テクスチャ断絶の設定を指定します。これは、テクスチャ座標が不連続な箇所に対し、 形状の位相を断絶する操作を行うためのものです。 これを true にした場合は断裂操作が行われ、 テクスチャ座標が不連続な箇所が幾何的にも不連続となるように表示されます。 ほとんどの場合は、断裂操作を行った方が良好な描画結果となります。 ただし、断裂操作を行う際に新たな位相要素を生成するため、 本来のデータよりも頂点、稜線、面が若干増加する場合があります。 false にした場合は、断裂操作を行わずに通常のデータ通り読み込みます。
  `[in]` | materialFlg | true の場合、VRMLファイル中で設定されているマテリアル情報を入力します。 false の場合は、マテリアル情報を無視します。

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

参照:
  readMQOData(), fk_IFSTexture::readMQOFile()

bool fk_IndexFaceSet::readMQOData | ( | unsigned char * | buffer,
|  | std::string | objName,
|  | bool | solidFlg = `true`,
|  | bool | contFlg = `true`,
|  | bool | materialFlg = `false` |
| ) |  |  |

MQOデータ入力関数1.

MQO形式のデータを入力します。 この関数では、MQO形式のデータが既に unsigned char 型の配列中に入力されていると仮定し、 readMQOFile() 関数と同様の処理を行います。

この関数は、テクスチャ用のデータの入力は行いません。 テクスチャデータも併せて表示を行いたい場合は、 fk_IFSTexture クラスを利用して下さい。

MQOデータには「オブジェクト」という概念があり、 1つの形状データが複数のオブジェクトによって構成されていることがあります。 この関数では、ファイル名とともにオブジェクト名を指定する必要があります。

引数:

  `[in]` | buffer | データが格納されているバッファ
  `[in]` | objName | オブジェクト名
  `[in]` | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
  `[in]` | contFlg | テクスチャ断絶の設定を指定します。これは、テクスチャ座標が不連続な箇所に対し、 形状の位相を断絶する操作を行うためのものです。 これを true にした場合は断裂操作が行われ、 テクスチャ座標が不連続な箇所が幾何的にも不連続となるように表示されます。 ほとんどの場合は、断裂操作を行った方が良好な描画結果となります。 ただし、断裂操作を行う際に新たな位相要素を生成するため、 本来のデータよりも頂点、稜線、面が若干増加する場合があります。 false にした場合は、断裂操作を行わずに通常のデータ通り読み込みます。
  `[in]` | materialFlg | true の場合、VRMLファイル中で設定されているマテリアル情報を入力します。 false の場合は、マテリアル情報を無視します。

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

参照:
  readMQOFile(), fk_IFSTexture::readMQOData()

bool fk_IndexFaceSet::readMQOData | ( | unsigned char * | buffer,
|  | std::string | objName,
|  | int | materialID,
|  | bool | solidFlg = `true`,
|  | bool | contFlg = `true`,
|  | bool | materialFlg = `false` |
| ) |  |  |

MQOデータ入力関数2.

MQO形式のデータを入力します。 この関数では、MQO形式のデータが既に unsigned char 型の配列中に入力されていると仮定し、 readMQOFile() 関数と同様の処理を行います。

この関数は、テクスチャ用のデータの入力は行いません。 テクスチャデータも併せて表示を行いたい場合は、 fk_IFSTexture クラスを利用して下さい。

MQOデータには「オブジェクト」という概念があり、 1つの形状データが複数のオブジェクトによって構成されていることがあります。 この関数では、ファイル名とともにオブジェクト名を指定する必要があります。

引数:

  `[in]` | buffer | データが格納されているバッファ
  `[in]` | objName | オブジェクト名
  `[in]` | materialID | MQOデータではマテリアルを複数設定することができ、 各ポリゴンに対してどのマテリアルを割り振るかのIDが設定されています。 この引数にマテリアルIDを指定すると、そのIDを持つポリゴンのみを読み込みます。 materialID に -1 を入力した場合は、すべてのポリゴンを読み込みます。
  `[in]` | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
  `[in]` | contFlg | テクスチャ断絶の設定を指定します。これは、テクスチャ座標が不連続な箇所に対し、 形状の位相を断絶する操作を行うためのものです。 これを true にした場合は断裂操作が行われ、 テクスチャ座標が不連続な箇所が幾何的にも不連続となるように表示されます。 ほとんどの場合は、断裂操作を行った方が良好な描画結果となります。 ただし、断裂操作を行う際に新たな位相要素を生成するため、 本来のデータよりも頂点、稜線、面が若干増加する場合があります。 false にした場合は、断裂操作を行わずに通常のデータ通り読み込みます。
  `[in]` | materialFlg | true の場合、VRMLファイル中で設定されているマテリアル情報を入力します。 false の場合は、マテリアル情報を無視します。

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

参照:
  readMQOFile(), fk_IFSTexture::readMQOData()

bool fk_IndexFaceSet::readD3DXFile | ( | std::string | fileName,
|  | std::string | objName,
|  | bool | solidFlg = `true` |
| ) |  |  |

DirectX (D3DX) ファイル入力関数1.

DirectX 形式 (X 形式と呼ばれることもあります) のフォーマット (以下、「D3DX形式」) であるファイルからデータを入力します。 この関数で入力できるのは形状データとアニメーションデータです。 テクスチャデータを入力したい場合は、 fk_IndexFaceSet クラスではなく fk_IFSTexture クラスを利用して下さい。

D3DXデータには「オブジェクト」という概念があり、 1つの形状データが複数のオブジェクトによって構成されていることがあります。 この関数では、ファイル名とともにオブジェクト名を指定する必要があります。

引数:

  `[in]` | fileName | ファイル名
  `[in]` | objName | オブジェクト名。 D3DX 形式では、オブジェクト名を省略することが許容されています。 そのような場合は、この引数に空文字列 ( "" ) を入れてください。 この場合、ファイル中で最初に存在するオブジェクトのデータを入力します。
  `[in]` | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。

戻り値:
  ファイルの入力に成功した場合 true を、失敗した場合 false を返します。

参照:
  fk_IFSTexture::readD3DXFile()

bool fk_IndexFaceSet::readD3DXFile | ( | std::string | fileName,
|  | std::string | objName,
|  | int | materialID,
|  | bool | solidFlg = `true` |
| ) |  |  |

DirectX (D3DX) ファイル入力関数2.

DirectX 形式 (X 形式と呼ばれることもあります) のフォーマット (以下、「D3DX形式」) であるファイルからデータを入力します。 この関数で入力できるのは形状データとアニメーションデータです。 テクスチャデータを入力したい場合は、 fk_IndexFaceSet クラスではなく fk_IFSTexture クラスを利用して下さい。

D3DXデータには「オブジェクト」という概念があり、 1つの形状データが複数のオブジェクトによって構成されていることがあります。 この関数では、ファイル名とともにオブジェクト名を指定する必要があります。

引数:

  `[in]` | fileName | ファイル名
  `[in]` | objName | オブジェクト名。 D3DX 形式では、オブジェクト名を省略することが許容されています。 そのような場合は、この引数に空文字列 ( "" ) を入れてください。 この場合、ファイル中で最初に存在するオブジェクトのデータを入力します。
  `[in]` | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
  `[in]` | materialID | D3DXデータではマテリアルを複数設定することができ、 各ポリゴンに対してどのマテリアルを割り振るかのIDが設定されています。 この引数にマテリアルIDを指定すると、そのIDを持つポリゴンのみを読み込みます。 materialID に -1 を入力した場合は、すべてのポリゴンを読み込みます。

戻り値:
  ファイルの入力に成功した場合 true を、失敗した場合 false を返します。

参照:
  fk_IFSTexture::readD3DXFile()

bool fk_IndexFaceSet::writeVRMLFile | ( | std::string | fileName,
|  | fk_Material * | material = `NULL`,
|  | bool | triFlg = `false` |
| ) |  |  |

VRML ファイル出力関数1.

VRML (VRML2.0) 形式で形状データを出力します。

引数:

  `[in]` | fileName | ファイル名
  `[in]` | material | VRMLファイル中に「Material」ノードとしてマテリアル情報を保存します。 NULL を代入した場合は、VRMLファイル中に「Material」ノードを生成しません。
  `[in]` | triFlg | 仮想関数からの継承のために存在する引数で、処理には一切影響しません。

戻り値:
  ファイルの出力に成功した場合 true を、失敗した場合 false を返します。

bool fk_IndexFaceSet::writeVRMLFile | ( | std::string | fileName,
|  | std::vector< double > * | time,
|  | std::vector< fk_Vector > * | pos,
|  | fk_Material * | material = `NULL`,
|  | bool | triFlg = `false` |
| ) |  |  |

VRML ファイル出力関数2.

VRML (VRML2.0) 形式で形状データを出力します。 この引数形式の場合は、 CoordinateInterpolator ノードを用いた アニメーションデータを出力することが可能です。

引数:

  `[in]` | fileName | ファイル名
  `[in]` | time | CoordinateInterpolator における時間配列 (key) を入力します。
  `[in]` | pos | CoordinateInterpolator における位置ベクトル配列 (keyValue) を入力します。
  `[in]` | material | VRMLファイル中に「Material」ノードとしてマテリアル情報を保存します。 NULL を代入した場合は、VRMLファイル中に「Material」ノードを生成しません。
  `[in]` | triFlg | 仮想関数からの継承のために存在する引数で、処理には一切影響しません。

戻り値:
  ファイルの出力に成功した場合 true を、失敗した場合 false を返します。

bool fk_IndexFaceSet::writeSTLFile | ( | std::string | fileName | ) |

STL ファイル出力関数.

STL 形式で形状データを出力します。

引数:

  `[in]` | fileName | ファイル名

戻り値:
  ファイルの出力に成功した場合 true を、失敗した場合 false を返します。

bool fk_IndexFaceSet::writeDXFFile | ( | std::string | fileName,
|  | bool | triFlg = `false` |
| ) |  |  |

DXF ファイル出力関数.

DXF 形式で形状データを出力します。

引数:

  `[in]` | fileName | ファイル名
  `[in]` | triFlg | 面情報を3角形として出力したい場合は、true を代入します。 false の場合、3角形面を2点が重複している4角形面として出力します。

戻り値:
  ファイルの出力に成功した場合 true を、失敗した場合 false を返します。

bool fk_IndexFaceSet::writeMQOFile | ( | std::string | fileName | ) |

MQO ファイル出力関数.

MQO 形式で形状データを出力します。

引数:

  `[in]` | fileName | ファイル名

戻り値:
  ファイルの出力に成功した場合 true を、失敗した場合 false を返します。

int fk_IndexFaceSet::getPosSize | ( | void |  | ) |

頂点数参照関数

形状データの頂点数を取得します。

戻り値:
  頂点数

int fk_IndexFaceSet::getFaceSize | ( | void |  | ) |

面数参照関数

形状データの面数を取得します。

戻り値:
  面数

fk_Vector fk_IndexFaceSet::getPosVec | ( | int | vertexID | ) |

頂点位置ベクトル参照関数

形状データ中の、頂点の位置ベクトルを取得します。

引数:

  `[in]` | vertexID | 頂点ID。一番最初の頂点IDは 0 になります。 最後の ID は頂点数から 1 を引いたものとなります。

戻り値:
  頂点の位置ベクトル

参照:
  moveVPosition()

std::vector<int> fk_IndexFaceSet::getFaceData | ( | int | faceID | ) |

頂点 ID 配列参照関数

面を構成する頂点 ID の配列を取得します。

引数:

  `[in]` | faceID | 面 ID。一番最初の面IDは 0 になります。 最後の ID は面数から 1 を引いたものとなります。

戻り値:
  頂点 ID 配列

int fk_IndexFaceSet::getFaceData | ( | int | faceID,
|  | int | vertexNum |
| ) |  |  |

頂点 ID 参照関数

面を構成する頂点 ID を取得します。

引数:

  `[in]` | faceID | 面 ID。一番最初の面IDは 0 になります。 最後の ID は面数から 1 を引いたものとなります。
  `[in]` | vertexNum | 面の中での頂点番号。 3角形であれば 0 から 2、 4角形であれば 0 から 3 のいずれかを入力すると、 格納されている頂点 ID を取得できます。

戻り値:
  頂点 ID

fk_IFType fk_IndexFaceSet::getFaceType | ( | void |  | ) |

面タイプ取得関数

形状データの面タイプを取得します。

戻り値:
  面タイプ

fk_Vector fk_IndexFaceSet::getPNorm | ( | int | faceID,
|  | int | order = `0` |
| ) |  |  |

面法線ベクトル取得関数

面の法線ベクトルを取得します。

引数:

  `[in]` | faceID | 面ID
  `[in]` | order | 最初の面IDを補正するオーダー。通常は省略して問題ありません。

戻り値:
  面の法線ベクトル

参照:
  setPNorm(), getVNorm()

fk_Vector fk_IndexFaceSet::getVNorm | ( | int | vertexID,
|  | int | order = `0` |
| ) |  |  |

頂点法線ベクトル取得関数

頂点の法線ベクトルを取得します。

引数:

  `[in]` | vertexID | 頂点ID
  `[in]` | order | 最初の頂点IDを補正するオーダー。通常は省略して問題ありません。

戻り値:
  頂点の法線ベクトル

参照:
  setVNorm(), getPNorm()

int fk_IndexFaceSet::getElemMaterialID | ( | int | faceID | ) |

マテリアルID取得関数

面に対して個別に設定してあるマテリアル ID を取得します。 マテリアルの個別設定については fk_Shape::setMaterialMode() および fk_Shape::setPalette() を参照して下さい。

引数:

  `[in]` | faceID | 面ID

戻り値:
  マテリアルID

参照:
  setElemMaterialID(), fk_Shape

bool fk_IndexFaceSet::moveVPosition | ( | int | vertexID,
|  | const fk_Vector & | pos,
|  | int | order = `0` |
| ) |  |  |

頂点移動関数1

指定された頂点を移動します。 なお、 setVNorm() によって法線ベクトルが設定されていた場合や、 setPNorm() によって周辺の面に放線ベクトルが設定されていた場合、 この関数によって破棄されます。

引数:

  `[in]` | vertexID | 頂点ID
  `[in]` | pos | 移動先の位置ベクトル
  `[in]` | order | 最初の頂点IDを補正するオーダー。通常は省略して問題ありません。

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

参照:
  getPosVec()

bool fk_IndexFaceSet::moveVPosition | ( | int | vertexID,
|  | double | x,
|  | double | y,
|  | double | z,
|  | int | order = `0` |
| ) |  |  |

頂点移動関数2

指定された頂点を移動します。 なお、 setVNorm() によって法線ベクトルが設定されていた場合や、 setPNorm() によって周辺の面に放線ベクトルが設定されていた場合、 この関数によって破棄されます。

引数:

  `[in]` | vertexID | 頂点ID
  `[in]` | x | 移動先位置ベクトルの x 成分
  `[in]` | y | 移動先位置ベクトルの y 成分
  `[in]` | z | 移動先位置ベクトルの z 成分
  `[in]` | order | 最初の頂点IDを補正するオーダー。通常は省略して問題ありません。

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

参照:
  getPosVec()

bool fk_IndexFaceSet::moveVPosition | ( | int | vertexID,
|  | double * | array,
|  | int | order = `0` |
| ) |  |  |

頂点移動関数3

指定された頂点を移動します。 なお、 setVNorm() によって法線ベクトルが設定されていた場合や、 setPNorm() によって周辺の面に放線ベクトルが設定されていた場合、 この関数によって破棄されます。

引数:

  `[in]` | vertexID | 頂点ID
  `[in]` | array | 移動先位置ベクトルの各成分が入った double 型配列。
  `[in]` | order | 最初の頂点IDを補正するオーダー。通常は省略して問題ありません。

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

参照:
  getPosVec()

void fk_IndexFaceSet::makeIFSet | ( | int | faceNum,
|  | int | polyNum,
|  | int * | IFSet,
|  | int | vertexNum,
|  | fk_Vector * | posArray,
|  | int | order = `0` |
| ) |  |  |

任意形状生成関数

与えられたインデックスフェースセット情報から、形状を生成します。

引数:

  `[in]` | faceNum | 面数
  `[in]` | polyNum | 面の角数。現在、ここに入力できる数値は 3 か 4 のみです。
  `[in]` | IFSet | インデックスフェースセット配列。 この配列は、各面を構成する頂点 ID を並べたものになります。 たとえば、頂点 ID が [0, 1, 2] と [2, 1, 3] という構成を持つ 2面からなる形状を生成する場合、 int 型の配列に対して [0, 1, 2, 2, 1, 3] という数値を入力しておきます。 4角形の場合も同様です。 結果的に、この配列の長さは面数と角数を掛けたもの以上である必要があります。
  `[in]` | vertexNum | 頂点数
  `[in]` | posArray | 頂点位置ベクトルの配列。配列の長さは頂点数以上である必要があります。
  `[in]` | order | 最初の頂点IDを補正するオーダー。通常は省略して問題ありません。

参照:
  fk_Solid

bool fk_IndexFaceSet::setPNorm | ( | int | faceID,
|  | const fk_Vector & | norm,
|  | int | order = `0` |
| ) |  |  |

面法線ベクトル設定関数

面の法線ベクトルを設定します。

通常、面の法線ベクトルは自前で設定しなくても、 形状から自動的に算出されます。 しかし、バンプマッピングなどの技法を用いる場合など、 自前で計算した法線ベクトルを与える場合は、この関数を用います。

なお、 moveVPosition() 関数によって面上の点が移動された場合、 設定した法線ベクトルは破棄されます。

引数:

  `[in]` | faceID | 面ID
  `[in]` | norm | 法線ベクトル。あらかじめ正規化しておく必要があります。 正規化されていない放線ベクトルを入力した場合、 動作が異常となる場合があります。
  `[in]` | order | 最初の頂点IDを補正するオーダー。通常は省略して問題ありません。

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

参照:
  getPNorm(), setVNorm()

bool fk_IndexFaceSet::setVNorm | ( | int | vertexID,
|  | const fk_Vector & | norm,
|  | int | order = `0` |
| ) |  |  |

頂点法線ベクトル設定関数

頂点の法線ベクトルを設定します。

通常、頂点の法線ベクトルは自前で設定しなくても、 形状から自動的に算出されます。 しかし、バンプマッピングなどの技法を用いる場合など、 自前で計算した法線ベクトルを与える場合は、この関数を用います。

なお、 moveVPosition() 関数によって頂点が移動された場合、 設定した法線ベクトルは破棄されます。

引数:

  `[in]` | vertexID | 頂点ID
  `[in]` | norm | 法線ベクトル。あらかじめ正規化しておく必要があります。 正規化されていない放線ベクトルを入力した場合、 動作が異常となる場合があります。
  `[in]` | order | 最初の頂点IDを補正するオーダー。通常は省略して問題ありません。

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

参照:
  getVNorm(), setPNorm()

bool fk_IndexFaceSet::setElemMaterialID | ( | int | faceID,
|  | int | materialID |
| ) |  |  |

マテリアルID設定関数

面に対してマテリアルIDを設定します。 マテリアルの個別設定については fk_Shape::setMaterialMode() および fk_Shape::setPalette() を参照して下さい。

引数:

  `[in]` | faceID | 面ID
  `[in]` | materialID | マテリアルID

戻り値:
  設定に成功すれば true を、失敗すれば false を返します。

参照:
  getElemMaterialID, fk_Shape

void fk_IndexFaceSet::flush | ( | void |  | ) |

法線ベクトル強制計算関数

fk_IndexFaceSet では、 面や頂点の法線ベクトルは形状生成した時点ではまだ算出しません。 描画時など、実際に法線ベクトルが必要となった場合に随時計算が行われます。 この仕様は、必ずしも法線ベクトルを必要としない状況において 計算量を削減する効果がありますが、 一方でアプリケーションの実行において不都合を生じる場合があります。 例えば、対象形状が初めてシーンに登録された時点で 画面が一瞬止まってしまうといった状況が想定されます。

この関数は、形状中のすべての面と頂点に対して法線ベクトルを強制的に算出します。 なお、 setPNorm() や setVNorm() で設定した法線ベクトルは全て破棄されます。

参照:
  getPNorm(), getVNorm(), setPNorm(), setVNorm()

void fk_IndexFaceSet::makeBlock | ( | double | x,
|  | double | y,
|  | double | z |
| ) |  |  |

直方体生成関数

直方体を生成します。

直方体は、原点の物体の中心が来るように配置されます。 従って、(x, y, z) という大きさで直方体を生成した場合、 各頂点の位置ベクトルは以下のようになります。

- (x/2, y/2, z/2)
- (-x/2, y/2, z/2)
- (-x/2, -y/2, z/2)
- (x/2, -y/2, z/2)
- (x/2, y/2, -z/2)
- (-x/2, y/2, -z/2)
- (-x/2, -y/2, -z/2)
- (x/2, -y/2, -z/2)

この関数を呼ぶ前に生成されていた形状や各種属性は破棄されます。

引数:

  `[in]` | x | x方向の辺長
  `[in]` | y | y方向の辺長
  `[in]` | z | z方向の辺長

参照:
  fk_Block

void fk_IndexFaceSet::setBlockSize | ( | double | x,
|  | double | y,
|  | double | z |
| ) |  |  |

直方体辺長変更関数

makeBlock() によって直方体を生成した後に、 直方体の辺長を一括して設定しなおします。 この関数は、 makeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | x | x方向の辺長
  `[in]` | y | y方向の辺長
  `[in]` | z | z方向の辺長

参照:
  makeBlock(), fk_Block

void fk_IndexFaceSet::setBlockSize | ( | double | length,
|  | fk_Axis | axis |
| ) |  |  |

直方体個別辺長設定関数

makeBlock() によって直方体を生成した後に、 直方体の辺長を個別に設定します。 この関数は、 makeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | length | 辺長
  `[in]` | axis | 軸方向。以下のいずれかを指定します。 fk_X x方向 fk_Y y方向 fk_Z z方向

参照:
  makeBlock(), fk_Block

void fk_IndexFaceSet::setBlockScale | ( | double | scale | ) |

直方体全体拡大縮小関数

makeBlock() によって直方体を生成した後に、 直方体全体を指定された倍率で拡大・縮小します。 この関数は、 makeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | scale | 倍率

参照:
  makeBlock(), fk_Block

void fk_IndexFaceSet::setBlockScale | ( | double | scale,
|  | fk_Axis | axis |
| ) |  |  |

直方体軸方向拡大縮小関数

makeBlock() によって直方体を生成した後に、 指定された軸方向についてのみ拡大・縮小します。 この関数は、 makeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | scale | 倍率
  `[in]` | axis | 軸方向。以下のいずれかを指定します。 fk_X x方向 fk_Y y方向 fk_Z z方向

参照:
  makeBlock(), fk_Block

void fk_IndexFaceSet::setBlockScale | ( | double | x,
|  | double | y,
|  | double | z |
| ) |  |  |

直方体軸方向個別拡大縮小関数

makeBlock() によって直方体を生成した後に、 各軸方向に対し個別の倍率で拡大・縮小します。 この関数は、 makeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | x | x方向の倍率
  `[in]` | y | y方向の倍率
  `[in]` | z | z方向の倍率

参照:
  makeBlock(), fk_Block

void fk_IndexFaceSet::makeCircle | ( | int | div,
|  | double | rad |
| ) |  |  |

円形状生成関数

円形状を生成します。

ここでの「円」は実際には正多角形を円に近似して扱っています。 多角形の角数は (分割数) * 4 となっています。 この多角形は、実質的には設定された半径の円に内接するものです。 円としての見栄えを良くするには分割数を大きめに設定すべきですが、 分割数の大きい円を大量に利用すると描画処理が遅くなるという問題が生じます。

初期状態では、中心を原点とし、 面の法線ベクトルが (0, 0, 1) となるように配置されます。

この関数を呼ぶ前に生成されていた形状や各種属性は破棄されます。

引数:

  `[in]` | div | 分割数。実際には円弧全体をこの数値の 4 倍で分割します。
  `[in]` | rad | 半径

参照:
  fk_Circle

void fk_IndexFaceSet::setCircleRadius | ( | double | rad | ) |

円形状半径設定関数

makeCircle() によって円形状を生成した後に、 半径を設定しなおします。 この関数は、 makeCircle() によって円形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | rad | 半径

参照:
  makeCircle(), fk_Circle

void fk_IndexFaceSet::setCircleDivide | ( | int | div | ) |

円形状分割数設定関数

makeCircle() によって円形状を生成した後に、 分割数を設定しなおします。 この関数は、 makeCircle() によって円形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | div | 分割数

参照:
  makeCircle(), fk_Circle

void fk_IndexFaceSet::setCircleScale | ( | double | scale | ) |

円形状拡大縮小関数

makeCircle() によって円形状を生成した後に、 形状全体を与えられた倍率で拡大・縮小します。 この関数は、 makeCircle() によって円形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | scale | 倍率

参照:
  makeCircle(), fk_Circle

void fk_IndexFaceSet::makeSphere | ( | int | div,
|  | double | rad |
| ) |  |  |

球形状生成関数

球形状を生成します。

実際には、球を近似する3角形面集合として表現されています。 3角形面の数は分割数を とした場合 枚となります。 分割数が高いほど球としての描画精度は高くなりますが、 面数も多くなるため描画速度が低下することになります。 特に多くのオブジェクトを同時に配置する場合は注意が必要です。

初期状態では、中心を原点とするように配置されます。

この関数を呼ぶ前に生成されていた形状や各種属性は破棄されます。

引数:

  `[in]` | div | 分割数
  `[in]` | rad | 半径

参照:
  fk_Sphere

void fk_IndexFaceSet::setSphereRadius | ( | double | rad | ) |

球形状半径設定関数

makeSphere() によって球形状を生成した後に、 半径を設定しなおします。 この関数は、 makeSphere() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | rad | 半径

参照:
  makeSphere(), fk_Sphere

void fk_IndexFaceSet::setSphereDivide | ( | int | div | ) |

球形状分割数設定関数

makeSphere() によって球形状を生成した後に、 分割数を設定しなおします。 この関数は、 makeSphere() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | div | 分割数

参照:
  makeSphere(), fk_Sphere

void fk_IndexFaceSet::setSphereScale | ( | double | scale | ) |

球形状拡大縮小関数

makeSphere() によって球形状を生成した後に、 形状全体を与えられた倍率で拡大・縮小します。 この関数は、 makeSphere() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | scale | 倍率

参照:
  makeSphere(), fk_Sphere

void fk_IndexFaceSet::makePrism | ( | int | div,
|  | double | top,
|  | double | bottom,
|  | double | height |
| ) |  |  |

正多角柱(円柱)形状生成関数

正多角柱(円柱)を生成します。

円柱は、分割数の多い正多角柱として生成します。 通常、分割数が 20 を超える程度でほとんど円柱と見分けがつかなくなります。 配置は、底面の中心が原点となり、 多角柱の上面が -z 方向、底面が +z 方向となります。

設定できる要素は角数、上面半径、底面半径、高さの4要素です。 上面と底面の半径とは、それぞれの面を構成する正多角形の外接円半径を指します。

この関数を呼ぶ前に生成されていた形状や各種属性は破棄されます。

引数:

  `[in]` | div | 角数
  `[in]` | top | 上面半径
  `[in]` | bottom | 底面半径
  `[in]` | height | 高さ

参照:
  fk_Prism

void fk_IndexFaceSet::setPrismDivide | ( | int | div | ) |

正多角柱(円柱)角数設定関数

makePrism() によって正多角柱(円柱)を生成した後に、 角数を設定しなおします。 この関数は、 makePrism() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | div | 角数

参照:
  makePrism(), fk_Prism

void fk_IndexFaceSet::setPrismTopRadius | ( | double | top | ) |

正多角柱(円柱)上面半径設定関数

makePrism() によって正多角柱(円柱)を生成した後に、 上面の外接円半径を設定しなおします。 この関数は、 makePrism() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | top | 上面半径

参照:
  makePrism(), fk_Prism

void fk_IndexFaceSet::setPrismBottomRadius | ( | double | bottom | ) |

正多角柱(円柱)角数設定関数

makePrism() によって正多角柱(円柱)を生成した後に、 底面の外接円半径を設定しなおします。 この関数は、 makePrism() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | bottom | 底面半径

参照:
  makePrism(), fk_Prism

void fk_IndexFaceSet::setPrismHeight | ( | double | height | ) |

正多角柱(円柱)高さ設定関数

makePrism() によって正多角柱(円柱)を生成した後に、 高さを設定しなおします。 この関数は、 makePrism() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | height | 高さ

参照:
  makePrism(), fk_Prism

void fk_IndexFaceSet::makeCone | ( | int | div,
|  | double | rad,
|  | double | height |
| ) |  |  |

正多角錐(円錐)形状生成関数

正多角錐(円錐)を生成します。

円錐は、分割数の多い正多角錐として生成します。 通常、分割数が 20 を超える程度でほとんど円錐と見分けがつかなくなります。 配置は、底面の中心が原点となり、 頂点 -z 方向、底面が +z 方向となります。

設定できる要素は角数、底面半径、高さの3要素です。 底面半径とは、面を構成する正多角形の外接円半径を指します。

この関数を呼ぶ前に生成されていた形状や各種属性は破棄されます。

引数:

  `[in]` | div | 角数
  `[in]` | rad | 底面半径
  `[in]` | height | 高さ

参照:
  fk_Cone

void fk_IndexFaceSet::setConeDivide | ( | int | div | ) |

正多角錐(円錐)角数設定関数

makeCone() によって正多角錐(円錐)を生成した後に、 角数を設定しなおします。 この関数は、 makeCone() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | div | 角数

参照:
  makeCone(), fk_Cone

void fk_IndexFaceSet::setConeRadius | ( | double | rad | ) |

正多角錐(円錐)底面半径設定関数

makeCone() によって正多角錐(円錐)を生成した後に、 底面外接円半径を設定しなおします。 この関数は、 makeCone() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | rad | 底面半径

参照:
  makeCone(), fk_Cone

void fk_IndexFaceSet::setConeHeight | ( | double | height | ) |

正多角錐(円錐)高さ設定関数

makeCone() によって正多角錐(円錐)を生成した後に、 高さを設定しなおします。 この関数は、 makeCone() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数:

  `[in]` | height | 高さ

参照:
  makeCone(), fk_Cone

void fk_IndexFaceSet::putSolid | ( | fk_Solid * | solid | ) |

fk_Solid 出力関数

fk_IndexFaceSet 型にある形状情報を、 fk_Solid 型のインスタンスにコピーします。 fk_Solid 側に格納されている形状情報や属性情報は破棄されます。 なお、マテリアル情報や法線ベクトル情報はコピーされません。

引数:

  `[in]` | solid | fk_Solid 型インスタンスのアドレス

参照:
  fk_Solid

void fk_IndexFaceSet::setAnimationTime | ( | double | time | ) |

アニメーション時間設定関数

D3DX形式からの入力や、 BVH情報からの入力によってアニメーションが設定されている場合、 この関数を用いることで形状状態を任意のアニメーション時間に設定することができます。

引数:

  `[in]` | time | アニメーション時間

参照:
  readD3DXFile(), setBVHMotion(), fk_BVHMotion

void fk_IndexFaceSet::setBVHMotion | ( | fk_BVHMotion * | bvh | ) |

BVHデータ設定関数.

形状に対し、BVH 形式によるアニメーションを設定します。

引数:

  `[in]` | bvh | fk_BVHMotion 型インスタンスのアドレス

参照:
  setAnimationTime(), readD3DXFile(), fk_BVHMotion