FineKernelToolKit 4.3.0
読み取り中…
検索中…
一致する文字列を見つけられません
FK_CLI::fk_IFSTexture クラス

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

#include <CLI/FK_CLI/include/IFSTexture_CLI.h>

FK_CLI::fk_IFSTexture の継承関係図
FK_CLI::fk_IFSTexture 連携図

公開メンバ関数

 fk_IFSTexture ()
 コンストラクタ1
 fk_IFSTexture (fk_Image^ image)
 コンストラクタ2
 ~fk_IFSTexture ()
 デストラクタ
 !fk_IFSTexture ()
 ファイナライザ
void Init (void)
 初期化メソッド
fk_TexCoordGetTextureCoord (int tID, int vID)
 テクスチャ座標参照メソッド
void CloneShape (fk_IFSTexture^ ifsTex)
 形状コピーメソッド
void SetTextureCoord (int tID, int vID, fk_TexCoord^ coord)
 テクスチャ座標設定メソッド
bool ReadMQOFile (String^ fileName, String^ objName, int materialID, bool contFlg)
 MQOファイル入力メソッド1
bool ReadMQOFile (String^ fileName, String^ objName, int materialID)
 MQOファイル入力メソッド2
bool ReadMQOFile (String^ fileName, String^ objName)
 MQOファイル入力メソッド3
bool ReadD3DXFile (String^ fileName, String^ objName, int materialID)
 DirectX (D3DX) ファイル入力メソッド1
bool ReadD3DXFile (String^ fileName, String^ objName)
 DirectX (D3DX) ファイル入力メソッド1
bool MoveVPosition (int vID, const fk_Vector^ pos, int order)
 頂点移動メソッド1
bool MoveVPosition (int vID, const fk_Vector^ pos)
 頂点移動メソッド2
bool MoveVPosition (int vID, double x, double y, double z, int order)
 頂点移動メソッド3
bool MoveVPosition (int vID, double x, double y, double z)
 頂点移動メソッド4
基底クラス 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
void InitFrameBuffer (void)
 フレームバッファー情報初期化メソッド
基底クラス FK_CLI::fk_Shape に属する継承公開メンバ関数
void SetShaderAttribute (String^ name, int dim, IEnumerable< int >^ array)
 シェーダー内 attribute 変数設定メソッド1
void SetShaderAttribute (String^ name, int dim, IEnumerable< float >^ array)
 シェーダー内 attribute 変数設定メソッド2
void SetShaderAttribute (String^ name, int dim, IEnumerable< double >^ array)
 シェーダー内 attribute 変数設定メソッド3
void SetShaderAttribute (String^ name, int dim, IEnumerable< fk_Vector^>^ array)
 シェーダー内 attribute 変数設定メソッド4
void SetShaderAttribute (String^ name, int dim, IEnumerable< fk_TexCoord^>^ array)
 シェーダー内 attribute 変数設定メソッド5
void SetShaderAttribute (String^ name, int dim, IEnumerable< fk_HVector^>^ array)
 シェーダー内 attribute 変数設定メソッド6
基底クラス 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 型である属性消去メソッド

プロパティ

fk_IndexFaceSetIFS [get]
 形状データプロパティ
double AnimationTime [set]
 アニメーション時間プロパティ
fk_BVHMotionBVHMotion [set]
 BVH データプロパティ
bool ConnectMode [get, set]
 法線連続性プロパティ
基底クラス FK_CLI::fk_Texture に属する継承プロパティ
fk_ImageImage [get, set]
 画像データプロパティ
fk_DimensionImageSize [get]
 画像サイズプロパティ
fk_DimensionBufferSize [get]
 画像バッファサイズプロパティ
fk_TexMode TextureMode [get, set]
 テクスチャモードプロパティ
fk_TexRendMode RendMode [get, set]
 テクスチャ描画品質プロパティ
fk_TexWrapMode WrapMode [get, set]
 テクスチャ外周部設定プロパティ
fk_FrameBufferFrameBuffer [get, set]
 フレームバッファープロパティ
基底クラス FK_CLI::fk_Shape に属する継承プロパティ
fk_RealShapeTypeRealShapeType [get]
 形状データ構造プロパティ

詳解

IFSテクスチャを生成、管理するクラス

このクラスは、「IFSテクスチャ」を制御する機能を提供します。 IFSテクスチャとは、多数の三角形テクスチャをひとまとめにした形状のことで、 実質的には fk_IndexFaceSet クラスに対してテクスチャを付加したものです。 このクラスの主な用途は、 他のモデラー等で作成した形状データファイルを読み込んで表示するというものです。 また、 fk_IndexFaceSet クラスと同様に形状のアニメーションを入力することも可能です。

なお、このクラスでテクスチャ付きの形状データを読み込む場合、 テクスチャデータは 1 個のファイルで構成されていなければならないという制限があります。

実際に利用する際には、まずテクスチャ画像データを設定する必要があります。 画像データの入力や生成については、 fk_Texture のマニュアルを参照して下さい。 形状データの入力と画像データの設定は、どちらが先であっても問題ありません。

本クラスと同様の機能を持つクラスとして、 fk_MeshTexture があります。 fk_MeshTexture クラスと比較した、 本クラスの長所と短所をまとめると以下のようになります。

  • 長所
    • 描画速度が速い。
    • D3DXファイルの入力に対応している。
  • 短所
    • 3角形テクスチャの動的生成ができない。

ほとんどの用途においては fk_IFSTexture の方が有利と言えますが、 3角形テクスチャの動的生成を行いたい場合は fk_MeshTexture の利用を検討する価値があると言えます。

参照
fk_IndexFaceSet, fk_Texture, fk_MeshTexture

構築子と解体子

◆ fk_IFSTexture() [1/2]

FK_CLI::fk_IFSTexture::fk_IFSTexture ( )

コンストラクタ1

テクスチャデータを空の状態としてインスタンスを生成します。

◆ fk_IFSTexture() [2/2]

FK_CLI::fk_IFSTexture::fk_IFSTexture ( fk_Image^ image)

コンストラクタ2

引数画像をテクスチャ画像とするインスタンスを生成します。

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

◆ ~fk_IFSTexture()

FK_CLI::fk_IFSTexture::~fk_IFSTexture ( )

デストラクタ

◆ !fk_IFSTexture()

FK_CLI::fk_IFSTexture::!fk_IFSTexture ( )

ファイナライザ

関数詳解

◆ Init()

void FK_CLI::fk_IFSTexture::Init ( void )

初期化メソッド

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

◆ GetTextureCoord()

fk_TexCoord ^ FK_CLI::fk_IFSTexture::GetTextureCoord ( int tID,
int vID )

テクスチャ座標参照メソッド

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

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

◆ CloneShape()

void FK_CLI::fk_IFSTexture::CloneShape ( fk_IFSTexture^ ifsTex)

形状コピーメソッド

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

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

◆ SetTextureCoord()

void FK_CLI::fk_IFSTexture::SetTextureCoord ( int tID,
int vID,
fk_TexCoord^ coord )

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

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

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

◆ ReadMQOFile() [1/3]

bool FK_CLI::fk_IFSTexture::ReadMQOFile ( String^ fileName,
String^ objName,
int materialID,
bool contFlg )

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

MQO形式のファイルからデータを入力します。 本メソッドで入力できるのは形状とテクスチャ座標データです。 テクスチャ画像データは fk_Texture のメソッドによって、 別途入力する必要があります。

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

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

◆ ReadMQOFile() [2/3]

bool FK_CLI::fk_IFSTexture::ReadMQOFile ( String^ fileName,
String^ objName,
int materialID )

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

MQO形式のファイルからデータを入力します。 本メソッドで入力できるのは形状とテクスチャ座標データです。 テクスチャ画像データは fk_Texture のメソッドによって、 別途入力する必要があります。

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

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

引数
[in]fileNameファイル名
[in]objNameオブジェクト名
[in]materialIDMQOデータではマテリアルを複数設定することができ、 各ポリゴンに対してどのマテリアルを割り振るかのIDが設定されています。 この引数にマテリアルIDを指定すると、そのIDを持つポリゴンのみを読み込みます。 materialID に -1 を入力した場合は、すべてのポリゴンを読み込みます。
戻り値
ファイルの入力に成功した場合 true を、失敗した場合 false を返します。
参照
fk_IFSTexture::readMQOFile()

◆ ReadMQOFile() [3/3]

bool FK_CLI::fk_IFSTexture::ReadMQOFile ( String^ fileName,
String^ objName )

MQOファイル入力メソッド3

MQO形式のファイルからデータを入力します。 本メソッドで入力できるのは形状とテクスチャ座標データです。 テクスチャ画像データは fk_Texture のメソッドによって、 別途入力する必要があります。

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

なお、本メソッドは ReadMQOFile(String^, String^, int, bool) において、 3番目の引数に -1 を、最後の引数を true にした場合と同義になります。

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

◆ ReadD3DXFile() [1/2]

bool FK_CLI::fk_IFSTexture::ReadD3DXFile ( String^ fileName,
String^ objName,
int materialID )

DirectX (D3DX) ファイル入力メソッド1

DirectX 形式 (X 形式と呼ばれることもあります) のフォーマット (以下、「D3DX形式」) であるファイルからデータを入力します。 本メソッドで入力できるのは形状、テクスチャ座標データ、 そしてアニメーションデータです。 テクスチャ画像データは fk_Texture のメソッドによって、 別途入力する必要があります。

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

引数
[in]fileNameファイル名
[in]objNameオブジェクト名。 D3DX 形式では、オブジェクト名を省略することが許容されています。 そのような場合は、この引数に空文字列 ( "" ) を入れてください。 この場合、ファイル中で最初に存在するオブジェクトのデータを入力します。
[in]materialIDD3DXデータではマテリアルを複数設定することができ、 各ポリゴンに対してどのマテリアルを割り振るかのIDが設定されています。 この引数にマテリアルIDを指定すると、そのIDを持つポリゴンのみを読み込みます。 materialID に -1 を入力した場合は、すべてのポリゴンを読み込みます。
戻り値
ファイルの入力に成功した場合 true を、失敗した場合 false を返します。

◆ ReadD3DXFile() [2/2]

bool FK_CLI::fk_IFSTexture::ReadD3DXFile ( String^ fileName,
String^ objName )

DirectX (D3DX) ファイル入力メソッド1

DirectX 形式 (X 形式と呼ばれることもあります) のフォーマット (以下、「D3DX形式」) であるファイルからデータを入力します。 本メソッドで入力できるのは形状、テクスチャ座標データ、 そしてアニメーションデータです。 テクスチャ画像データは fk_Texture のメソッドによって、 別途入力する必要があります。

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

なお、本メソッドは ReadD3DXFile(String^, String^, int) において、 最後の引数を -1 にした場合と同義になります。

引数
[in]fileNameファイル名
[in]objNameオブジェクト名。 D3DX 形式では、オブジェクト名を省略することが許容されています。 そのような場合は、この引数に空文字列 ( "" ) を入れてください。 この場合、ファイル中で最初に存在するオブジェクトのデータを入力します。
戻り値
ファイルの入力に成功した場合 true を、失敗した場合 false を返します。

◆ MoveVPosition() [1/4]

bool FK_CLI::fk_IFSTexture::MoveVPosition ( int vID,
const fk_Vector^ pos,
int order )

頂点移動メソッド1

形状の頂点を移動します。 order は通常は 0 を入力してください。

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

◆ MoveVPosition() [2/4]

bool FK_CLI::fk_IFSTexture::MoveVPosition ( int vID,
const fk_Vector^ pos )

頂点移動メソッド2

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

引数
[in]vID頂点ID
[in]pos移動位置ベクトル
戻り値
頂点移動が成功したら true を、失敗したら false を返します。

◆ MoveVPosition() [3/4]

bool FK_CLI::fk_IFSTexture::MoveVPosition ( int vID,
double x,
double y,
double z,
int order )

頂点移動メソッド3

形状の頂点を移動します。 order は通常は 0 を入力してください。

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

◆ MoveVPosition() [4/4]

bool FK_CLI::fk_IFSTexture::MoveVPosition ( int vID,
double x,
double y,
double z )

頂点移動メソッド4

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

引数
[in]vID頂点ID
[in]x移動位置ベクトルの x 成分
[in]y移動位置ベクトルの y 成分
[in]z移動位置ベクトルの z 成分
戻り値
頂点移動が成功したら true を、失敗したら false を返します。

プロパティ詳解

◆ IFS

fk_IndexFaceSet^ FK_CLI::fk_IFSTexture::IFS
get

形状データプロパティ

fk_IFSTexture では、形状データとして fk_IndexFaceSet クラスのインスタンスを保持しています。 このプロパティは、そのインスタンスを参照します。 ここで得たインスタンスに対して形状を操作することで、 fk_IFSTexture による形状の操作が可能となります。

◆ AnimationTime

double FK_CLI::fk_IFSTexture::AnimationTime
set

アニメーション時間プロパティ

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

◆ BVHMotion

fk_BVHMotion^ FK_CLI::fk_IFSTexture::BVHMotion
set

BVH データプロパティ

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

◆ ConnectMode

bool FK_CLI::fk_IFSTexture::ConnectMode
getset

法線連続性プロパティ

入力する形状に対して法線連続性の参照・設定を行います。 true の場合有効、false の場合無効となります。

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

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