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

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

#include <FK/IFSTexture.h>

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

公開メンバ関数

 fk_IFSTexture (fk_Image *image=nullptr)
 コンストラクタ
 
virtual ~fk_IFSTexture ()
 デストラクタ
 
void init (void)
 初期化関数
 
fk_TexCoord getTextureCoord (int tID, int vID)
 テクスチャ座標参照関数
 
fk_IndexFaceSetgetIFS (void)
 形状データ参照関数
 
void cloneShape (fk_IFSTexture *ifsTex)
 形状コピー関数
 
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_BVHBase *bvh)
 BVH データ設定関数
 
- 基底クラス FK::fk_Texture に属する継承公開メンバ関数
void setImage (fk_Image *image)
 画像データ設定関数
 
fk_ImagegetImage (void)
 画像データ取得関数
 
bool readBMP (std::string fileName)
 BMP ファイル入力関数
 
bool readBMPData (fk_ImType *buf)
 BMP バッファ入力関数
 
bool readPNG (std::string fileName)
 PNG ファイル入力関数
 
bool readPNGData (fk_ImType *buf)
 PNG バッファ入力関数
 
bool readJPG (std::string fileName)
 JPEG ファイル入力関数
 
const fk_DimensiongetImageSize (void)
 画像サイズ取得関数
 
const fk_DimensiongetBufferSize (void)
 画像バッファサイズ取得関数
 
void setTextureMode (fk_TexMode mode)
 テクスチャモード設定関数
 
fk_TexMode getTextureMode (void)
 テクスチャモード取得関数
 
void setTexRendMode (fk_TexRendMode mode)
 テクスチャ描画品質設定関数
 
fk_TexRendMode getTexRendMode (void)
 テクスチャ描画品質取得関数
 
void setTexWrapMode (fk_TexWrapMode mode)
 テクスチャ外周部モード設定関数
 
fk_TexWrapMode getTexWrapMode (void)
 テクスチャ外周部モード取得関数
 
void fillColor (const fk_Color &color)
 一様色初期化関数1
 
void fillColor (int r, int g, int b, int a=0)
 一様色初期化関数2
 
const fk_ImType * getImageBuf (void)
 画像データ配列先頭アドレス取得関数

 
void setFrameBuffer (fk_FrameBuffer *buffer)
 フレームバッファー設定関数
 
fk_FrameBuffergetFrameBuffer (void)
 フレームバッファー取得関数
 
void initFrameBuffer (void)
 フレームバッファー情報初期化関数
 
- 基底クラス 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
 タイプ取得関数
 

詳解

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::fk_IFSTexture::fk_IFSTexture ( fk_Image image = nullptr)

コンストラクタ

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

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

◆ ~fk_IFSTexture()

virtual FK::fk_IFSTexture::~fk_IFSTexture ( )
virtual

デストラクタ

関数詳解

◆ init()

void FK::fk_IFSTexture::init ( void  )

初期化関数

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

◆ getTextureCoord()

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

テクスチャ座標参照関数

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

引数
[in]tID三角形ID
[in]vID頂点ID
戻り値
テクスチャ座標

◆ getIFS()

fk_IndexFaceSet * FK::fk_IFSTexture::getIFS ( void  )

形状データ参照関数

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

戻り値
fk_IndexFaceSet 型の形状データのポインタ

◆ cloneShape()

void FK::fk_IFSTexture::cloneShape ( fk_IFSTexture ifsTex)

形状コピー関数

引数として与えられたインスタンス中の形状やテクスチャデータをコピーします。

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

◆ setTextureCoord()

void FK::fk_IFSTexture::setTextureCoord ( int  tID,
int  vID,
fk_TexCoord coord 
)

テクスチャ座標設定関数

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

引数
[in]tID三角形ID
[in]vID頂点ID
[in]coordテクスチャ座標

◆ readMQOFile()

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

◆ readMQOData()

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

◆ readD3DXFile()

bool FK::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]materialIDD3DXデータではマテリアルを複数設定することができ、 各ポリゴンに対してどのマテリアルを割り振るかのIDが設定されています。 この引数にマテリアルIDを指定すると、そのIDを持つポリゴンのみを読み込みます。 materialID に -1 を入力した場合は、すべてのポリゴンを読み込みます。
戻り値
ファイルの入力に成功した場合 true を、失敗した場合 false を返します。

◆ setConnectMode()

void FK::fk_IFSTexture::setConnectMode ( bool  connectFlg)

法線連続性設定関数

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

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

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

◆ getConnectMode()

bool FK::fk_IFSTexture::getConnectMode ( void  )

法線連続性設定関数

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

戻り値
true の場合、法線連続性が有効であることを意味します。 false の場合は無効であることを意味します。
参照
setConnectMode()

◆ moveVPosition() [1/3]

bool FK::fk_IFSTexture::moveVPosition ( int  vID,
const fk_Vector pos,
int  order = 0 
)

頂点移動関数1

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

引数
[in]vID頂点ID
[in]pos移動位置ベクトル
[in]order全頂点ID のうち、もっとも最小の ID 番号
戻り値
頂点移動が成功したら true を、失敗したら false を返します。

◆ moveVPosition() [2/3]

bool FK::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 を返します。

◆ moveVPosition() [3/3]

bool FK::fk_IFSTexture::moveVPosition ( int  vID,
double *  pos,
int  order = 0 
)

頂点移動関数3

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

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

◆ setAnimationTime()

void FK::fk_IFSTexture::setAnimationTime ( double  t)

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

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

引数
[in]t時間

◆ setBVHMotion()

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

BVH データ設定関数

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

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