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

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

#include <FK/Solid.h>

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

公開メンバ関数

 fk_Solid (void)
 コンストラクタ
 
virtual ~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 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 ファイル出力関数
 
- 基底クラス FK::fk_SolidBase に属する継承公開メンバ関数
 fk_SolidBase (void)
 コンストラクタ
 
virtual ~fk_SolidBase ()
 デストラクタ
 
void makeIFSet (int faceNum, int polyNum, int *IFSet, int vertexNum, fk_Vector *posArray, int order=0)
 任意形状生成関数1
 
void makeIFSet (std::vector< std::vector< int > > *faceArray, std::vector< fk_Vector > *posArray, int order=0)
 任意形状生成関数2
 
- 基底クラス FK::fk_Modify に属する継承公開メンバ関数
 fk_Modify (fk_DataBase *=nullptr)
 コンストラクタ
 
virtual ~fk_Modify ()
 デストラクタ
 
fk_LoopremoveVertexInLoop (fk_Vertex *V)
 頂点削除関数
 
bool contractEdge (fk_Edge *E, bool R=true)
 稜線削除関数1
 
bool contractEdge (fk_Edge *E, fk_Vector P, bool R=true)
 稜線削除関数2
 
bool checkContract (fk_Edge *E)
 稜線削除可能判定関数
 
fk_LoopmakePolygon (std::vector< fk_Vector > *array, bool openFlg, bool initFlg=true)
 多角形生成関数1
 
fk_LoopmakePolygon (int num, fk_Vector *array, bool openFlg, bool initFlg=true)
 多角形生成関数2
 
fk_LooppushPolygon (std::vector< fk_Vector > *array, bool openFlg=false)
 多角形追加関数1
 
fk_LooppushPolygon (int num, fk_Vector *array, bool openFlg=false)
 多角形追加関数2
 
void pushPolygonVertex (fk_Vector pos, bool openFlg)
 多角形頂点追加関数
 
void makePoint (std::vector< fk_Vector > *array)
 頂点群生成関数1
 
void makePoint (int num, fk_Vector *array)
 頂点群生成関数2
 
fk_VertexpushPointVertex (fk_Vector pos)
 頂点追加関数
 
void makeLines (std::vector< fk_Vector > *array)
 線分群生成関数1
 
void makeLines (int num, fk_Vector *array)
 線分群生成関数2
 
fk_EdgepushLines (fk_Vector pos1, fk_Vector pos2)
 線分追加関数
 
bool setLinePos (int ID, fk_Vector pos)
 線分頂点移動関数1
 
bool setLinePos (int edgeID, int vertexID, fk_Vector pos)
 線分頂点移動関数2
 
bool changeLine (int edgeID, fk_Vector pos1, fk_Vector pos2)
 線分両端点移動関数
 
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)
 正多角錐(円錐)高さ設定関数
 
bool moveVPosition (int vertexID, 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)
 頂点移動関数2
 
void subdivShape (int count)
 細分割曲面生成関数
 
- 基底クラス FK::fk_Operation に属する継承公開メンバ関数
 fk_Operation (fk_DataBase *=nullptr)
 コンストラクタ
 
virtual ~fk_Operation ()
 デストラクタ
 
fk_VertexmakeVertex (const fk_Vector P)
 頂点生成関数
 
bool deleteVertex (fk_Vertex *V)
 頂点削除関数
 
bool moveVertex (fk_Vertex *V, fk_Vector P)
 頂点移動関数
 
fk_EdgemakeEdge (fk_Vertex *V_1, fk_Vertex *V_2, fk_Half *H_11=nullptr, fk_Half *H_12=nullptr, fk_Half *H_21=nullptr, fk_Half *H_22=nullptr)
 稜線生成関数
 
bool deleteEdge (fk_Edge *E)
 稜線削除関数
 
fk_LoopmakeLoop (fk_Half *H)
 ループ生成関数
 
bool deleteLoop (fk_Loop *L)
 ループ削除関数
 
fk_EdgeseparateLoop (fk_Half *H1, fk_Half *H2)
 ループ分割関数
 
bool uniteLoop (fk_Edge *E)
 ループ結合関数
 
fk_VertexseparateEdge (fk_Edge *E)
 稜線分離関数
 
bool uniteEdge (fk_Vertex *V)
 稜線結合関数
 
void negateBody (void)
 形状反転関数
 
void setHistoryMode (bool mode)
 履歴保存モード設定関数
 
bool getHistoryMode (void)
 履歴保存モード参照関数
 
void setHistoryMark (void)
 履歴マーク設定関数
 
bool undoHistory (void)
 UNDO 操作実行関数
 
bool redoHistory (void)
 REDO 操作実行関数
 
void setTesselateMode (bool mode)
 形状全体テセレーション設定関数
 
bool getTesselateMode (void)
 形状全体テセレーション状態参照関数
 
- 基底クラス FK::fk_ReferenceL3 に属する継承公開メンバ関数
std::vector< fk_Vertex * > getAllNeighborVOnV (fk_Vertex *V) const
 全隣接頂点参照関数
 
std::vector< fk_Edge * > getEOnVV (fk_Vertex *V1, fk_Vertex *V2) const
 頂点間稜線参照関数
 
fk_LoopgetOneLOnV (fk_Vertex *V) const
 頂点接続ループ参照関数
 
fk_LoopgetNeighborLOnLE (fk_Loop *L, fk_Edge *E) const
 稜線条件付き隣接ループ参照関数
 
std::vector< fk_Loop * > getAllNeighborLOnL (fk_Loop *L) const
 全隣接ループ参照関数
 
- 基底クラス FK::fk_ReferenceL2 に属する継承公開メンバ関数
fk_VertexgetOneNeighborVOnV (fk_Vertex *V) const
 隣接頂点参照関数
 
std::vector< fk_Half * > getAllHOnV (fk_Vertex *V) const
 頂点接続全半稜線参照関数
 
std::vector< fk_Edge * > getAllEOnV (fk_Vertex *V) const
 頂点接続全稜線参照関数
 
std::vector< fk_Loop * > getAllLOnV (fk_Vertex *V) const
 頂点接続全ループ参照関数
 
int getENumOnV (fk_Vertex *V) const
 頂点接続稜線数参照関数
 
std::vector< fk_Vertex * > getAllVOnL (fk_Loop *L) const
 ループ所属全頂点参照関数
 
std::vector< fk_Half * > getAllHOnL (fk_Loop *L) const
 ループ所属全半稜線参照関数
 
std::vector< fk_Edge * > getAllEOnL (fk_Loop *L) const
 ループ所属全稜線参照関数
 
fk_LoopgetOneNeighborLOnL (fk_Loop *L) const
 隣接ループ参照関数
 
fk_LoopgetNeighborLOnLH (fk_Loop *L, fk_Half *H) const
 半稜線条件付き隣接ループ参照関数
 
int getVNumOnL (fk_Loop *L) const
 ループ上頂点数参照関数
 
- 基底クラス FK::fk_ReferenceL1 に属する継承公開メンバ関数
fk_HalfgetOneHOnV (fk_Vertex *V) const
 頂点接続半稜線参照関数
 
fk_EdgegetOneEOnV (fk_Vertex *V) const
 頂点接続稜線参照関数
 
fk_VertexgetVOnH (fk_Half *H) const
 半稜線接続頂点参照関数
 
fk_HalfgetMateHOnH (fk_Half *H) const
 対半稜線参照関数
 
fk_EdgegetParentEOnH (fk_Half *H) const
 親稜線参照関数
 
fk_LoopgetParentLOnH (fk_Half *H) const
 親ループ参照関数
 
fk_VertexgetRightVOnE (fk_Edge *E) const
 右側頂点参照関数
 
fk_VertexgetLeftVOnE (fk_Edge *E) const
 左側頂点参照関数
 
fk_HalfgetRightHOnE (fk_Edge *E) const
 右側半稜線参照関数
 
fk_HalfgetLeftHOnE (fk_Edge *E) const
 左側半稜線参照関数
 
fk_LoopgetRightLOnE (fk_Edge *E) const
 右側ループ参照関数
 
fk_LoopgetLeftLOnE (fk_Edge *E) const
 左側ループ参照関数
 
fk_EdgeStatus getEdgeStatus (fk_Edge *E) const
 稜線位相状態参照関数
 
fk_VertexgetOneVOnL (fk_Loop *L) const
 ループ所属頂点参照関数
 
fk_HalfgetOneHOnL (fk_Loop *L) const
 ループ所属半稜線参照関数
 
fk_EdgegetOneEOnL (fk_Loop *L) const
 ループ所属稜線参照関数
 
- 基底クラス FK::fk_DataAccess に属する継承公開メンバ関数
 fk_DataAccess (void)
 コンストラクタ
 
virtual ~fk_DataAccess ()
 デストラクタ
 
bool checkDB (void) const
 データベース設定チェック関数
 
bool checkTopology (void)
 位相状況チェック関数
 
void printTopology (void)
 位相状況出力関数
 
bool existVertex (fk_Vertex *vertex) const
 頂点位相要素存在判定関数1
 
bool existVertex (int ID) const
 頂点位相要素存在判定関数2
 
bool existHalf (fk_Half *half) const
 半稜線位相要素存在判定関数1
 
bool existHalf (int ID) const
 半稜線位相要素存在判定関数2
 
bool existEdge (fk_Edge *edge) const
 稜線位相要素存在判定関数1
 
bool existEdge (int ID) const
 稜線位相要素存在判定関数2
 
bool existLoop (fk_Loop *loop) const
 ループ位相要素存在判定関数1
 
bool existLoop (int ID) const
 ループ位相要素存在判定関数2
 
fk_VertexgetVData (int ID) const
 頂点位相要素参照関数
 
fk_HalfgetHData (int ID) const
 半稜線位相要素参照関数
 
fk_EdgegetEData (int ID) const
 稜線位相要素参照関数
 
fk_LoopgetLData (int ID) const
 ループ位相要素参照関数
 
fk_VertexgetNextV (fk_Vertex *vertex) const
 頂点位相要素逐次参照関数
 
fk_HalfgetNextH (fk_Half *half) const
 半稜線位相要素逐次参照関数
 
fk_EdgegetNextE (fk_Edge *edge) const
 稜線位相要素逐次参照関数
 
fk_LoopgetNextL (fk_Loop *loop) const
 ループ位相要素逐次参照関数
 
fk_VertexgetLastV (void) const
 頂点位相最終要素参照関数
 
fk_HalfgetLastH (void) const
 半稜線位相最終要素参照関数
 
fk_EdgegetLastE (void) const
 稜線位相最終要素参照関数
 
fk_LoopgetLastL (void) const
 ループ位相最終要素参照関数
 
int getVNum (void) const
 頂点数参照関数
 
int getHNum (void) const
 半稜線数参照関数
 
int getENum (void) const
 稜線数参照関数
 
int getLNum (void) const
 ループ数参照関数
 
void getVertexList (std::list< fk_Vertex * > *list)
 頂点コンテナ取得関数
 
void getHalfList (std::list< fk_Half * > *list)
 半稜線コンテナ取得関数
 
void getEdgeList (std::list< fk_Edge * > *list)
 稜線コンテナ取得関数
 
void getLoopList (std::list< fk_Loop * > *list)
 ループコンテナ取得関数
 
- 基底クラス 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
 タイプ取得関数
 

詳解

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

このクラスは、半稜線構造 (Half-Edge Structure) による任意形状を制御する機能を提供します。

fk_Solid は様々な機能を持つ形状制御用クラスです。 fk_Solid 型のインスタンスが利用を想定している機能は、 実際には多くの基底クラスにて定義されています。 fk_Solid で直接定義されている関数は、 ほとんどが様々な3次元形状用ファイルフォーマットに対応した入出力機能となります。 その他、以下のようなような機能はそれぞれのクラスのマニュアルを参照して下さい。

3次元形状データファイルの入出力については、以下の形式をサポートしています。

参照
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::fk_Solid::fk_Solid ( void  )

コンストラクタ

◆ ~fk_Solid()

virtual FK::fk_Solid::~fk_Solid ( )
virtual

デストラクタ

関数詳解

◆ allClear()

void FK::fk_Solid::allClear ( bool  matFlg = true)

形状初期化関数

インスタンスに設定されている形状と独自属性を全て消去し、 データの初期化を行います。

引数
[in]matFlgtrue の場合、インスタンス中に設定されていたマテリアルに関する情報も 合わせて消去します。false の場合、マテリアル情報は存続させます。

◆ isEmpty()

bool FK::fk_Solid::isEmpty ( void  )

空形状状態参照関数

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

戻り値
形状情報が空の場合 true を、そうでない場合は false を返します。

◆ cloneShape()

void FK::fk_Solid::cloneShape ( fk_Solid solid)

形状コピー関数

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

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

◆ compareShape()

bool FK::fk_Solid::compareShape ( fk_Solid solid)

形状同値比較関数

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

引数
[in]solid比較インスタンス
戻り値
同じであれば true を、異なれば false を返します。

◆ readSMFFile()

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

SMFファイル入力関数

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

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

◆ readSRFFile()

bool FK::fk_Solid::readSRFFile ( std::string  fileName)

SRFファイル入力関数

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

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

◆ readVRMLFile()

bool FK::fk_Solid::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」とも呼ばれます。 本関数では入力フォーマットとして VRML97 を想定しています。
VRMLは文法解釈、特にセパレータの扱い方についてはあまり厳密になっておらず、 様々なデータによって異なる解釈がなされているようです。 そのため、構文解析がうまくいかずに入力失敗する場合がありえます。

◆ readSTLFile()

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

STL ファイル入力関数

STL形式のファイルからデータを入力します。 対応しているのは面データのみです。

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

◆ readHRCFile()

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

HRCファイル入力関数

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

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

◆ readRDSFile()

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

RDSファイル入力関数

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

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

◆ readDXFFile()

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

DXFファイル入力関数

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

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

◆ readMQOFile() [1/2]

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

◆ readMQOFile() [2/2]

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

◆ readD3DXFile() [1/2]

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

◆ readD3DXFile() [2/2]

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

◆ writeVRMLFile() [1/2]

bool FK::fk_Solid::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_Solid::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_Solid::writeSTLFile ( std::string  fileName)

STL ファイル出力関数

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

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

◆ writeDXFFile()

bool FK::fk_Solid::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_Solid::writeMQOFile ( std::string  fileName)

MQO ファイル出力関数

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

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