FineKernelToolKit  3.1.0
公開メンバ関数 | プロパティ | 全メンバ一覧
FK_CLI::fk_MeshTexture クラス

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

+ FK_CLI::fk_MeshTexture の継承関係図
+ FK_CLI::fk_MeshTexture 連携図

公開メンバ関数

 fk_MeshTexture ()
 コンストラクタ1 [詳解]
 
 fk_MeshTexture (fk_Image^ image)
 コンストラクタ2 [詳解]
 
 ~fk_MeshTexture ()
 デストラクタ [詳解]
 
 !fk_MeshTexture ()
 ファイナライザ [詳解]
 
void Init (void)
 初期化メソッド [詳解]
 
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, IEnumerable< fk_TexCoord^ >^array)
 テクスチャ座標配列設定メソッド [詳解]
 
fk_TexCoordGetTextureCoord (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, IEnumerable< fk_Vector^ >^array)
 頂点位置ベクトル配列設定メソッド [詳解]
 
fk_VectorGetVertexPos (int tID, int vID)
 頂点位置ベクトル参照メソッド [詳解]
 
void PutIndexFaceSet (fk_IndexFaceSet^ ifs)
 fk_IndexFaceSet インスタンスコピーメソッド [詳解]
 
bool ReadMQOFile (String^ fileName, String^ objName, bool contFlg)
 MQOファイル入力メソッド1. [詳解]
 
bool ReadMQOFile (String^ fileName, String^ objName)
 MQOファイル入力メソッド2. [詳解]
 
- 基底クラス FK_CLI::fk_Texture に属する継承公開メンバ関数
bool ReadBMP (String^ fileName)
 BMP ファイル入力メソッド [詳解]
 
bool ReadPNG (String^ fileName)
 PNG ファイル入力メソッド [詳解]
 
bool ReadJPG (String^ fileName)
 JPEG ファイル入力メソッド [詳解]
 
void FillColor (fk_Color^ color)
 一様色初期化メソッド1 [詳解]
 
- 基底クラス FK_CLI::fk_Shape に属する継承公開メンバ関数
void ClearMaterial (void)
 パレット初期化メソッド [詳解]
 
void PushPalette (fk_Material^ mat)
 マテリアル追加メソッド [詳解]
 
void SetPalette (fk_Material^ mat, int ID)
 マテリアル設定メソッド [詳解]
 
fk_MaterialGetMaterial (int ID)
 マテリアル取得メソッド [詳解]
 
- 基底クラス FK_CLI::fk_Attribute に属する継承公開メンバ関数
bool SetAttrII (int key, int value)
 キーが int 型、値が int 型である属性設定メソッド [詳解]
 
bool SetAttrID (int key, double value)
 キーが int 型、値が double 型である属性設定メソッド [詳解]
 
bool SetAttrIS (int key, String^ value)
 キーが int 型、値が String 型である属性設定メソッド [詳解]
 
bool SetAttrSI (String^ key, int value)
 キーが String 型、値が int 型である属性設定メソッド [詳解]
 
bool SetAttrSD (String^ key, double value)
 キーが String 型、値が double 型である属性設定メソッド [詳解]
 
bool SetAttrSS (String^ key, String^ value)
 キーが String 型、値が String 型である属性設定メソッド [詳解]
 
int GetAttrII (int key)
 キーが int 型、値が int 型である属性参照メソッド [詳解]
 
double GetAttrID (int key)
 キーが int 型、値が double 型である属性参照メソッド [詳解]
 
String^ GetAttrIS (int key)
 キーが int 型、値が String 型である属性参照メソッド [詳解]
 
int GetAttrSI (String^ key)
 キーが String 型、値が int 型である属性参照メソッド [詳解]
 
double GetAttrSD (String^ key)
 キーが String 型、値が double 型である属性参照メソッド [詳解]
 
String^ GetAttrSS (String^ key)
 キーが String 型、値が String 型である属性参照メソッド [詳解]
 
bool ExistAttrII (int key)
 キーが int 型、値が int 型である属性存在参照メソッド [詳解]
 
bool ExistAttrID (int key)
 キーが int 型、値が double 型である属性存在参照メソッド [詳解]
 
bool ExistAttrIS (int key)
 キーが int 型、値が String 型である属性存在参照メソッド [詳解]
 
bool ExistAttrSI (String^ key)
 キーが String 型、値が int 型である属性存在参照メソッド [詳解]
 
bool ExistAttrSD (String^ key)
 キーが String 型、値が double 型である属性存在参照メソッド [詳解]
 
bool ExistAttrSS (String^ key)
 キーが String 型、値が String 型である属性存在参照メソッド [詳解]
 
bool DeleteAttrII (int key)
 キーが int 型、値が int 型である属性消去メソッド [詳解]
 
bool DeleteAttrID (int key)
 キーが int 型、値が double 型である属性消去メソッド [詳解]
 
bool DeleteAttrIS (int key)
 キーが int 型、値が String 型である属性消去メソッド [詳解]
 
bool DeleteAttrSI (String^ key)
 キーが String 型、値が int 型である属性消去メソッド [詳解]
 
bool DeleteAttrSD (String^ key)
 キーが String 型、値が double 型である属性消去メソッド [詳解]
 
bool DeleteAttrSS (String^ key)
 キーが String 型、値が String 型である属性消去メソッド [詳解]
 

プロパティ

int TriNum [get, set]
 3角形面数プロパティ [詳解]
 
- 基底クラス FK_CLI::fk_Texture に属する継承プロパティ
fk_Image^  Image [get, set]
 画像データプロパティ [詳解]
 
fk_Dimension^  ImageSize [get]
 画像サイズプロパティ [詳解]
 
fk_Dimension^  BufferSize [get]
 画像バッファサイズプロパティ [詳解]
 
fk_TexMode TextureMode [get, set]
 テクスチャモードプロパティ [詳解]
 
fk_TexRendMode RendMode [get, set]
 テクスチャ描画品質プロパティ [詳解]
 
fk_TexWrapMode WrapMode [get, set]
 テクスチャ外周部設定プロパティ [詳解]
 
- 基底クラス FK_CLI::fk_Shape に属する継承プロパティ
fk_RealShapeType^  RealShapeType [get]
 形状データ構造プロパティ [詳解]
 
fk_Palette^  Palette [get]
 パレットプロパティ [詳解]
 
fk_MaterialMode MaterialMode [get, set]
 マテリアルモード設定メソッド [詳解]
 
int MaterialID [get, set]
 オブジェクトマテリアル ID プロパティ [詳解]
 
int PaletteSize [get]
 パレット中のマテリアル格納数プロパティ [詳解]
 
cli::array< fk_Material^ >^ MaterialVector [get]
 マテリアル配列取得メソッド [詳解]
 

詳解

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

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

コンストラクタ1

テクスチャ画像自体は初期状態では生成しません。

FK_CLI::fk_MeshTexture::fk_MeshTexture ( fk_Image image)

コンストラクタ2

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

デストラクタ

FK_CLI::fk_MeshTexture::!fk_MeshTexture ( )

ファイナライザ

関数詳解

void FK_CLI::fk_MeshTexture::Init ( void  )

初期化メソッド

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

bool FK_CLI::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_CLI::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_CLI::fk_MeshTexture::SetTriTextureCoord ( int  tID,
IEnumerable< fk_TexCoord^ >^  array 
)

テクスチャ座標配列設定メソッド

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

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

頂点位置ベクトル配列設定メソッド

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

引数
[in]tID3角形面の ID を入力します。 ID は 0 から始まる整数値で、最大が枚数から1を引いたものとなります。
[in]array頂点の位置ベクトルを表す配列を入力します。 配列の先頭3個分のデータが利用されます。
戻り値
設定に成功した場合 true を、失敗した場合 false を返します。
fk_Vector ^ FK_CLI::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_CLI::fk_MeshTexture::PutIndexFaceSet ( fk_IndexFaceSet ifs)

fk_IndexFaceSet インスタンスコピーメソッド

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

引数
[in]ifsfk_IndexFaceSet 型インスタンスのアドレス。
bool FK_CLI::fk_MeshTexture::ReadMQOFile ( String^  fileName,
String^  objName,
bool  contFlg 
)

MQOファイル入力メソッド1.

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

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

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

MQOファイル入力メソッド2.

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

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

なお、本メソッドは ReadMQOFile(String^, String^, bool) において、 第3引数に true を入力した場合と同義となります。

引数
[in]fileNameファイル名
[in]objNameオブジェクト名
戻り値
ファイルの入力に成功した場合 true を、失敗した場合 false を返します。
参照
fk_IFSTexture::ReadMQOFile()

プロパティ詳解

int FK_CLI::fk_MeshTexture::TriNum
getset

3角形面数プロパティ

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