クラス fk_IFSTexture

IFSテクスチャを生成、管理するクラス. [詳細]

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

すべてのメンバ一覧

Public メソッド

 fk_IFSTexture (fk_Image *image=(fk_Image *) NULL)
 コンストラクタ
 ~fk_IFSTexture ()
 デストラクタ
void init (void)
 初期化関数
fk_TexCoord getTextureCoord (int tID, int vID)
 テクスチャ座標参照関数
fk_IndexFaceSetgetIFS (void)
 形状データ参照関数
void setTextureCoord (int tID, int vID, fk_TexCoord &coord)
 テクスチャ座標設定関数
bool readMQOFile (std::string fileName, std::string objName, int materialID=-1, bool contFlg=true)
 MQOファイル入力関数.
bool readMQOData (unsigned char *buffer, std::string objName, int materialID=-1, bool contFlg=true)
 MQOデータ入力関数.
bool readD3DXFile (std::string fileName, std::string objName, int materialID=-1)
 DirectX (D3DX) ファイル入力関数.
void setConnectMode (bool connectFlg)
 法線連続性設定関数
bool getConnectMode (void)
 法線連続性設定関数
bool moveVPosition (int vID, const fk_Vector &pos, int order=0)
 頂点移動関数1
bool moveVPosition (int vID, double x, double y, double z, int order=0)
 頂点移動関数2
bool moveVPosition (int vID, double *pos, int order=0)
 頂点移動関数3
void setAnimationTime (double t)
 アニメーション時間設定関数
void setBVHMotion (fk_BVHMotion *bvh)
 BVH データ設定関数.

説明

IFSテクスチャを生成、管理するクラス.

このクラスは、「IFSテクスチャ」を制御する機能を提供します。 IFSテクスチャとは、多数の三角形テクスチャをひとまとめにした形状のことで、 実質的には fk_IndexFaceSet クラスに対してテクスチャを付加したものです。 このクラスの主な用途は、 他のモデラー等で作成した形状データファイルを読み込んで表示するというものです。 また、 fk_IndexFaceSet クラスと同様に形状のアニメーションを入力することも可能です。

なお、このクラスでテクスチャ付きの形状データを読み込む場合、 テクスチャデータは 1 個のファイルで構成されていなければならないという制限があります。

実際に利用する際には、まずテクスチャ画像データを設定する必要があります。 画像データの入力や生成については、 fk_Texture のマニュアルを参照して下さい。 形状データの入力と画像データの設定は、どちらが先であっても問題ありません。

本クラスと同様の機能を持つクラスとして、 fk_MeshTexture があります。 fk_MeshTexture クラスと比較した、 本クラスの長所と短所をまとめると以下のようになります。

ほとんどの用途においては fk_IFSTexture の方が有利と言えますが、 3角形テクスチャの動的生成を行いたい場合は fk_MeshTexture の利用を検討する価値があると言えます。

参照:
fk_IndexFaceSet, fk_Texture, fk_MeshTexture

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

fk_IFSTexture::fk_IFSTexture ( fk_Image image = (fk_Image *) NULL  ) 

コンストラクタ

引数によってテクスチャ画像を設定することが可能です。

引数:
[in] image テクスチャデータ。 省略されるか、NULL が代入された場合はテクスチャデータを空の状態として生成します。
fk_IFSTexture::~fk_IFSTexture (  ) 

デストラクタ


関数

void fk_IFSTexture::init ( void   ) 

初期化関数

テクスチャデータおよびテクスチャ座標のデータを全て破棄し、 初期化を行います。

fk_TexCoord fk_IFSTexture::getTextureCoord ( int  tID,
int  vID 
)

テクスチャ座標参照関数

テクスチャ座標を参照します。

引数:
[in] tID 三角形ID
[in] vID 頂点ID
戻り値:
テクスチャ座標
fk_IndexFaceSet* fk_IFSTexture::getIFS ( void   ) 

形状データ参照関数

fk_IFSTexture では、形状データとして fk_IndexFaceSet クラスのインスタンスを保持しています。 この関数は、そのインスタンスのポインタを返します。 ここで得たインスタンスに対して形状を操作することで、 fk_IFSTexture による形状の操作が可能となります。

戻り値:
fk_IndexFaceSet 型の形状データのポインタ
void fk_IFSTexture::setTextureCoord ( int  tID,
int  vID,
fk_TexCoord coord 
)

テクスチャ座標設定関数

テクスチャ座標を設定します。

引数:
[in] tID 三角形ID
[in] vID 頂点ID
[in] coord テクスチャ座標
bool fk_IFSTexture::readMQOFile ( std::string  fileName,
std::string  objName,
int  materialID = -1,
bool  contFlg = true 
)

MQOファイル入力関数.

MQO形式のファイルからデータを入力します。 この関数で入力できるのは形状とテクスチャ座標データです。 テクスチャ画像データは fk_Texture のメンバ関数によって、 別途入力する必要があります。

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

引数:
[in] fileName ファイル名
[in] objName オブジェクト名
[in] materialID MQOデータではマテリアルを複数設定することができ、 各ポリゴンに対してどのマテリアルを割り振るかのIDが設定されています。 この引数にマテリアルIDを指定すると、そのIDを持つポリゴンのみを読み込みます。 materialID に -1 を入力した場合は、すべてのポリゴンを読み込みます。
[in] contFlg テクスチャ断絶の設定を指定します。これは、テクスチャ座標が不連続な箇所に対し、 形状の位相を断絶する操作を行うためのものです。 これを true にした場合は断裂操作が行われ、 テクスチャ座標が不連続な箇所が幾何的にも不連続となるように表示されます。 ほとんどの場合は、断裂操作を行った方が良好な描画結果となります。 ただし、断裂操作を行う際に新たな位相要素を生成するため、 本来のデータよりも頂点、稜線、面が若干増加する場合があります。 false にした場合は、断裂操作を行わずに通常のデータ通り読み込みます。
戻り値:
ファイルの入力に成功した場合 true を、失敗した場合 false を返します。
参照:
readMQOData(), fk_IFSTexture::readMQOFile()
bool fk_IFSTexture::readMQOData ( unsigned char *  buffer,
std::string  objName,
int  materialID = -1,
bool  contFlg = true 
)

MQOデータ入力関数.

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

この関数で入力できるのは形状とテクスチャ座標データです。 テクスチャ画像データは fk_Texture のメンバ関数によって、 別途入力する必要があります。

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

引数:
[in] buffer データが格納されているバッファ
[in] objName オブジェクト名
[in] materialID MQOデータではマテリアルを複数設定することができ、 各ポリゴンに対してどのマテリアルを割り振るかのIDが設定されています。 この引数にマテリアルIDを指定すると、そのIDを持つポリゴンのみを読み込みます。 materialID に -1 を入力した場合は、すべてのポリゴンを読み込みます。
[in] contFlg テクスチャ断絶の設定を指定します。これは、テクスチャ座標が不連続な箇所に対し、 形状の位相を断絶する操作を行うためのものです。 これを true にした場合は断裂操作が行われ、 テクスチャ座標が不連続な箇所が幾何的にも不連続となるように表示されます。 ほとんどの場合は、断裂操作を行った方が良好な描画結果となります。 ただし、断裂操作を行う際に新たな位相要素を生成するため、 本来のデータよりも頂点、稜線、面が若干増加する場合があります。 false にした場合は、断裂操作を行わずに通常のデータ通り読み込みます。
戻り値:
データ入力に成功した場合 true を、失敗した場合 false を返します。
参照:
readMQOFile(), fk_IndexFaceSet::readMQOData()
bool fk_IFSTexture::readD3DXFile ( std::string  fileName,
std::string  objName,
int  materialID = -1 
)

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

DirectX 形式 (X 形式と呼ばれることもあります) のフォーマット (以下、「D3DX形式」) であるファイルからデータを入力します。 この関数で入力できるのは形状、テクスチャ座標データ、 そしてアニメーションデータです。 テクスチャ画像データは fk_Texture のメンバ関数によって、 別途入力する必要があります。

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

引数:
[in] fileName ファイル名
[in] objName オブジェクト名。 D3DX 形式では、オブジェクト名を省略することが許容されています。 そのような場合は、この引数に空文字列 ( "" ) を入れてください。 この場合、ファイル中で最初に存在するオブジェクトのデータを入力します。
[in] materialID D3DXデータではマテリアルを複数設定することができ、 各ポリゴンに対してどのマテリアルを割り振るかのIDが設定されています。 この引数にマテリアルIDを指定すると、そのIDを持つポリゴンのみを読み込みます。 materialID に -1 を入力した場合は、すべてのポリゴンを読み込みます。
戻り値:
ファイルの入力に成功した場合 true を、失敗した場合 false を返します。
void fk_IFSTexture::setConnectMode ( bool  connectFlg  ) 

法線連続性設定関数

入力する形状に対して法線連続性の設定を行います。 法線連続性を有効にした場合、 形状全体に対してスムースシェーディングの効果を有効とします。 この場合は、各ポリゴン同士の境界がわかりづらくなります。 法線連続性を無効にした場合、 ポリゴン同士のスムースシェーディングは行いません。 そのため、各ポリゴン同士の描画が明確となります。

なお、この関数による設定はファイル入力よりも前に行う必要があります。 既に入力したデータに対しては適用されません。

引数:
[in] connectFlg true の場合、法線連続性が有効となります。false の場合は無効となります。
参照:
getConnectMode()
bool fk_IFSTexture::getConnectMode ( void   ) 

法線連続性設定関数

法線連続性の設定を参照します。 法線連続性の詳細については、 setConnectMode() を参照して下さい。

戻り値:
true の場合、法線連続性が有効であることを意味します。 false の場合は無効であることを意味します。
参照:
setConnectMode()
bool fk_IFSTexture::moveVPosition ( int  vID,
const fk_Vector pos,
int  order = 0 
)

頂点移動関数1

形状の頂点を移動します。

引数:
[in] vID 頂点ID
[in] pos 移動位置ベクトル
[in] order 全頂点ID のうち、もっとも最小の ID 番号
戻り値:
頂点移動が成功したら true を、失敗したら false を返します。
bool fk_IFSTexture::moveVPosition ( int  vID,
double  x,
double  y,
double  z,
int  order = 0 
)

頂点移動関数2

形状の頂点を移動します。

引数:
[in] vID 頂点ID
[in] x 移動位置ベクトルの x 成分
[in] y 移動位置ベクトルの y 成分
[in] z 移動位置ベクトルの z 成分
[in] order 全頂点ID のうち、もっとも最小の ID 番号
戻り値:
頂点移動が成功したら true を、失敗したら false を返します。
bool fk_IFSTexture::moveVPosition ( int  vID,
double *  pos,
int  order = 0 
)

頂点移動関数3

形状の頂点を移動します。

引数:
[in] vID 頂点ID
[in] pos 移動位置ベクトルを示す double 型配列の先頭アドレス。
[in] order 全頂点ID のうち、もっとも最小の ID 番号
戻り値:
頂点移動が成功したら true を、失敗したら false を返します。
void fk_IFSTexture::setAnimationTime ( double  t  ) 

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

D3DX形式の入力や BVH データ設定によってアニメーションが設定されていた場合、 形状を指定した時間に対応する状態に設定します。

引数:
[in] t 時間
void fk_IFSTexture::setBVHMotion ( fk_BVHMotion bvh  ) 

BVH データ設定関数.

入力した形状データに対し、 fk_BVHMotion によるのモーションデータを設定します。

引数:
[in] bvh モーションデータ

FineKernelToolKitに対してSat Sep 26 20:35:30 2009に生成されました。  doxygen 1.6.1