FineKernelToolKit  2.9.0
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義 ページ
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ファイル入力関数 [詳細]
 
- Public メソッド inherited from 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 fillColor (const fk_Color &color)
 一様色初期化関数1 [詳細]
 
void fillColor (int r, int g, int b, int a=0)
 一様色初期化関数2 [詳細]
 
const fk_ImType * getImageBuf (void)
 画像データ配列先頭アドレス取得関数 [詳細]
 
- Public メソッド inherited from fk_Shape
 fk_Shape (fk_ObjectType=FK_SHAPE)
 コンストラクタ [詳細]
 
virtual ~fk_Shape ()
 デストラクタ [詳細]
 
fk_PalettegetPaletteData (void)
 パレット取得関数 [詳細]
 
void clearMaterial (void)
 パレット初期化関数 [詳細]
 
void setObjMaterialID (int ID)
 オブジェクトマテリアル ID 設定関数 [詳細]
 
void pushPalette (fk_Material &mat)
 マテリアル追加関数 [詳細]
 
void setPalette (fk_Material &mat, int ID)
 マテリアル設定関数 [詳細]
 
void setMaterialMode (fk_MaterialMode mode)
 マテリアルモード設定関数 [詳細]
 
fk_MaterialMode getMaterialMode (void)
 マテリアルモード取得関数 [詳細]
 
int getObjMaterialID (void)
 オブジェクトマテリアル ID 取得関数 [詳細]
 
int getPaletteSize (void)
 パレット中のマテリアル格納数取得関数 [詳細]
 
fk_MaterialgetMaterial (int id)
 マテリアル取得関数 [詳細]
 
std::vector< fk_Material > * getMaterialVector (void)
 マテリアル配列取得関数 [詳細]
 
- Public メソッド inherited from 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 型、値が string 型である属性設定関数 [詳細]
 
bool setAttrSI (const std::string key, const int value)
 キーが string 型、値が int 型である属性設定関数 [詳細]
 
bool setAttrSD (const std::string key, const double value)
 キーが string 型、値が double 型である属性設定関数 [詳細]
 
bool setAttrSS (const std::string key, const std::string value)
 キーが string 型、値が 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 型、値が string 型である属性参照関数 [詳細]
 
int getAttrSI (const std::string key) const
 キーが string 型、値が int 型である属性参照関数 [詳細]
 
double getAttrSD (const std::string key) const
 キーが string 型、値が double 型である属性参照関数 [詳細]
 
std::string getAttrSS (const std::string key) const
 キーが string 型、値が string 型である属性参照関数 [詳細]
 
bool existAttrII (const int key) const
 キーが int 型、値が int 型である属性存在参照関数 [詳細]
 
bool existAttrID (const int key) const
 キーが int 型、値が double 型である属性存在参照関数 [詳細]
 
bool existAttrIS (const int key) const
 キーが int 型、値が string 型である属性存在参照関数 [詳細]
 
bool existAttrSI (const std::string key) const
 キーが string 型、値が int 型である属性存在参照関数 [詳細]
 
bool existAttrSD (const std::string key) const
 キーが string 型、値が double 型である属性存在参照関数 [詳細]
 
bool existAttrSS (const std::string key) const
 キーが string 型、値が string 型である属性存在参照関数 [詳細]
 
bool deleteAttrII (const int key)
 キーが int 型、値が int 型である属性消去関数 [詳細]
 
bool deleteAttrID (const int key)
 キーが int 型、値が double 型である属性消去関数 [詳細]
 
bool deleteAttrIS (const int key)
 キーが int 型、値が string 型である属性消去関数 [詳細]
 
bool deleteAttrSI (const std::string key)
 キーが string 型、値が int 型である属性消去関数 [詳細]
 
bool deleteAttrSD (const std::string key)
 キーが string 型、値が double 型である属性消去関数 [詳細]
 
bool deleteAttrSS (const std::string key)
 キーが string 型、値が string 型である属性消去関数 [詳細]
 
- Public メソッド inherited from fk_BaseObject
 fk_BaseObject (fk_ObjectType type=FK_BASEOBJECT)
 コンストラクタ [詳細]
 
fk_ObjectType getObjectType (void) const
 タイプ取得関数 [詳細]
 

説明

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

このクラスは、複数の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()