FineKernelToolKit  2.8.10
Public メソッド
クラス fk_MeshTexture

メッシュテクスチャを生成、管理するクラス [詳細]

+ fk_MeshTextureに対する継承グラフ
+ fk_MeshTextureのコラボレーション図

すべてのメンバ一覧

Public メソッド

 fk_MeshTexture (fk_Image *image=(fk_Image *) NULL)
 コンストラクタ
virtual ~fk_MeshTexture ()
 デストラクタ
void init (void)
 初期化関数
bool setTriNum (int num)
 3角形面数設定関数
int getTriNum (void)
 3角形面数参照関数
bool setTextureCoord (int tID, int vID, double x, double y)
 テクスチャ座標設定関数1
bool setTextureCoord (int tID, int vID, fk_TexCoord coord)
 テクスチャ座標設定関数2
bool setTriTextureCoord (int tID, std::vector< fk_TexCoord > *array)
 テクスチャ座標配列設定関数1
bool setTriTextureCoord (int tID, fk_TexCoord *array)
 テクスチャ座標配列設定関数2
fk_TexCoord getTextureCoord (int tID, int vID)
 テクスチャ座標参照関数
bool setVertexPos (int tID, int vID, double x, double y, double z)
 頂点位置ベクトル設定関数1
bool setVertexPos (int tID, int vID, fk_Vector pos)
 頂点位置ベクトル設定関数2
bool setTriPos (int tID, std::vector< fk_Vector > *array)
 頂点位置ベクトル配列設定関数1
bool setTriPos (int tID, fk_Vector *array)
 頂点位置ベクトル配列設定関数2
fk_Vector getVertexPos (int tID, int vID)
 頂点位置ベクトル参照関数
void putIndexFaceSet (fk_IndexFaceSet *ifs)
 fk_IndexFaceSet インスタンスコピー関数
bool readMQOFile (std::string fileName, std::string objName, bool contFlg=true)
 MQOファイル入力関数

説明

メッシュテクスチャを生成、管理するクラス

このクラスは、複数の3角形テクスチャを制御する機能を提供します。

メッシュテクスチャを生成するおおまかな手順は以下のようになります。

  1. 画像を入力する。
  2. 各頂点のテクスチャ座標を設定する。
  3. 各頂点の3次元空間内の位置ベクトルを設定する。

空間上に各頂点を配置する際、頂点の順番が反時計回りになっている側が表面となります。 テクスチャ座標系の方は必ずしも反時計回りになっている必要はありませんが、 それが時計回りである場合は表示される画像が結果的に裏返ります。

本クラスでは、1つのインスタンスで複数枚の3角形テクスチャを扱うことができます。 (その分、 fk_TriTexture よりも利用方法はやや複雑になっています。) 同様の機能を持つクラスとして、 fk_IFSTexture があります。 fk_IFSTexture クラスと比較した、 本クラスの長所と短所をまとめると以下のようになります。

総じて、3角形テクスチャの動的生成を想定する場合は fk_MeshTexture が有用です。 それ以外の用途では、 fk_IFSTexture の利用を検討する価値があると言えます。

参照:
fk_Texture, fk_RectTexture, fk_TriTexture, fk_IFSTexture

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

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

コンストラクタ

引数:
[in]imageテクスチャ画像。省略するか NULL を代入した場合は、 テクスチャ画像を初期状態では生成しません。
virtual fk_MeshTexture::~fk_MeshTexture ( ) [virtual]

デストラクタ


関数

void fk_MeshTexture::init ( void  )

初期化関数

現在設定されているテクスチャ画像を廃棄し、全ての設定を初期状態に戻します。

bool fk_MeshTexture::setTriNum ( int  num)

3角形面数設定関数

3角形テクスチャ面の枚数を設定します。 枚数を変更しても、前に設定した面データは可能な限り保持します。

引数:
[in]num枚数
戻り値:
設定に成功すれば true を、失敗すれば false を返します。
int fk_MeshTexture::getTriNum ( void  )

3角形面数参照関数

3角形テクスチャ面の枚数を取得します。

戻り値:
枚数
参照:
setTriNum()
bool fk_MeshTexture::setTextureCoord ( int  tID,
int  vID,
double  x,
double  y 
)

テクスチャ座標設定関数1

頂点のテクスチャ座標を設定します。 テクスチャ座標系については fk_TexCoord の説明を参照して下さい。 テクスチャ座標は、一度設定した後でも動的に変更することが可能です。

引数:
[in]tID3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。
[in]vID頂点IDを入力します。0, 1, 2 のいずれかになります。 それ以外の値を入力した場合はエラーとなり、false を返します。
[in]xテクスチャ座標の x 成分。0 以上 1 以下である必要があります。 それ以外の値を入力した場合はエラーとなり、false を返します。
[in]yテクスチャ座標の y 成分。0 以上 1 以下である必要があります。 それ以外の値を入力した場合はエラーとなり、false を返します。
戻り値:
設定に成功した場合 true を、失敗した場合 false を返します。
bool fk_MeshTexture::setTextureCoord ( int  tID,
int  vID,
fk_TexCoord  coord 
)

テクスチャ座標設定関数2

頂点のテクスチャ座標を設定します。 テクスチャ座標系については fk_TexCoord の説明を参照して下さい。 テクスチャ座標は、一度設定した後でも動的に変更することが可能です。

引数:
[in]tID3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。
[in]vID頂点IDを入力します。0, 1, 2 のいずれかになります。 それ以外の値を入力した場合はエラーとなり、false を返します。
[in]coordテクスチャ座標。各成文は 0 以上 1 以下である必要があります。 それ以外の値を入力した場合はエラーとなり、false を返します。
戻り値:
設定に成功した場合 true を、失敗した場合 false を返します。
bool fk_MeshTexture::setTriTextureCoord ( int  tID,
std::vector< fk_TexCoord > *  array 
)

テクスチャ座標配列設定関数1

各3角形テクスチャのテクスチャ座標を、配列によって設定します。 テクスチャ座標系については fk_TexCoord の説明を参照して下さい。 テクスチャ座標は、一度設定した後でも動的に変更することが可能です。

引数:
[in]tID3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。
[in]arrayテクスチャ座標を表す配列へのポインタです。 配列の先頭3個分のデータが利用されます。
戻り値:
設定に成功した場合 true を、失敗した場合 false を返します。
bool fk_MeshTexture::setTriTextureCoord ( int  tID,
fk_TexCoord array 
)

テクスチャ座標配列設定関数2

各3角形テクスチャのテクスチャ座標を、配列によって設定します。 テクスチャ座標系については fk_TexCoord の説明を参照して下さい。 テクスチャ座標は、一度設定した後でも動的に変更することが可能です。

引数:
[in]tID3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。
[in]arrayテクスチャ座標を表す配列へのポインタです。 配列の先頭3個分のデータが利用されます。
戻り値:
設定に成功した場合 true を、失敗した場合 false を返します。
fk_TexCoord fk_MeshTexture::getTextureCoord ( int  tID,
int  vID 
)

テクスチャ座標参照関数

設定されているテクスチャ座標を取得します。

引数:
[in]tID3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。
[in]vID頂点IDを入力します。0, 1, 2 のいずれかになります。
戻り値:
テクスチャ座標。取得に失敗した場合は常に (0, 0) を返します。
参照:
setTextureCoord(), setTriTextureCoord()
bool fk_MeshTexture::setVertexPos ( int  tID,
int  vID,
double  x,
double  y,
double  z 
)

頂点位置ベクトル設定関数1

頂点の空間中での位置ベクトルを設定します。 位置ベクトルは、一度設定した後でも動的に変更することが可能です。

引数:
[in]tID3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。
[in]vID頂点IDを入力します。0, 1, 2 のいずれかになります。 それ以外の値を入力した場合はエラーとなり、false を返します。
[in]x頂点位置ベクトルの x 成分
[in]y頂点位置ベクトルの y 成分
[in]z頂点位置ベクトルの z 成分
戻り値:
設定に成功した場合 true を、失敗した場合 false を返します。
bool fk_MeshTexture::setVertexPos ( int  tID,
int  vID,
fk_Vector  pos 
)

頂点位置ベクトル設定関数2

頂点の空間中での位置ベクトルを設定します。 位置ベクトルは、一度設定した後でも動的に変更することが可能です。

引数:
[in]tID3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。
[in]vID頂点IDを入力します。0, 1, 2 のいずれかになります。 それ以外の値を入力した場合はエラーとなり、false を返します。
[in]pos頂点位置ベクトル
戻り値:
設定に成功した場合 true を、失敗した場合 false を返します。
bool fk_MeshTexture::setTriPos ( int  tID,
std::vector< fk_Vector > *  array 
)

頂点位置ベクトル配列設定関数1

各3角形テクスチャの頂点位置ベクトルを、配列によって設定します。 位置ベクトルは、一度設定した後でも動的に変更することが可能です。

引数:
[in]tID3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。
[in]array頂点の位置ベクトルを表す配列へのポインタです。 配列の先頭3個分のデータが利用されます。
戻り値:
設定に成功した場合 true を、失敗した場合 false を返します。
bool fk_MeshTexture::setTriPos ( int  tID,
fk_Vector array 
)

頂点位置ベクトル配列設定関数2

各3角形テクスチャの頂点位置ベクトルを、配列によって設定します。 位置ベクトルは、一度設定した後でも動的に変更することが可能です。

引数:
[in]tID3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。
[in]array頂点の位置ベクトルを表す配列へのポインタです。 配列の先頭3個分のデータが利用されます。
戻り値:
設定に成功した場合 true を、失敗した場合 false を返します。
fk_Vector fk_MeshTexture::getVertexPos ( int  tID,
int  vID 
)

頂点位置ベクトル参照関数

設定されている頂点位置ベクトルを取得します。

引数:
[in]tID3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。
[in]vID頂点IDを入力します。0, 1, 2 のいずれかになります。
戻り値:
頂点位置ベクトル。取得に失敗した場合は常に (0, 0, 0) を返します。
参照:
setTexturePos(), setTriTexturePos()
void fk_MeshTexture::putIndexFaceSet ( fk_IndexFaceSet ifs)

fk_IndexFaceSet インスタンスコピー関数

現在の形状データを、 fk_IndexFaceSet 型のインスタンスにコピーします。

引数:
[in]ifsfk_IndexFaceSet 型インスタンスのアドレス。
bool fk_MeshTexture::readMQOFile ( std::string  fileName,
std::string  objName,
bool  contFlg = true 
)

MQOファイル入力関数

MQO 形式のファイルからデータを入力します。 本関数が入力を行うのは形状データとテクスチャ座標であり、 画像データの入力は行いません。 画像データ入力は fk_Texture のメンバ関数等を用いて別途行ってください。

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

引数:
[in]fileNameファイル名
[in]objNameオブジェクト名
[in]contFlgテクスチャ断絶の設定を指定します。これは、テクスチャ座標が不連続な箇所に対し、 形状の位相を断絶する操作を行うためのものです。 これを true にした場合は断裂操作が行われ、 テクスチャ座標が不連続な箇所が幾何的にも不連続となるように表示されます。 ほとんどの場合は、断裂操作を行った方が良好な描画結果となります。 ただし、断裂操作を行う際に新たな位相要素を生成するため、 本来のデータよりも頂点、稜線、面が若干増加する場合があります。 false にした場合は、断裂操作を行わずに通常のデータ通り読み込みます。
戻り値:
ファイルの入力に成功した場合 true を、失敗した場合 false を返します。
参照:
fk_IFSTexture::readMQOFile()
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義