クラス fk_Solid

半稜線構造 (Half-Edge Structure) による任意形状を生成、管理するクラス [詳細]

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

すべてのメンバ一覧

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 readSRFFile (std::string fileName)
 SRFファイル入力関数.
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_IndexFaceSet, fk_Shape, fk_Model, fk_ReferenceL1, fk_ReferenceL2, fk_ReferenceL3, fk_DataAccess, fk_Operation, fk_Modify, fk_SolidBase, fk_Shape, fk_Attribute

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

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   ) 

空形状状態参照関数

形状情報が空かどうかを参照します。

戻り値:
形状情報が空の場合 true を、そうでない場合は false を返します。
void fk_Solid::cloneShape ( fk_Solid solid  ) 

形状コピー関数

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

引数:
[in] solid 複写元インスタンス
bool fk_Solid::compareShape ( fk_Solid solid  ) 

形状同値比較関数

引数として与えられたインスタンス中の形状と、同じ状態かどうかを比較します。 ここでいう「同じ」とは、全ての位相要素の ID も一致している状態を指します。 幾何的には同一であるが位相要素の ID が異なるケースでは「同じ」とは判断しません。

引数:
[in] solid 比較インスタンス
戻り値:
同じであれば true を、異なれば false を返します。
bool fk_Solid::readSMFFile ( std::string  fileName  ) 

SMFファイル入力関数.

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

引数:
[in] fileName ファイル名
戻り値:
成功すれば true を、失敗すれば false を返します。
bool fk_Solid::readSRFFile ( std::string  fileName  ) 

SRFファイル入力関数.

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

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

HRCファイル入力関数.

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

引数:
[in] fileName ファイル名
戻り値:
成功すれば true を、失敗すれば false を返します。
bool fk_Solid::readRDSFile ( std::string  fileName,
bool  solidFlg = true 
)

RDSファイル入力関数.

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

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

DXFファイル入力関数.

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

引数:
[in] fileName ファイル名
[in] solidFlg true の場合、位相の隣接関係を最適化します。 ただし、結果として入力に失敗する場合があります。 false の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
戻り値:
成功すれば 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 の場合は、マテリアル情報を無視します。
戻り値:
成功すれば true を、失敗すれば 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 の場合は、マテリアル情報を無視します。
戻り値:
成功すれば true を、失敗すれば 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 の場合は隣接関係を最適化せず、 すべての面が独立した状態として形状を構築します。
戻り値:
ファイルの入力に成功した場合 true を、失敗した場合 false を返します。
参照:
fk_IFSTexture::readD3DXFile()
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 を入力した場合は、すべてのポリゴンを読み込みます。
戻り値:
ファイルの入力に成功した場合 true を、失敗した場合 false を返します。
参照:
fk_IFSTexture::readD3DXFile()
bool fk_Solid::readData ( std::string  fileName,
bool  sizeMode = true 
)

独自形式ファイル入力関数

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

引数:
[in] fileName ファイル名
[in] sizeMode 旧バージョンとの互換性のために存在する引数です。 通常は true とするか、省略して下さい。
戻り値:
成功すれば true を、失敗すれば false を返します。
bool fk_Solid::readData ( FILE *  fp,
fk_DataFormatMode  mode = FK_BINARY_FILE,
bool  sizeMode = true 
)

独自形式ファイルストリーム入力関数

独自形式のファイルにおいて、FILE 型ストリームからデータを入力します。

引数:
[in] fp FILE型ストリームポインタ
[in] mode フォーマットモード
[in] sizeMode 旧バージョンとの互換性のために存在する引数です。 通常は true とするか、省略して下さい。
戻り値:
成功すれば true を、失敗すれば false を返します。
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 仮想関数からの継承のために存在する引数で、処理には一切影響しません。
戻り値:
ファイルの出力に成功した場合 true を、失敗した場合 false を返します。
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 仮想関数からの継承のために存在する引数で、処理には一切影響しません。
戻り値:
ファイルの出力に成功した場合 true を、失敗した場合 false を返します。
bool fk_Solid::writeSTLFile ( std::string  fileName  ) 

STL ファイル出力関数.

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

引数:
[in] fileName ファイル名
戻り値:
ファイルの出力に成功した場合 true を、失敗した場合 false を返します。
bool fk_Solid::writeDXFFile ( std::string  fileName,
bool  triFlg = false 
)

DXF ファイル出力関数.

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

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

MQO ファイル出力関数.

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

引数:
[in] fileName ファイル名
戻り値:
ファイルの出力に成功した場合 true を、失敗した場合 false を返します。
bool fk_Solid::writeData ( std::string  fileName,
fk_DataFormatMode  mode = FK_BINARY_FILE 
)

独自形式ファイル出力関数

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

引数:
[in] fileName ファイル名
[in] mode フォーマットモード
戻り値:
成功すれば true を、失敗すれば false を返します。
bool fk_Solid::writeData ( FILE *  fp,
fk_DataFormatMode  mode = FK_BINARY_FILE 
)

独自形式ファイルストリーム出力関数

独自形式のファイルにおいて、FILE 型ストリームによってデータを出力します。

引数:
[in] fp FILE型ストリームポインタ
[in] mode フォーマットモード
戻り値:
成功すれば true を、失敗すれば false を返します。
FineKernelToolKitに対してFri Apr 23 16:38:43 2010に生成されました。  doxygen 1.6.3