半稜線構造 (Half-Edge Structure) による任意形状を生成、管理するクラス [詳細]
Public メソッド | |
fk_Solid (void) | |
コンストラクタ | |
~fk_Solid () | |
デストラクタ | |
void | allClear (bool matFlg=true) |
形状初期化関数 | |
bool | isEmpty (void) |
空形状状態参照関数 | |
void | cloneShape (fk_Solid *solid) |
形状コピー関数 | |
bool | compareShape (fk_Solid *solid) |
形状同値比較関数 | |
ファイル入力関数 | |
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 | 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 | readData (std::string fileName, bool sizeMode=true) |
独自形式ファイル入力関数 | |
bool | readData (FILE *fp, fk_DataFormatMode mode=FK_BINARY_FILE, bool sizeMode=true) |
独自形式ファイルストリーム入力関数 | |
ファイル出力関数 | |
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 ファイル出力関数. | |
bool | writeData (std::string fileName, fk_DataFormatMode mode=FK_BINARY_FILE) |
独自形式ファイル出力関数 | |
bool | writeData (FILE *fp, fk_DataFormatMode mode=FK_BINARY_FILE) |
独自形式ファイルストリーム出力関数 |
半稜線構造 (Half-Edge Structure) による任意形状を生成、管理するクラス
このクラスは、半稜線構造 (Half-Edge Structure) による任意形状を制御する機能を提供します。
fk_Solid は様々な機能を持つ形状制御用クラスです。 fk_Solid 型のインスタンスが利用を想定している機能は、 実際には多くの基底クラスにて定義されています。 fk_Solid で直接定義されている関数は、 ほとんどが様々な3次元形状用ファイルフォーマットに対応した入出力機能となります。 その他、以下のようなような機能はそれぞれのクラスのマニュアルを参照して下さい。
3次元形状データファイルの入出力については、以下の形式をサポートしています。
任意の形状を表現するクラスとして、 fk_Solid の他に fk_IndexFaceSet があります。 fk_IndexFaceSet は、 fk_Solid と比較して高速な描画が行えるという長所があります。 しかしその一方で、 fk_IndexFaceSet は面が3角形か4角形のみ(そして混在は不可)という制限があります。 また、位相変化を伴う変形には対応していません。 より高度な形状表現や位相変化を伴う変形を利用する場合は fk_Solid を利用して下さい。
fk_Solid::fk_Solid | ( | void | ) |
コンストラクタ
fk_Solid::~fk_Solid | ( | ) |
デストラクタ
void fk_Solid::allClear | ( | bool | matFlg = true |
) |
形状初期化関数
インスタンスに設定されている形状と独自属性を全て消去し、 データの初期化を行います。
[in] | matFlg | true の場合、インスタンス中に設定されていたマテリアルに関する情報も 合わせて消去します。false の場合、マテリアル情報は存続させます。 |
bool fk_Solid::isEmpty | ( | void | ) |
空形状状態参照関数
形状情報が空かどうかを参照します。
void fk_Solid::cloneShape | ( | fk_Solid * | solid | ) |
形状コピー関数
引数として与えられたインスタンス中の形状をコピーします。 各種属性およびマテリアル情報は写しません。
[in] | solid | 複写元インスタンス |
bool fk_Solid::compareShape | ( | fk_Solid * | solid | ) |
形状同値比較関数
引数として与えられたインスタンス中の形状と、同じ状態かどうかを比較します。 ここでいう「同じ」とは、全ての位相要素の ID も一致している状態を指します。 幾何的には同一であるが位相要素の ID が異なるケースでは「同じ」とは判断しません。
[in] | solid | 比較インスタンス |
bool fk_Solid::readSMFFile | ( | std::string | fileName | ) |
SMFファイル入力関数.
SMF形式のファイルからデータを入力します。
[in] | fileName | ファイル名 |
bool fk_Solid::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 の場合は隣接関係を最適化せず、 入力データのままインデックスフェースセットを構築します。 |
bool fk_Solid::readSTLFile | ( | std::string | fileName, | |
bool | solidFlg = true , |
|||
double | tolerance = 1.0e-08 | |||
) |
STL ファイル入力関数.
STL形式のファイルからデータを入力します。 対応しているのは面データのみです。
[in] | fileName | ファイル名 |
[in] | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。 |
[in] | tolerance | solidFlg で true を指定した場合、 頂点同士が同一かどうかを判断するための距離許容誤差を指定します。 solidFlg が false であった場合、この値は無視されます。 |
bool fk_Solid::readHRCFile | ( | std::string | fileName | ) |
HRCファイル入力関数.
HRC形式のファイルからデータを入力します。
[in] | fileName | ファイル名 |
bool fk_Solid::readRDSFile | ( | std::string | fileName, | |
bool | solidFlg = true | |||
) |
RDSファイル入力関数.
RDS (Ray Dream Studio) 形式のファイルからデータを入力します。
[in] | fileName | ファイル名 |
[in] | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。 |
bool fk_Solid::readDXFFile | ( | std::string | fileName, | |
bool | solidFlg = true | |||
) |
DXFファイル入力関数.
DXF 形式のファイルからデータを入力します。
[in] | fileName | ファイル名 |
[in] | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。 |
bool fk_Solid::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 の場合は、マテリアル情報を無視します。 |
bool fk_Solid::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 の場合は、マテリアル情報を無視します。 |
bool fk_Solid::readD3DXFile | ( | std::string | fileName, | |
std::string | objName, | |||
bool | solidFlg = true | |||
) |
DirectX (D3DX) ファイル入力関数1.
DirectX 形式 (X 形式と呼ばれることもあります) のフォーマット (以下、「D3DX形式」) であるファイルからデータを入力します。 この関数で入力できるのは形状データとアニメーションデータです。 テクスチャデータを入力したい場合は、 fk_Solid クラスではなく fk_IFSTexture クラスを利用して下さい。
D3DXデータには「オブジェクト」という概念があり、 1つの形状データが複数のオブジェクトによって構成されていることがあります。 この関数では、ファイル名とともにオブジェクト名を指定する必要があります。
[in] | fileName | ファイル名 |
[in] | objName | オブジェクト名。 D3DX 形式では、オブジェクト名を省略することが許容されています。 そのような場合は、この引数に空文字列 ( "" ) を入れてください。 この場合、ファイル中で最初に存在するオブジェクトのデータを入力します。 |
[in] | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。 |
bool fk_Solid::readD3DXFile | ( | std::string | fileName, | |
std::string | objName, | |||
int | materialID, | |||
bool | solidFlg = true | |||
) |
DirectX (D3DX) ファイル入力関数2.
DirectX 形式 (X 形式と呼ばれることもあります) のフォーマット (以下、「D3DX形式」) であるファイルからデータを入力します。 この関数で入力できるのは形状データとアニメーションデータです。 テクスチャデータを入力したい場合は、 fk_Solid クラスではなく fk_IFSTexture クラスを利用して下さい。
D3DXデータには「オブジェクト」という概念があり、 1つの形状データが複数のオブジェクトによって構成されていることがあります。 この関数では、ファイル名とともにオブジェクト名を指定する必要があります。
[in] | fileName | ファイル名 |
[in] | objName | オブジェクト名。 D3DX 形式では、オブジェクト名を省略することが許容されています。 そのような場合は、この引数に空文字列 ( "" ) を入れてください。 この場合、ファイル中で最初に存在するオブジェクトのデータを入力します。 |
[in] | solidFlg | true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。 |
[in] | materialID | D3DXデータではマテリアルを複数設定することができ、 各ポリゴンに対してどのマテリアルを割り振るかのIDが設定されています。 この引数にマテリアルIDを指定すると、そのIDを持つポリゴンのみを読み込みます。 materialID に -1 を入力した場合は、すべてのポリゴンを読み込みます。 |
bool fk_Solid::readData | ( | std::string | fileName, | |
bool | sizeMode = true | |||
) |
独自形式ファイル入力関数
独自形式のファイルからデータを入力します。
[in] | fileName | ファイル名 |
[in] | sizeMode | 旧バージョンとの互換性のために存在する引数です。 通常は true とするか、省略して下さい。 |
bool fk_Solid::readData | ( | FILE * | fp, | |
fk_DataFormatMode | mode = FK_BINARY_FILE , |
|||
bool | sizeMode = true | |||
) |
独自形式ファイルストリーム入力関数
独自形式のファイルにおいて、FILE 型ストリームからデータを入力します。
[in] | fp | FILE型ストリームポインタ |
[in] | mode | フォーマットモード |
[in] | sizeMode | 旧バージョンとの互換性のために存在する引数です。 通常は true とするか、省略して下さい。 |
bool fk_Solid::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 | 仮想関数からの継承のために存在する引数で、処理には一切影響しません。 |
bool fk_Solid::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 | 仮想関数からの継承のために存在する引数で、処理には一切影響しません。 |
bool fk_Solid::writeSTLFile | ( | std::string | fileName | ) |
STL ファイル出力関数.
STL 形式で形状データを出力します。
[in] | fileName | ファイル名 |
bool fk_Solid::writeDXFFile | ( | std::string | fileName, | |
bool | triFlg = false | |||
) |
DXF ファイル出力関数.
DXF 形式で形状データを出力します。
[in] | fileName | ファイル名 |
[in] | triFlg | 面情報を3角形として出力したい場合は、true を代入します。 false の場合、3角形面を2点が重複している4角形面として出力します。 |
bool fk_Solid::writeMQOFile | ( | std::string | fileName | ) |
MQO ファイル出力関数.
MQO 形式で形状データを出力します。
[in] | fileName | ファイル名 |
bool fk_Solid::writeData | ( | std::string | fileName, | |
fk_DataFormatMode | mode = FK_BINARY_FILE | |||
) |
独自形式ファイル出力関数
独自形式で形状データを出力します。
[in] | fileName | ファイル名 |
[in] | mode | フォーマットモード |
bool fk_Solid::writeData | ( | FILE * | fp, | |
fk_DataFormatMode | mode = FK_BINARY_FILE | |||
) |
独自形式ファイルストリーム出力関数
独自形式のファイルにおいて、FILE 型ストリームによってデータを出力します。
[in] | fp | FILE型ストリームポインタ |
[in] | mode | フォーマットモード |