FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | 全メンバ一覧
FK::fk_IndexFaceSet クラス

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

#include <FK/IndexFace.h>

+ FK::fk_IndexFaceSet の継承関係図
+ FK::fk_IndexFaceSet 連携図

公開メンバ関数

 fk_IndexFaceSet (void)
 コンストラクタ
 
virtual ~fk_IndexFaceSet ()
 デストラクタ
 
void cloneShape (fk_IndexFaceSet *ifs)
 形状コピー関数
 
ファイル・データ入力関数
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=nullptr, bool triFlg=false)
 VRML ファイル出力関数1
 
bool writeVRMLFile (std::string fileName, std::vector< double > *time, std::vector< fk_Vector > *pos, fk_Material *material=nullptr, 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 getEdgeSize (void)
 稜線数参照関数
 
int getFaceSize (void)
 面数参照関数
 
fk_Vector getPosVec (int vertexID)
 頂点位置ベクトル参照関数
 
std::vector< int > getFaceData (int faceID)
 頂点 ID 配列参照関数
 
int getFaceData (int faceID, int vertexNum)
 頂点 ID 参照関数
 
fk_Vector getFaceNorm (int faceID, int order=0)
 面法線ベクトル取得関数
 
fk_Vector getVertexNorm (int vertexID, int order=0)
 頂点法線ベクトル取得関数
 
汎用形状操作関数
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, bool smoothMode=false, int order=0)
 任意形状生成関数1
 
void makeIFSet (int faceNum, int polyNum, int *IFSet, int vertexNum, fk_Vector *posArray, int order)
 任意形状生成関数2
 
void makeIFSet (std::vector< std::vector< int > > *faceArray, std::vector< fk_Vector > *posArray, bool smoothMode=false, int order=0)
 任意形状生成関数3
 
void makeIFSet (std::vector< std::vector< int > > *faceArray, std::vector< fk_Vector > *posArray, int order)
 任意形状生成関数4
 
bool setFaceNorm (int faceID, const fk_Vector &norm, int order=0)
 面法線ベクトル設定関数
 
bool setVertexNorm (int vertexID, const fk_Vector &norm, int order=0)
 頂点法線ベクトル設定関数
 
void flush (void)
 法線ベクトル強制計算関数
 
多角形形状制御関数
void makePolygon (std::vector< fk_Vector > *posArray)
 多角形生成関数1
 
void makePolygon (int num, fk_Vector *posArray)
 多角形生成関数2
 
直方体形状制御関数
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, bool smoothMode=false)
 正多角柱(円柱)形状生成関数
 
void setPrismDivide (int div)
 正多角柱(円柱)角数設定関数
 
void setPrismTopRadius (double top)
 正多角柱(円柱)上面半径設定関数
 
void setPrismBottomRadius (double bottom)
 正多角柱(円柱)角数設定関数
 
void setPrismHeight (double height)
 正多角柱(円柱)高さ設定関数
 
正多角錐(円錐)形状制御関数
void makeCone (int div, double rad, double height, bool smoothMode=true)
 正多角錐(円錐)形状生成関数
 
void setConeDivide (int div)
 正多角錐(円錐)角数設定関数
 
void setConeRadius (double rad)
 正多角錐(円錐)底面半径設定関数
 
void setConeHeight (double height)
 正多角錐(円錐)高さ設定関数
 
カプセル型形状制御関数
void makeCapsule (int div, double len, double rad)
 カプセル型形状生成関数
 
void setCapsuleSize (double len, double rad)
 カプセル型形状寸法設定関数
 
その他
void putSolid (fk_Solid *solid)
 fk_Solid 出力関数
 
void setAnimationTime (double time)
 アニメーション時間設定関数
 
void setBVHMotion (fk_BVHBase *bvh)
 BVHデータ設定関数
 
- 基底クラス FK::fk_Shape に属する継承公開メンバ関数
 fk_Shape (fk_Type=fk_Type::SHAPE)
 コンストラクタ
 
virtual ~fk_Shape ()
 デストラクタ
 
fk_RealShapeType getRealShapeType (void)
 形状データ構造取得関数
 
void setShaderAttribute (std::string name, int dim, std::vector< int > *array, bool self=false)
 シェーダー内 attribute 変数設定関数1
 
void setShaderAttribute (std::string name, int dim, std::vector< float > *array, bool self=false)
 シェーダー内 attribute 変数設定関数2
 
void setShaderAttribute (std::string name, int dim, std::vector< fk_Vector > *array)
 シェーダー内 attribute 変数設定関数3
 
void setShaderAttribute (std::string name, int dim, std::vector< fk_TexCoord > *array)
 シェーダー内 attribute 変数設定関数4
 
void setShaderAttribute (std::string name, int dim, std::vector< fk_HVector > *array)
 シェーダー内 attribute 変数設定関数5
 
void modifyAttribute (std::string name)
 attribute 変数更新関数
 
- 基底クラス FK::fk_Attribute に属する継承公開メンバ関数
 fk_Attribute (void)
 コンストラクタ
 
virtual ~fk_Attribute ()
 デストラクタ
 
bool setAttrII (const int key, const int value)
 キーが int 型、値が int 型である属性設定関数
 
bool setAttrID (const int key, const double value)
 キーが int 型、値が double 型である属性設定関数
 
bool setAttrIS (const int key, const std::string value)
 キーが int 型、値が std::string 型である属性設定関数
 
bool setAttrSI (const std::string key, const int value)
 キーが std::string 型、値が int 型である属性設定関数
 
bool setAttrSD (const std::string key, const double value)
 キーが std::string 型、値が double 型である属性設定関数
 
bool setAttrSS (const std::string key, const std::string value)
 キーが std::string 型、値が std::string 型である属性設定関数
 
int getAttrII (const int key) const
 キーが int 型、値が int 型である属性参照関数
 
double getAttrID (const int key) const
 キーが int 型、値が double 型である属性参照関数
 
std::string getAttrIS (const int key) const
 キーが int 型、値が std::string 型である属性参照関数
 
int getAttrSI (const std::string key) const
 キーが std::string 型、値が int 型である属性参照関数
 
double getAttrSD (const std::string key) const
 キーが std::string 型、値が double 型である属性参照関数
 
std::string getAttrSS (const std::string key) const
 キーが std::string 型、値が std::string 型である属性参照関数
 
bool existAttrII (const int key) const
 キーが int 型、値が int 型である属性存在参照関数
 
bool existAttrID (const int key) const
 キーが int 型、値が double 型である属性存在参照関数
 
bool existAttrIS (const int key) const
 キーが int 型、値が std::string 型である属性存在参照関数
 
bool existAttrSI (const std::string key) const
 キーが std::string 型、値が int 型である属性存在参照関数
 
bool existAttrSD (const std::string key) const
 キーが std::string 型、値が double 型である属性存在参照関数
 
bool existAttrSS (const std::string key) const
 キーが std::string 型、値が std::string 型である属性存在参照関数
 
bool deleteAttrII (const int key)
 キーが int 型、値が int 型である属性消去関数
 
bool deleteAttrID (const int key)
 キーが int 型、値が double 型である属性消去関数
 
bool deleteAttrIS (const int key)
 キーが int 型、値が std::string 型である属性消去関数
 
bool deleteAttrSI (const std::string key)
 キーが std::string 型、値が int 型である属性消去関数
 
bool deleteAttrSD (const std::string key)
 キーが std::string 型、値が double 型である属性消去関数
 
bool deleteAttrSS (const std::string key)
 キーが std::string 型、値が std::string 型である属性消去関数
 
- 基底クラス FK::fk_BaseObject に属する継承公開メンバ関数
 fk_BaseObject (fk_Type type=fk_Type::BASEOBJECT)
 コンストラクタ
 
fk_Type getObjectType (void) const
 タイプ取得関数
 

詳解

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

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

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

また、これらのデータファイル入力の他に、 頂点座標データとインデックスフェースデータから 形状を自前で生成することも可能です。 ただし、作成できる形状には制限があります。 この機能の詳細は 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_Capsule

構築子と解体子

◆ fk_IndexFaceSet()

FK::fk_IndexFaceSet::fk_IndexFaceSet ( void  )

コンストラクタ

◆ ~fk_IndexFaceSet()

virtual FK::fk_IndexFaceSet::~fk_IndexFaceSet ( )
virtual

デストラクタ

関数詳解

◆ cloneShape()

void FK::fk_IndexFaceSet::cloneShape ( fk_IndexFaceSet ifs)

形状コピー関数

引数として与えられたインスタンス中の形状をコピーします。 各種属性およびマテリアル情報は写しません。

引数
[in]ifs複写元インスタンス

◆ readSMFFile()

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

SMFファイル入力関数

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

引数
[in]fileNameファイル名
戻り値
成功すれば true を、失敗すれば false を返します。

◆ readVRMLFile()

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

VRML ファイル入力関数

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

引数
[in]fileNameファイル名
[in]materialFlgtrue の場合、 VRMLファイル中で設定されているマテリアル情報を入力します。 false の場合は、マテリアル情報を無視します。
[in]solidFlgtrue の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 入力データのままインデックスフェースセットを構築します。
戻り値
成功すれば true を、失敗すれば false を返します。
覚え書き
VRML形式は、1994年に策定された通称「VRML1.0」と、 1997年に策定された「VRML97」の2種類があり、 VRML97は「VRML2.0」とも呼ばれます。 本関数では入力フォーマットとして VRML2.0 を想定しています。
VRMLは文法解釈、 特にセパレータの扱い方についてはあまり厳密になっておらず、 様々なデータによって異なる解釈がなされているようです。 そのため、構文解析がうまくいかずに入力失敗する場合がありえます。

◆ readSTLFile()

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

STL ファイル入力関数

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

  • 5以上の角数である面が存在する。
  • 3角形面と4角形面が混在している。
引数
[in]fileNameファイル名
[in]solidFlgtrue の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
[in]tolerancesolidFlg で true を指定した場合、 頂点同士が同一かどうかを判断するための距離許容誤差を指定します。 solidFlg が false であった場合、この値は無視されます。
戻り値
成功すれば true を、失敗すれば false を返します。

◆ readHRCFile()

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

HRCファイル入力関数

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

引数
[in]fileNameファイル名
戻り値
成功すれば true を、失敗すれば false を返します。

◆ readRDSFile()

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

RDSファイル入力関数

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

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

◆ readDXFFile()

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

DXFファイル入力関数

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

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

◆ readMQOFile() [1/2]

bool FK::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]solidFlgtrue の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
[in]contFlgテクスチャ断絶の設定を指定します。これは、テクスチャ座標が不連続な箇所に対し、 形状の位相を断絶する操作を行うためのものです。 これを true にした場合は断裂操作が行われ、 テクスチャ座標が不連続な箇所が幾何的にも不連続となるように表示されます。 ほとんどの場合は、断裂操作を行った方が良好な描画結果となります。 ただし、断裂操作を行う際に新たな位相要素を生成するため、 本来のデータよりも頂点、稜線、面が若干増加する場合があります。 false にした場合は、断裂操作を行わずに通常のデータ通り読み込みます。
[in]materialFlgtrue の場合、MQOファイル中で設定されているマテリアル情報を入力します。 false の場合は、マテリアル情報を無視します。
戻り値
成功すれば true を、失敗すれば false を返します。
参照
readMQOData(), fk_IFSTexture::readMQOFile()

◆ readMQOFile() [2/2]

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

◆ readMQOData() [1/2]

bool FK::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]solidFlgtrue の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
[in]contFlgテクスチャ断絶の設定を指定します。これは、テクスチャ座標が不連続な箇所に対し、 形状の位相を断絶する操作を行うためのものです。 これを true にした場合は断裂操作が行われ、 テクスチャ座標が不連続な箇所が幾何的にも不連続となるように表示されます。 ほとんどの場合は、断裂操作を行った方が良好な描画結果となります。 ただし、断裂操作を行う際に新たな位相要素を生成するため、 本来のデータよりも頂点、稜線、面が若干増加する場合があります。 false にした場合は、断裂操作を行わずに通常のデータ通り読み込みます。
[in]materialFlgtrue の場合、MQOデータ中で設定されているマテリアル情報を入力します。 false の場合は、マテリアル情報を無視します。
戻り値
成功すれば true を、失敗すれば false を返します。
参照
readMQOFile(), fk_IFSTexture::readMQOData()

◆ readMQOData() [2/2]

bool FK::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]materialIDMQOデータではマテリアルを複数設定することができ、 各ポリゴンに対してどのマテリアルを割り振るかのIDが設定されています。 この引数にマテリアルIDを指定すると、そのIDを持つポリゴンのみを読み込みます。 materialID に -1 を入力した場合は、すべてのポリゴンを読み込みます。
[in]solidFlgtrue の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
[in]contFlgテクスチャ断絶の設定を指定します。これは、テクスチャ座標が不連続な箇所に対し、 形状の位相を断絶する操作を行うためのものです。 これを true にした場合は断裂操作が行われ、 テクスチャ座標が不連続な箇所が幾何的にも不連続となるように表示されます。 ほとんどの場合は、断裂操作を行った方が良好な描画結果となります。 ただし、断裂操作を行う際に新たな位相要素を生成するため、 本来のデータよりも頂点、稜線、面が若干増加する場合があります。 false にした場合は、断裂操作を行わずに通常のデータ通り読み込みます。
[in]materialFlgtrue の場合、MQOデータ中で設定されているマテリアル情報を入力します。 false の場合は、マテリアル情報を無視します。
戻り値
成功すれば true を、失敗すれば false を返します。
参照
readMQOFile(), fk_IFSTexture::readMQOData()

◆ readD3DXFile() [1/2]

bool FK::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]solidFlgtrue の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
戻り値
ファイルの入力に成功した場合 true を、失敗した場合 false を返します。
参照
fk_IFSTexture::readD3DXFile()

◆ readD3DXFile() [2/2]

bool FK::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]materialIDD3DXデータではマテリアルを複数設定することができ、 各ポリゴンに対してどのマテリアルを割り振るかのIDが設定されています。 この引数にマテリアルIDを指定すると、そのIDを持つポリゴンのみを読み込みます。 materialID に -1 を入力した場合は、すべてのポリゴンを読み込みます。
[in]solidFlgtrue の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
戻り値
ファイルの入力に成功した場合 true を、失敗した場合 false を返します。
参照
fk_IFSTexture::readD3DXFile()

◆ writeVRMLFile() [1/2]

bool FK::fk_IndexFaceSet::writeVRMLFile ( std::string  fileName,
fk_Material material = nullptr,
bool  triFlg = false 
)

VRML ファイル出力関数1

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

引数
[in]fileNameファイル名
[in]materialVRMLファイル中に「Material」ノードとしてマテリアル情報を保存します。 nullptr を代入した場合は、VRMLファイル中に「Material」ノードを生成しません。
[in]triFlg仮想関数からの継承のために存在する引数で、処理には一切影響しません。
戻り値
ファイルの出力に成功した場合 true を、失敗した場合 false を返します。

◆ writeVRMLFile() [2/2]

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

VRML ファイル出力関数2

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

引数
[in]fileNameファイル名
[in]timeCoordinateInterpolator における時間配列 (key) を入力します。
[in]posCoordinateInterpolator における位置ベクトル配列 (keyValue) を入力します。
[in]materialVRMLファイル中に「Material」ノードとしてマテリアル情報を保存します。 nullptr を代入した場合は、VRMLファイル中に「Material」ノードを生成しません。
[in]triFlg仮想関数からの継承のために存在する引数で、処理には一切影響しません。
戻り値
ファイルの出力に成功した場合 true を、失敗した場合 false を返します。

◆ writeSTLFile()

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

STL ファイル出力関数

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

引数
[in]fileNameファイル名
戻り値
ファイルの出力に成功した場合 true を、失敗した場合 false を返します。

◆ writeDXFFile()

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

DXF ファイル出力関数

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

引数
[in]fileNameファイル名
[in]triFlg面情報を3角形として出力したい場合は、true を代入します。 false の場合、3角形面を2点が重複している4角形面として出力します。
戻り値
ファイルの出力に成功した場合 true を、失敗した場合 false を返します。

◆ writeMQOFile()

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

MQO ファイル出力関数

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

引数
[in]fileNameファイル名
戻り値
ファイルの出力に成功した場合 true を、失敗した場合 false を返します。

◆ getPosSize()

int FK::fk_IndexFaceSet::getPosSize ( void  )

頂点数参照関数

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

戻り値
頂点数

◆ getEdgeSize()

int FK::fk_IndexFaceSet::getEdgeSize ( void  )

稜線数参照関数

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

戻り値
稜線数

◆ getFaceSize()

int FK::fk_IndexFaceSet::getFaceSize ( void  )

面数参照関数

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

戻り値
面数

◆ getPosVec()

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

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

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

引数
[in]vertexID頂点ID。一番最初の頂点IDは 0 になります。 最後の ID は頂点数から 1 を引いたものとなります。
戻り値
頂点の位置ベクトル
参照
moveVPosition()

◆ getFaceData() [1/2]

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

頂点 ID 配列参照関数

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

引数
[in]faceID面 ID。一番最初の面IDは 0 になります。 最後の ID は面数から 1 を引いたものとなります。
戻り値
頂点 ID 配列

◆ getFaceData() [2/2]

int FK::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

◆ getFaceNorm()

fk_Vector FK::fk_IndexFaceSet::getFaceNorm ( int  faceID,
int  order = 0 
)

面法線ベクトル取得関数

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

引数
[in]faceID面ID
[in]order最初の面IDを補正するオーダー。通常は省略して問題ありません。
戻り値
面の法線ベクトル
参照
setFaceNorm(), getVertexNorm()

◆ getVertexNorm()

fk_Vector FK::fk_IndexFaceSet::getVertexNorm ( int  vertexID,
int  order = 0 
)

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

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

引数
[in]vertexID頂点ID
[in]order最初の頂点IDを補正するオーダー。通常は省略して問題ありません。
戻り値
頂点の法線ベクトル
参照
setVertexNorm(), getFaceNorm()

◆ moveVPosition() [1/3]

bool FK::fk_IndexFaceSet::moveVPosition ( int  vertexID,
const fk_Vector pos,
int  order = 0 
)

頂点移動関数1

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

引数
[in]vertexID頂点ID
[in]pos移動先の位置ベクトル
[in]order最初の頂点IDを補正するオーダー。通常は省略して問題ありません。
戻り値
成功すれば true を、失敗すれば false を返します。
参照
getPosVec()

◆ moveVPosition() [2/3]

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

頂点移動関数2

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

引数
[in]vertexID頂点ID
[in]x移動先位置ベクトルの x 成分
[in]y移動先位置ベクトルの y 成分
[in]z移動先位置ベクトルの z 成分
[in]order最初の頂点IDを補正するオーダー。通常は省略して問題ありません。
戻り値
成功すれば true を、失敗すれば false を返します。
参照
getPosVec()

◆ moveVPosition() [3/3]

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

頂点移動関数3

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

引数
[in]vertexID頂点ID
[in]array移動先位置ベクトルの各成分が入った double 型配列。
[in]order最初の頂点IDを補正するオーダー。通常は省略して問題ありません。
戻り値
成功すれば true を、失敗すれば false を返します。
参照
getPosVec()

◆ makeIFSet() [1/4]

void FK::fk_IndexFaceSet::makeIFSet ( int  faceNum,
int  polyNum,
int *  IFSet,
int  vertexNum,
fk_Vector posArray,
bool  smoothMode = false,
int  order = 0 
)

任意形状生成関数1

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

引数
[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]smoothModetrue の場合、スムースシェーディングとなります。 false の場合はフラットシェーディングとなります。
[in]order最初の頂点IDを補正するオーダー。通常は省略して問題ありません。
参照
fk_Solid

◆ makeIFSet() [2/4]

void FK::fk_IndexFaceSet::makeIFSet ( int  faceNum,
int  polyNum,
int *  IFSet,
int  vertexNum,
fk_Vector posArray,
int  order 
)

任意形状生成関数2

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

引数
[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

◆ makeIFSet() [3/4]

void FK::fk_IndexFaceSet::makeIFSet ( std::vector< std::vector< int > > *  faceArray,
std::vector< fk_Vector > *  posArray,
bool  smoothMode = false,
int  order = 0 
)

任意形状生成関数3

与えられたIFSデータから、形状を生成します。

引数
[in]faceArray面データ配列。 IFSet を vector< vector<int> > 型、 polygon を vector<int> 型としたとき、 以下のようにして面データを生成していきます。
polygon.clear();
polygon.push_back(頂点ID1);
polygon.push_back(頂点ID2);
    :
polygon.push_back(頂点IDn);
IFSet.push_back(polygon);
[in]posArray頂点位置ベクトルデータ配列
[in]smoothModetrue の場合、辺や頂点の周囲を滑らかにレンダリングします。 false の場合は辺や頂点を折れたものとしてレンダリングします。
[in]order最初の頂点IDを補正するオーダー。通常は省略して問題ありません。

◆ makeIFSet() [4/4]

void FK::fk_IndexFaceSet::makeIFSet ( std::vector< std::vector< int > > *  faceArray,
std::vector< fk_Vector > *  posArray,
int  order 
)

任意形状生成関数4

与えられたIFSデータから、形状を生成します。

引数
[in]faceArray面データ配列。 IFSet を vector< vector<int> > 型、 polygon を vector<int> 型としたとき、 以下のようにして面データを生成していきます。
polygon.clear();
polygon.push_back(頂点ID1);
polygon.push_back(頂点ID2);
    :
polygon.push_back(頂点IDn);
IFSet.push_back(polygon);
[in]posArray頂点位置ベクトルデータ配列
[in]order最初の頂点IDを補正するオーダー。

◆ setFaceNorm()

bool FK::fk_IndexFaceSet::setFaceNorm ( int  faceID,
const fk_Vector norm,
int  order = 0 
)

面法線ベクトル設定関数

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

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

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

引数
[in]faceID面ID
[in]norm法線ベクトル。あらかじめ正規化しておく必要があります。 正規化されていない放線ベクトルを入力した場合、 動作が異常となる場合があります。
[in]order最初の頂点IDを補正するオーダー。通常は省略して問題ありません。
戻り値
成功すれば true を、失敗すれば false を返します。
参照
getFaceNorm(), setVertexNorm()

◆ setVertexNorm()

bool FK::fk_IndexFaceSet::setVertexNorm ( int  vertexID,
const fk_Vector norm,
int  order = 0 
)

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

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

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

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

引数
[in]vertexID頂点ID
[in]norm法線ベクトル。あらかじめ正規化しておく必要があります。 正規化されていない放線ベクトルを入力した場合、 動作が異常となる場合があります。
[in]order最初の頂点IDを補正するオーダー。通常は省略して問題ありません。
戻り値
成功すれば true を、失敗すれば false を返します。
参照
getVertexNorm(), setFaceNorm()

◆ flush()

void FK::fk_IndexFaceSet::flush ( void  )

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

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

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

参照
getFaceNorm(), getVertexNorm(), setFaceNorm(), setVertexNorm()

◆ makePolygon() [1/2]

void FK::fk_IndexFaceSet::makePolygon ( std::vector< fk_Vector > *  posArray)

多角形生成関数1

多角形 (ポリゴン) を生成します。 頂点を結ぶ境界線が反時計回りに見える側が表になります。 現時点では凸多角形のみサポートしており、 非凸多角形が入力された場合の動作は保証されません。

生成後、頂点を移動するには moveVPosition() を利用して下さい。

引数
[in]posArray多角形頂点配列

◆ makePolygon() [2/2]

void FK::fk_IndexFaceSet::makePolygon ( int  num,
fk_Vector posArray 
)

多角形生成関数2

多角形 (ポリゴン) を生成します。 頂点を結ぶ境界線が反時計回りに見える側が表になります。 現時点では凸多角形のみサポートしており、 非凸多角形が入力された場合の動作は保証されません。

生成後、頂点を移動するには moveVPosition() を利用して下さい。

引数
[in]num頂点数
[in]posArray多角形頂点配列

◆ makeBlock()

void FK::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]xx方向の辺長
[in]yy方向の辺長
[in]zz方向の辺長
参照
fk_Block

◆ setBlockSize() [1/2]

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

直方体辺長変更関数

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

引数
[in]xx方向の辺長
[in]yy方向の辺長
[in]zz方向の辺長
参照
makeBlock(), fk_Block

◆ setBlockSize() [2/2]

void FK::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

◆ setBlockScale() [1/3]

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

直方体全体拡大縮小関数

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

引数
[in]scale倍率
参照
makeBlock(), fk_Block

◆ setBlockScale() [2/3]

void FK::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

◆ setBlockScale() [3/3]

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

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

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

引数
[in]xx方向の倍率
[in]yy方向の倍率
[in]zz方向の倍率
参照
makeBlock(), fk_Block

◆ makeCircle()

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

円形状生成関数

円形状を生成します。

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

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

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

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

◆ setCircleRadius()

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

円形状半径設定関数

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

引数
[in]rad半径
参照
makeCircle(), fk_Circle

◆ setCircleDivide()

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

円形状分割数設定関数

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

引数
[in]div分割数
参照
makeCircle(), fk_Circle

◆ setCircleScale()

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

円形状拡大縮小関数

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

引数
[in]scale倍率
参照
makeCircle(), fk_Circle

◆ makeSphere()

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

球形状生成関数

球形状を生成します。

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

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

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

引数
[in]div分割数
[in]rad半径
参照
fk_Sphere

◆ setSphereRadius()

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

球形状半径設定関数

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

引数
[in]rad半径
参照
makeSphere(), fk_Sphere

◆ setSphereDivide()

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

球形状分割数設定関数

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

引数
[in]div分割数
参照
makeSphere(), fk_Sphere

◆ setSphereScale()

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

球形状拡大縮小関数

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

引数
[in]scale倍率
参照
makeSphere(), fk_Sphere

◆ makePrism()

void FK::fk_IndexFaceSet::makePrism ( int  div,
double  top,
double  bottom,
double  height,
bool  smoothMode = false 
)

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

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

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

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

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

引数
[in]div角数
[in]top上面半径
[in]bottom底面半径
[in]height高さ
[in]smoothModetrue の場合、側面を滑らかにレンダリングし、 擬似的な円錐として表示します。 false の場合は側面を独立した平面としてレンダリングし、 角錐として表示します。
参照
fk_Prism

◆ setPrismDivide()

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

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

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

引数
[in]div角数
参照
makePrism(), fk_Prism

◆ setPrismTopRadius()

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

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

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

引数
[in]top上面半径
参照
makePrism(), fk_Prism

◆ setPrismBottomRadius()

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

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

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

引数
[in]bottom底面半径
参照
makePrism(), fk_Prism

◆ setPrismHeight()

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

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

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

引数
[in]height高さ
参照
makePrism(), fk_Prism

◆ makeCone()

void FK::fk_IndexFaceSet::makeCone ( int  div,
double  rad,
double  height,
bool  smoothMode = true 
)

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

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

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

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

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

引数
[in]div角数
[in]rad底面半径
[in]height高さ
[in]smoothModetrue の場合、側面を滑らかにレンダリングし、 擬似的な円錐として表示します。 false の場合は側面を独立した平面としてレンダリングし、 角錐として表示します。
参照
fk_Cone

◆ setConeDivide()

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

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

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

引数
[in]div角数
参照
makeCone(), fk_Cone

◆ setConeRadius()

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

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

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

引数
[in]rad底面半径
参照
makeCone(), fk_Cone

◆ setConeHeight()

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

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

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

引数
[in]height高さ
参照
makeCone(), fk_Cone

◆ makeCapsule()

void FK::fk_IndexFaceSet::makeCapsule ( int  div,
double  len,
double  rad 
)

カプセル型形状生成関数

カプセル型を生成します。 カプセル型は半径の等しい円柱側面と半球面によって構成されています。 数学的には、カプセル型の内部は1本の線分より一定距離以下の部分の集合であり、 その一定距離は前述の半径と等しくなります。この線分を「中心軸」と呼びます。 初期状態は中心軸の中点が原点に配置され、z軸方向と中心軸が平行となります。 設定できる要素は中心軸長、半径、分割数です。 実際のカプセル型の全長は「中心軸長 + (半径)*2」となります。

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

引数
[in]div分割数
[in]len中心軸長
[in]rad半径
参照
fk_Capsule

◆ setCapsuleSize()

void FK::fk_IndexFaceSet::setCapsuleSize ( double  len,
double  rad 
)

カプセル型形状寸法設定関数

makeCapsule() によってカプセル型形状を生成した後に、 中心軸長と半径を再度設定します。 この関数は、 makeCapsule() によってカプセル型形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこの関数を呼んだときの挙動は保証されません。

引数
[in]len中心軸長
[in]rad半径
参照
makeCapsule(), fk_Capsule

◆ putSolid()

void FK::fk_IndexFaceSet::putSolid ( fk_Solid solid)

fk_Solid 出力関数

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

引数
[in]solidfk_Solid 型インスタンスのアドレス
参照
fk_Solid

◆ setAnimationTime()

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

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

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

引数
[in]timeアニメーション時間
参照
readD3DXFile(), setBVHMotion(), fk_BVHMotion

◆ setBVHMotion()

void FK::fk_IndexFaceSet::setBVHMotion ( fk_BVHBase *  bvh)

BVHデータ設定関数

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

引数
[in]bvhfk_BVHMotion 型インスタンスのアドレス
参照
setAnimationTime(), readD3DXFile(), fk_BVHMotion