FineKernelToolKit
2.8.10
|
メッシュテクスチャを生成、管理するクラス [詳細]
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つのインスタンスで複数枚の3角形テクスチャを扱うことができます。 (その分、 fk_TriTexture よりも利用方法はやや複雑になっています。) 同様の機能を持つクラスとして、 fk_IFSTexture があります。 fk_IFSTexture クラスと比較した、 本クラスの長所と短所をまとめると以下のようになります。
総じて、3角形テクスチャの動的生成を想定する場合は fk_MeshTexture が有用です。 それ以外の用途では、 fk_IFSTexture の利用を検討する価値があると言えます。
コンストラクタ
[in] | image | テクスチャ画像。省略するか NULL を代入した場合は、 テクスチャ画像を初期状態では生成しません。 |
virtual fk_MeshTexture::~fk_MeshTexture | ( | ) | [virtual] |
デストラクタ
void fk_MeshTexture::init | ( | void | ) |
初期化関数
現在設定されているテクスチャ画像を廃棄し、全ての設定を初期状態に戻します。
bool fk_MeshTexture::setTriNum | ( | int | num | ) |
3角形面数設定関数
3角形テクスチャ面の枚数を設定します。 枚数を変更しても、前に設定した面データは可能な限り保持します。
[in] | num | 枚数 |
int fk_MeshTexture::getTriNum | ( | void | ) |
bool fk_MeshTexture::setTextureCoord | ( | int | tID, |
int | vID, | ||
double | x, | ||
double | y | ||
) |
テクスチャ座標設定関数1
頂点のテクスチャ座標を設定します。 テクスチャ座標系については fk_TexCoord の説明を参照して下さい。 テクスチャ座標は、一度設定した後でも動的に変更することが可能です。
[in] | tID | 3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。 |
[in] | vID | 頂点IDを入力します。0, 1, 2 のいずれかになります。 それ以外の値を入力した場合はエラーとなり、false を返します。 |
[in] | x | テクスチャ座標の x 成分。0 以上 1 以下である必要があります。 それ以外の値を入力した場合はエラーとなり、false を返します。 |
[in] | y | テクスチャ座標の y 成分。0 以上 1 以下である必要があります。 それ以外の値を入力した場合はエラーとなり、false を返します。 |
bool fk_MeshTexture::setTextureCoord | ( | int | tID, |
int | vID, | ||
fk_TexCoord | coord | ||
) |
テクスチャ座標設定関数2
頂点のテクスチャ座標を設定します。 テクスチャ座標系については fk_TexCoord の説明を参照して下さい。 テクスチャ座標は、一度設定した後でも動的に変更することが可能です。
[in] | tID | 3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。 |
[in] | vID | 頂点IDを入力します。0, 1, 2 のいずれかになります。 それ以外の値を入力した場合はエラーとなり、false を返します。 |
[in] | coord | テクスチャ座標。各成文は 0 以上 1 以下である必要があります。 それ以外の値を入力した場合はエラーとなり、false を返します。 |
bool fk_MeshTexture::setTriTextureCoord | ( | int | tID, |
std::vector< fk_TexCoord > * | array | ||
) |
テクスチャ座標配列設定関数1
各3角形テクスチャのテクスチャ座標を、配列によって設定します。 テクスチャ座標系については fk_TexCoord の説明を参照して下さい。 テクスチャ座標は、一度設定した後でも動的に変更することが可能です。
[in] | tID | 3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。 |
[in] | array | テクスチャ座標を表す配列へのポインタです。 配列の先頭3個分のデータが利用されます。 |
bool fk_MeshTexture::setTriTextureCoord | ( | int | tID, |
fk_TexCoord * | array | ||
) |
テクスチャ座標配列設定関数2
各3角形テクスチャのテクスチャ座標を、配列によって設定します。 テクスチャ座標系については fk_TexCoord の説明を参照して下さい。 テクスチャ座標は、一度設定した後でも動的に変更することが可能です。
[in] | tID | 3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。 |
[in] | array | テクスチャ座標を表す配列へのポインタです。 配列の先頭3個分のデータが利用されます。 |
fk_TexCoord fk_MeshTexture::getTextureCoord | ( | int | tID, |
int | vID | ||
) |
テクスチャ座標参照関数
設定されているテクスチャ座標を取得します。
[in] | tID | 3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。 |
[in] | vID | 頂点IDを入力します。0, 1, 2 のいずれかになります。 |
bool fk_MeshTexture::setVertexPos | ( | int | tID, |
int | vID, | ||
double | x, | ||
double | y, | ||
double | z | ||
) |
頂点位置ベクトル設定関数1
頂点の空間中での位置ベクトルを設定します。 位置ベクトルは、一度設定した後でも動的に変更することが可能です。
[in] | tID | 3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。 |
[in] | vID | 頂点IDを入力します。0, 1, 2 のいずれかになります。 それ以外の値を入力した場合はエラーとなり、false を返します。 |
[in] | x | 頂点位置ベクトルの x 成分 |
[in] | y | 頂点位置ベクトルの y 成分 |
[in] | z | 頂点位置ベクトルの z 成分 |
bool fk_MeshTexture::setVertexPos | ( | int | tID, |
int | vID, | ||
fk_Vector | pos | ||
) |
頂点位置ベクトル設定関数2
頂点の空間中での位置ベクトルを設定します。 位置ベクトルは、一度設定した後でも動的に変更することが可能です。
[in] | tID | 3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。 |
[in] | vID | 頂点IDを入力します。0, 1, 2 のいずれかになります。 それ以外の値を入力した場合はエラーとなり、false を返します。 |
[in] | pos | 頂点位置ベクトル |
bool fk_MeshTexture::setTriPos | ( | int | tID, |
std::vector< fk_Vector > * | array | ||
) |
頂点位置ベクトル配列設定関数1
各3角形テクスチャの頂点位置ベクトルを、配列によって設定します。 位置ベクトルは、一度設定した後でも動的に変更することが可能です。
[in] | tID | 3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。 |
[in] | array | 頂点の位置ベクトルを表す配列へのポインタです。 配列の先頭3個分のデータが利用されます。 |
bool fk_MeshTexture::setTriPos | ( | int | tID, |
fk_Vector * | array | ||
) |
頂点位置ベクトル配列設定関数2
各3角形テクスチャの頂点位置ベクトルを、配列によって設定します。 位置ベクトルは、一度設定した後でも動的に変更することが可能です。
[in] | tID | 3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。 |
[in] | array | 頂点の位置ベクトルを表す配列へのポインタです。 配列の先頭3個分のデータが利用されます。 |
fk_Vector fk_MeshTexture::getVertexPos | ( | int | tID, |
int | vID | ||
) |
頂点位置ベクトル参照関数
設定されている頂点位置ベクトルを取得します。
[in] | tID | 3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。 |
[in] | vID | 頂点IDを入力します。0, 1, 2 のいずれかになります。 |
void fk_MeshTexture::putIndexFaceSet | ( | fk_IndexFaceSet * | ifs | ) |
fk_IndexFaceSet インスタンスコピー関数
現在の形状データを、 fk_IndexFaceSet 型のインスタンスにコピーします。
[in] | ifs | fk_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 にした場合は、断裂操作を行わずに通常のデータ通り読み込みます。 |