MQMaterialクラス

 MQMaterialクラスは、材質に関する情報を管理するクラスです。

基本操作
DeleteThis マテリアルクラスを消滅させます
GetUniqueID 材質のユニークIDを取得します
各種属性
GetName 名前を取得します
GetSelected 選択状態を取得します
GetShader シェーダの種類を取得します
GetVertexColor 頂点カラーの種類を取得します
GetDoubleSided 両面表示かどうかを取得します
GetColor 基本色を取得します
GetAlpha 不透明度を取得します
GetDiffuse 拡散光を取得します
GetAmbient 環境光を取得します
GetEmission 自己照明を取得します
GetSpecular 反射光を取得します
GetPower 反射の強さを取得します
GetTextureName 模様マッピングのファイル名を取得します
GetAlphaName 透明マッピングのファイル名を取得します
GetBumpName 凸凹マッピングのファイル名を取得します
GetMappingType マッピングの投影方式を取得します
GetMappingPosition マッピングの投影位置を取得します
GetMappingScaling マッピングの投影拡大率を取得します
GetMappingAngle マッピングの投影回転角を取得します
SetName 名前を設定します
SetSelected 選択状態を設定します
SetShader シェーダの種類を設定します
SetVertexColor 頂点カラーの種類を設定します
SetDoubleSided 両面表示かどうかを設定します
SetColor 基本色を設定します
SetAlpha 不透明度を設定します
SetDiffuse 拡散光を設定します
SetAmbient 環境光を設定します
SetEmission 自己照明を設定します
SetSpecular 反射光を設定します
SetPower 反射の強さを設定します
SetTextureName 模様マッピングのファイル名を設定します
SetAlphaName 透明マッピングのファイル名を設定します
SetBumpName 凸凹マッピングのファイル名を設定します
SetMappingType マッピングの投影方式を設定します
SetMappingPosition マッピングの投影位置を設定します
SetMappingScaling マッピングの投影拡大率を設定します
SetMappingAngle マッピングの投影回転角を設定します
ユーザーデータ
AllocUserData 材質ユーザーデータの確保
FreeUserData 材質ユーザーデータの解放
GetUserData 材質ユーザーデータの取得
GetUserDataPart 材質ユーザーデータの部分取得
SetUserData 材質ユーザーデータの設定
SetUserDataPart 材質ユーザーデータの部分設定

void MQMaterial::DeleteThis(void);

マテリアルクラスを消滅させます。

この関数はドキュメントに登録されていないマテリアルにのみ有効で、ドキュメントに登録されたマテリアルを消滅させる場合はMQDocument::DeleteMaterial()を使用しなければなりません。


UINT MQMaterial::GetUniqueID(void);

戻り値
ユニークID

(new in Rev2.40)

材質のユニークIDを取得します。

ユニークIDはMQDocument::AddMaterial()でドキュメントに登録した時点で割り当てられます。


void MQMaterial::GetName(char *buffer, int size);

buffer
名前を格納するバッファ
size
バッファの大きさ

マテリアルの名前をbufferへ格納します。


BOOL MQMaterial::GetSelected();

戻り値
選択状態

(new in Rev3.10)

マテリアルの選択状態を取得します。

この選択状態は材質パネル上で複数選択したときの状態を示します。カレントマテリアルについてはMQDocument::GetCurrentMaterialIndex()で取得します。


int MQMaterial::GetShader(void);

戻り値
シェーダの種類
[MQMATERIAL_SHADER_CLASSIC] Classicシェーダ
[MQMATERIAL_SHADER_CONSTANT] Constantシェーダ
[MQMATERIAL_SHADER_LAMBERT] Lambertシェーダ
[MQMATERIAL_SHADER_PHONG] Phongシェーダ
[MQMATERIAL_SHADER_BLINN] Blinnシェーダ

(new in Rev2.30)

マテリアルのシェーダの種類を取得します。


int MQMaterial::GetVertexColor(void);

戻り値
頂点カラーの種類
[MQMATERIAL_VERTEXCOLOR_DISABLE] 無効
[MQMATERIAL_VERTEXCOLOR_DIFFUSE] 拡散光への頂点カラー

(new in Rev2.30)

頂点カラーの種類を取得します。


BOOL MQMaterial::GetDoubleSided(void);

戻り値
表示の種類
[TRUE] 両面表示
[FALSE] 片面表示

(new in Rev3.10)

面を片面・両面のどちらで表示するかを取得します。


MQColor MQMaterial::GetColor(void);

戻り値

 マテリアルの基本色を取得します。


float MQMaterial::GetAlpha(void);

float MQMaterial::GetDiffuse(void);

float MQMaterial::GetAmbient(void);

float MQMaterial::GetEmission(void);

float MQMaterial::GetSpecular(void);

float MQMaterial::GetPower(void);

戻り値
属性の設定値

マテリアルの不透明度(Alpha)、拡散光(Diffuse)、環境光(Ambient)、自己照明(Emission)、反射光(Specular)、反射の強さ(Power)を取得します。

戻り値としては0から1(Powerのみ0から100)の値が返されます。


void MQMaterial::GetTextureName(char *buffer, int size);

void MQMaterial::GetAlphaName(char *buffer, int size);

void MQMaterial::GetBumpName(char *buffer, int size);

buffer
名前を格納するバッファ
size
バッファの大きさ

マテリアルに割り当てられている模様(Texture)、透明(Alpha)、凸凹(Bump)マッピングのファイル名を相対パスでbufferへ格納します。(元々絶対パスで指定されている場合は絶対パスが返る)

得られたファイル名を絶対パスに変換するにはMQDocument::FindMappingFile()を使用します。


int MQMaterial::GetMappingType(void);

戻り値
マッピングの投影方式
[MQMATERIAL_PROJECTION_UV] UVマッピング
[MQMATERIAL_PROJECTION_FLAT] 平面マッピング
[MQMATERIAL_PROJECTION_CYLINDER] 円筒マッピング
[MQMATERIAL_PROJECTION_SPHERE] 球面マッピング

(new in Rev2.30)

マッピングの投影方式を取得します。


MQPoint MQMaterial::GetMappingPosition(void);

戻り値
マッピングの投影位置

(new in Rev2.30)

マッピングの投影位置を取得します。


MQPoint MQMaterial::GetMappingScaling(void);

戻り値
マッピングの投影拡大率

(new in Rev2.30)

マッピングの投影拡大率を取得します。


MQAngle MQMaterial::GetMappingAngle(void);

戻り値
マッピングの投影回転角

(new in Rev2.30)

マッピングの投影回転角を取得します。


void MQMaterial::SetName(const char *name);

name
名前が格納されているバッファ

マテリアルの名前をセットします。


void MQMaterial::SetSelected(BOOL flag);

flag
選択状態

(new in Rev3.10)

マテリアルの選択状態を設定します。

この選択状態は材質パネル上で複数選択したときの状態を示します。カレントマテリアルについてはMQDocument::SetCurrentMaterialIndex()で設定します。


void MQMaterial::SetShader(int shader);

shader
シェーダの種類
[MQMATERIAL_SHADER_CLASSIC] Classicシェーダ
[MQMATERIAL_SHADER_CONSTANT] Constantシェーダ
[MQMATERIAL_SHADER_LAMBERT] Lambertシェーダ
[MQMATERIAL_SHADER_PHONG] Phongシェーダ
[MQMATERIAL_SHADER_BLINN] Blinnシェーダ

(new in Rev2.30)

マテリアルのシェーダの種類を設定します。


void MQMaterial::SetVertexColor(int value);

value
頂点カラーの種類
[MQMATERIAL_VERTEXCOLOR_DISABLE] 無効
[MQMATERIAL_VERTEXCOLOR_DIFFUSE] 拡散光への頂点カラー

(new in Rev2.30)

頂点カラーの種類を設定します。


void MQMaterial::SetDoubleSided(BOOL value);

value
表示の種類
[TRUE] 両面表示
[FALSE] 片面表示

(new in Rev3.10)

面を片面・両面のどちらで表示するかを設定します。


void MQMaterial::SetColor(MQColor color);

color
色データ

 マテリアルの基本色を設定します。


void MQMaterial::SetAlpha(float value);

void MQMaterial::SetDiffuse(float value);

void MQMaterial::SetAmbient(float value);

void MQMaterial::SetEmission(float value);

void MQMaterial::SetSpecular(float value);

void MQMaterial::SetPower(float value);

value
パラメータ

マテリアルの不透明度(Alpha)、拡散光(Diffuse)、環境光(Ambient)、自己照明(Emission)、反射光(Specular)、反射の強さ(Power)を取得します。

valueは0から1(Powerのみ0から100)の値でなければなりません。


void MQMaterial::SetTextureName(const char *name);

void MQMaterial::SetAlphaName(const char *name);

void MQMaterial::SetBumpName(const char *name);

name
名前が格納されているバッファ

マテリアルに割り当てる模様(Texture)、透明(Alpha)、凸凹(Bump)マッピングのファイル名を指定します。ファイル名は相対パス、絶対パスのどちらでも使用することができます。


void MQMaterial::SetMappingType(int type);

type
マッピングの投影方式
[MQMATERIAL_PROJECTION_UV] UVマッピング
[MQMATERIAL_PROJECTION_FLAT] 平面マッピング
[MQMATERIAL_PROJECTION_CYLINDER] 円筒マッピング
[MQMATERIAL_PROJECTION_SPHERE] 球面マッピング

(new in Rev2.30)

マッピングの投影方式を設定します。


void MQMaterial::SetMappingPosition(MQPoint pos);

pos
マッピングの投影位置

(new in Rev2.30)

マッピングの投影位置を設定します。


void MQMaterial::SetMappingScaling(MQPoint scale);

scale
マッピングの投影拡大率

(new in Rev2.30)

マッピングの投影拡大率を設定します。


void MQMaterial::SetMappingAngle(MQAngle angle);

angle
マッピングの投影回転角

(new in Rev2.30)

マッピングの投影回転角を設定します。


BOOL MQMaterial::AllocUserData(int userdata_id);

userdata_id
材質ユーザーデータID
戻り値
[TRUE] 確保成功
[FALSE] 確保失敗

(new in Rev3.10)

材質にユーザーデータ用の領域を確保します。

userdata_id には MQDocument::CreateMaterialUserData() で生成されたIDを指定します。

既に領域が確保されているユーザーデータIDを指定すると、何も行われずにTRUEが返ります。

ユーザーデータはむやみに確保するとメモリが浪費されるため、実際に設定する必要が出るまでは確保しないでください。


void MQMaterial::FreeUserData(int userdata_id);

userdata_id
材質ユーザーデータID

(new in Rev3.10)

MQMaterial::AllocUserData() で確保されたユーザーデータ用領域を解放します。

ユーザーデータが不要になった時点で、早々に解放してください。不用意に確保し続けるとメモリが浪費されます。


BOOL MQMaterial::GetUserData(int userdata_id, void *buffer);

userdata_id
材質ユーザーデータID
buffer
ユーザーデータを格納するバッファ
戻り値
[TRUE] 取得成功
[FALSE] 取得失敗

(new in Rev3.10)

材質のユーザーデータを取得します。

buffer は MQDocument::CreateMaterialUserData() で指定されたバイト数の領域である必要があります。

確保されていない材質ユーザーデータIDに対して取得を行うとFALSEが返ります。また、MQMaterial::SetUserData() でユーザーデータが設定されていない状態で取得を行うと buffer にはすべて0が格納されます。


BOOL MQMaterial::GetUserDataPart(int userdata_id, int offset, int copy_bytes, void *buffer);

userdata_id
材質ユーザーデータID
offset
データの先頭からのオフセット
copy_bytes
データの転送バイト数
buffer
ユーザーデータを格納するバッファ
戻り値
[TRUE] 取得成功
[FALSE] 取得失敗

(new in Rev3.10)

材質のユーザーデータを部分的に取得します。

ユーザーデータ内のうち offset から始まる領域が buffer に格納されます。

buffer は copy_bytes で指定されたバイト数の領域である必要があります。 copy_bytes に 0 を指定するとユーザーデータ全体、つまりMQDocument::CreateMaterialUserData() で指定されたバイト数が転送されます。

確保されていない材質ユーザーデータIDに対して取得を行うとFALSEが返ります。また、MQMaterial::SetUserData() でユーザーデータが設定されていない状態で取得を行うと buffer にはすべて0が格納されます。


BOOL MQMaterial::SetUserData(int userdata_id, const void *buffer);

userdata_id
材質ユーザーデータID
buffer
ユーザーデータが格納されたバッファ
戻り値
[TRUE] 設定成功
[FALSE] 設定失敗

(new in Rev3.10)

buffer に格納されているデータをユーザーデータとして設定します。

buffer は MQDocument::CreateMaterialUserData() で指定されたバイト数の領域である必要があります。

確保されていない材質ユーザーデータIDに対して取得を行うとFALSEが返ります。


BOOL MQMaterial::SetUserDataPart(int userdata_id, int offset, int copy_bytes, const void *buffer);

userdata_id
材質ユーザーデータID
offset
データの先頭からのオフセット
copy_bytes
データの転送バイト数
buffer
ユーザーデータが格納されたバッファ
戻り値
[TRUE] 設定成功
[FALSE] 設定失敗

(new in Rev3.10)

材質のユーザーデータを部分的に設定します。

buffer に格納されているデータがユーザーデータ内の offset から始まる領域に設定されます。

buffer は copy_bytes で指定されたバイト数の領域である必要があります。 copy_bytes に 0 を指定するとユーザーデータ全体、つまりMQDocument::CreateMaterialUserData() で指定されたバイト数が転送されます。

確保されていない材質ユーザーデータIDに対して取得を行うとFALSEが返ります。