MQMaterialクラスは、材質に関する情報を管理するクラスです。
| 基本操作 | |
| DeleteThis | マテリアルクラスを消滅させます |
| GetUniqueID | 材質のユニークIDを取得します |
| 各種属性 | |
| GetName | 名前を取得します |
| GetSelected | 選択状態を取得します |
| GetShader | シェーダの種類を取得します |
| GetVertexColor | 頂点カラーの種類を取得します |
| GetDoubleSided | 両面表示かどうかを取得します |
| GetColor | 基本色を取得します |
| GetAlpha | 不透明度を取得します |
| GetDiffuse | 拡散光を取得します |
| GetAmbient | 環境光を取得します |
| GetAmbientColor | 環境光の色を取得します |
| GetEmission | 自己照明を取得します |
| GetEmissionColor | 自己照明の色を取得します |
| GetSpecular | 反射光を取得します |
| GetSpecularColor | 反射光の色を取得します |
| GetPower | 反射の強さを取得します |
| GetReflection | 鏡面反射率を取得します |
| GetRefraction | 屈折率を取得します |
| SetName | 名前を設定します |
| SetSelected | 選択状態を設定します |
| SetShader | シェーダの種類を設定します |
| SetVertexColor | 頂点カラーの種類を設定します |
| SetDoubleSided | 両面表示かどうかを設定します |
| SetColor | 基本色を設定します |
| SetAlpha | 不透明度を設定します |
| SetDiffuse | 拡散光を設定します |
| SetAmbient | 環境光を設定します |
| SetAmbientColor | 環境光を設定します |
| SetEmission | 自己照明を設定します |
| SetEmissionColor | 自己照明を設定します |
| SetSpecular | 反射光を設定します |
| SetSpecularColor | 反射光を設定します |
| SetPower | 反射の強さを設定します |
| SetReflection | 鏡面反射率を設定します |
| SetRefraction | 屈折率を設定します |
| マッピング | |
| GetTextureName | 模様マッピングのファイル名を取得します |
| GetAlphaName | 透明マッピングのファイル名を取得します |
| GetBumpName | 凸凹マッピングのファイル名を取得します |
| GetMappingType | マッピングの投影方式を取得します |
| GetMappingPosition | マッピングの投影位置を取得します |
| GetMappingScaling | マッピングの投影拡大率を取得します |
| GetMappingAngle | マッピングの投影回転角を取得します |
| GetMappingFilter | マッピングのフィルタを取得します |
| GetWrapModeU | マッピングのU方向のラッピングモードを取得します |
| GetWrapModeV | マッピングのV方向のラッピングモードを取得します |
| SetTextureName | 模様マッピングのファイル名を設定します |
| SetAlphaName | 透明マッピングのファイル名を設定します |
| SetBumpName | 凸凹マッピングのファイル名を設定します |
| SetMappingType | マッピングの投影方式を設定します |
| SetMappingPosition | マッピングの投影位置を設定します |
| SetMappingScaling | マッピングの投影拡大率を設定します |
| SetMappingAngle | マッピングの投影回転角を設定します |
| SetMappingFilter | マッピングのフィルタを取得します |
| SetWrapModeU | マッピングのU方向のラッピングモードを取得します |
| SetWrapModeV | マッピングのV方向のラッピングモードを取得します |
| シェーダパラメータ | |
| GetShaderName | シェーダ名を取得します。 |
| SetShaderName | シェーダ名を設定します。 |
| GetShaderParameterNum | シェーダパラメータ数を取得します。 |
| GetShaderParameterName | シェーダパラメータ名を取得します。 |
| GetShaderParameterValueType | シェーダパラメータの値の種類を取得します。 |
| GetShaderParameterArraySize | シェーダパラメータの配列要素数を取得します。 |
| GetShaderParameterBoolValue | シェーダパラメータのbool値を取得します。 |
| GetShaderParameterIntValue | シェーダパラメータのint値を取得します。 |
| GetShaderParameterFloatValue | シェーダパラメータのfloat値を取得します。 |
| GetShaderParameterColorValue | シェーダパラメータの色を取得します。 |
| SetShaderParameterBoolValue | シェーダパラメータのbool値を設定します。 |
| SetShaderParameterIntValue | シェーダパラメータのint値を設定します。 |
| SetShaderParameterFloatValue | シェーダパラメータのfloat値を設定します。 |
| SetShaderParameterColorValue | シェーダパラメータの色を設定します。 |
| GetShaderMappingNum | シェーダマッピング数を取得します。 |
| GetShaderMappingName | シェーダマッピング名を取得します。 |
| GetShaderMappingFilename | シェーダマッピングのファイルを取得します。 |
| SetShaderMappingFilename | シェーダマッピングのファイル名を設定します。 |
| シェーダノード | |
| GetMainShaderNode | メインシェーダノードを取得します。 |
| GetSubShaderNodeNum | サブシェーダノードの数を取得します。 |
| GetSubShaderNodeID | サブシェーダノードのIDを取得します。 |
| GetSubShaderNode | サブシェーダノードを取得します。 |
| ユーザーデータ | |
| AllocUserData | 材質ユーザーデータの確保 |
| FreeUserData | 材質ユーザーデータの解放 |
| GetUserData | 材質ユーザーデータの取得 |
| GetUserDataPart | 材質ユーザーデータの部分取得 |
| SetUserData | 材質ユーザーデータの設定 |
| SetUserDataPart | 材質ユーザーデータの部分設定 |
void MQMaterial::DeleteThis(void);
マテリアルクラスを消滅させます。
この関数はドキュメントに登録されていないマテリアルにのみ有効で、ドキュメントに登録されたマテリアルを消滅させる場合はMQDocument::DeleteMaterial()を使用しなければなりません。
UINT MQMaterial::GetUniqueID(void);
(new in Rev2.40)
材質のユニークIDを取得します。
ユニークIDはMQDocument::AddMaterial()でドキュメントに登録した時点で割り当てられます。
取得したユニークIDをファイルに保存する場合、MQStationPlugin::OnSaveDocument()でフラグの指定が必要です。
void MQMaterial::GetName(char *buffer, int size);
void MQMaterial::GetNameW(wchar_t *buffer, int size);
std::string MQMaterial::GetName();
std::wstring MQMaterial::GetNameW();
引数付きの関数ではマテリアルの名前をbufferへ格納します。引数なしの関数ではANSIまたはワイド文字列として名前を取得します。
BOOL MQMaterial::GetSelected();
(new in Rev3.10)
マテリアルの選択状態を取得します。
この選択状態は材質パネル上で複数選択したときの状態を示します。カレントマテリアルについてはMQDocument::GetCurrentMaterialIndex()で取得します。
int MQMaterial::GetShader(void);
(new in Rev2.30)
マテリアルのシェーダの種類を取得します。
int MQMaterial::GetVertexColor(void);
(new in Rev2.30)
頂点カラーの種類を取得します。
BOOL MQMaterial::GetDoubleSided(void);
(new in Rev3.10)
面を片面・両面のどちらで表示するかを取得します。
MQColor MQMaterial::GetColor(void);
マテリアルの基本色を取得します。
float MQMaterial::GetAlpha(void);
float MQMaterial::GetDiffuse(void);
マテリアルの不透明度(Alpha)、拡散光(Diffuse)を取得します。
戻り値としては0から1の値が返されます。
float MQMaterial::GetAmbient(void);
float MQMaterial::GetEmission(void);
float MQMaterial::GetSpecular(void);
マテリアルの環境光(Ambient)、自己照明(Emission)、反射光(Specular)を取得します。
戻り値としては0から1の値が返されます。
(in Rev4.20)
マテリアルにカラー成分が設定されている場合も従来との互換性のためにこれらの関数を使用でき、各属性の色をモノクロ化したときの明度が戻り値として返されます。今後も引き続きこの関数は使用できますが、可能であれば GetAmbientColor(), GetEmissionColor(), GetSpecularColor() への置換が推奨されます。
MQColor MQMaterial::GetAmbientColor(void);
MQColor MQMaterial::GetEmissionColor(void);
MQColor MQMaterial::GetSpecularColor(void);
(new in Rev4.20)
マテリアルの環境光(Ambient)、自己照明(Emission)、反射光(Specular)の色を取得します。
戻り値としてはRGB各成分とも0から1の値が返されます。
float MQMaterial::GetPower(void);
マテリアルの反射の強さを取得します。
戻り値としては0から100の値が返されます。
float MQMaterial::GetReflection(void);
(new in Rev4.00)
マテリアルの鏡面反射率を取得します。
戻り値としては0から1の値が返されます。
float MQMaterial::GetRefraction(void);
(new in Rev4.00)
マテリアルの屈折率を取得します。
void MQMaterial::SetName(const char *name);
void MQMaterial::SetName(const wchar_t *name);
マテリアルの名前をセットします。
void MQMaterial::SetSelected(BOOL flag);
(new in Rev3.10)
マテリアルの選択状態を設定します。
この選択状態は材質パネル上で複数選択したときの状態を示します。カレントマテリアルについてはMQDocument::SetCurrentMaterialIndex()で設定します。
void MQMaterial::SetShader(int shader);
(new in Rev2.30)
マテリアルのシェーダの種類を設定します。
void MQMaterial::SetVertexColor(int value);
(new in Rev2.30)
頂点カラーの種類を設定します。
void MQMaterial::SetDoubleSided(BOOL value);
(new in Rev3.10)
面を片面・両面のどちらで表示するかを設定します。
void MQMaterial::SetColor(MQColor color);
マテリアルの基本色を設定します。
void MQMaterial::SetAlpha(float value);
void MQMaterial::SetDiffuse(float value);
マテリアルの不透明度(Alpha)、拡散光(Diffuse)を設定します。
valueは0から1の値でなければなりません。
void MQMaterial::SetAmbient(float value);
void MQMaterial::SetEmission(float value);
void MQMaterial::SetSpecular(float value);
マテリアルの環境光(Ambient)、自己照明(Emission)、反射光(Specular)を設定します。
valueは0から1の値でなければなりません。
(in Rev4.20)
従来との互換性のためにこれらの関数を使用でき、RGB各成分がすべてvalueで指定された値となります。今後も引き続きこの関数を使用できますが、可能であれば SetAmbientColor(), SetEmissionColor(), SetSpecularColor() への置換が推奨されます。
void MQMaterial::SetAmbientColor(MQColor color);
void MQMaterial::SetEmissionColor(MQColor color);
void MQMaterial::SetSpecularColor(MQColor color);
(new in Rev4.20)
マテリアルの環境光(Ambient)、自己照明(Emission)、反射光(Specular)の色を設定します。
colorのRGB各成分とも0から1の値を格納する必要があります。
void MQMaterial::SetPower(float value);
マテリアルの反射の強さ(Power)を設定します。
valueは0から100の値でなければなりません。
void MQMaterial::SetReflection(float value);
(new in Rev4.00)
マテリアルの鏡面反射率を設定します。
valueは0から1の値でなければなりません。
void MQMaterial::SetRefraction(float value);
(new in Rev4.00)
マテリアルの屈折率を設定します。
void MQMaterial::GetTextureName(char *buffer, int size);
void MQMaterial::GetTextureNameW(wchar_t *buffer, int size);
void MQMaterial::GetAlphaName(char *buffer, int size);
void MQMaterial::GetAlphaNameW(wchar_t *buffer, int size);
void MQMaterial::GetBumpName(char *buffer, int size);
void MQMaterial::GetBumpNameW(wchar_t *buffer, int size);
std::string MQMaterial::GetTextureName();
std::wstring void MQMaterial::GetTextureNameW();
std::string MQMaterial::GetAlphaName();
std::wstring MQMaterial::GetAlphaNameW();
std::string MQMaterial::GetBumpName();
std::wstring MQMaterial::GetBumpNameW();
マテリアルに割り当てられている模様(Texture)、透明(Alpha)、凸凹(Bump)マッピングのファイル名を相対パスでbufferへ格納します、または戻り値として返します。(元々絶対パスで指定されている場合は絶対パスが返る)
得られたファイル名を絶対パスに変換するにはMQDocument::FindMappingFile()を使用します。
int MQMaterial::GetMappingType(void);
(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)
マッピングの投影回転角を取得します。
int MQMaterial::GetMappingFilter(void);
(new in Rev4.70)
マッピングのフィルタの種類を取得します。
int MQMaterial::GetWrapModeU(void);
(new in Rev4.70)
マッピングのU方向のラッピングモードを取得します。
int MQMaterial::GetWrapModeV(void);
(new in Rev4.70)
マッピングのV方向のラッピングモードを取得します。
void MQMaterial::SetTextureName(const char *name);
void MQMaterial::SetTextureName(const wchar_t *name);
void MQMaterial::SetAlphaName(const char *name);
void MQMaterial::SetAlphaName(const wchar_t *name);
void MQMaterial::SetBumpName(const char *name);
void MQMaterial::SetBumpName(const wchar_t *name);
マテリアルに割り当てる模様(Texture)、透明(Alpha)、凸凹(Bump)マッピングのファイル名を指定します。ファイル名は相対パス、絶対パスのどちらでも使用することができます。
void MQMaterial::SetMappingType(int type);
(new in Rev2.30)
マッピングの投影方式を設定します。
void MQMaterial::SetMappingPosition(MQPoint pos);
(new in Rev2.30)
マッピングの投影位置を設定します。
void MQMaterial::SetMappingScaling(MQPoint scale);
(new in Rev2.30)
マッピングの投影拡大率を設定します。
void MQMaterial::SetMappingAngle(MQAngle angle);
(new in Rev2.30)
マッピングの投影回転角を設定します。
void MQMaterial::SetMappingFilter(int type);
(new in Rev4.70)
マッピングのフィルタの種類を設定します。
void MQMaterial::SetWrapModeU(int type);
(new in Rev4.70)
マッピングのU方向のラッピングモードを設定します。
void MQMaterial::SetWrapModeV(int type);
(new in Rev4.70)
マッピングのV方向のラッピングモードを設定します。
int MQMaterial::GetShaderName(char *buffer, int buffer_size);
std::string MQMaterial::GetShaderName(void);
(new in Rev4.33)
HLSLシェーダの名前を設定します。
bool MQMaterial::SetShaderName(const char *name);
(new in Rev4.43)
HLSLシェーダの名前を設定します。
システム側に用意されないシェーダ名を指定した場合、falseが返ります。
シェーダ名が設定されるとGetMainShaderNode()でシェーダノードへのアクセスが可能になります。
int MQMaterial::GetShaderParameterNum(void);
(new in Rev4.33)
シェーダが保持するパラメータの数を取得します。
GetMainShaderNode()->GetParameterNum()と等価です。
int MQMaterial::GetShaderParameterName(int index, char *buffer, int buffer_size);
std::string MQMaterial::GetShaderParameterName(int index);
(new in Rev4.33)
シェーダ内のパラメータの名前を取得します。
GetMainShaderNode()->GetParameterName()と等価です。
int MQMaterial::GetShaderParameterValueType(int index);
int MQMaterial::GetShaderParameterValueType(const char *name);
(new in Rev4.33)
インデックスまたは名前で指定されたシェーダパラメータの値の種類を取得します。
GetMainShaderNode()->GetParameterValueType()と等価です。
int MQMaterial::GetShaderParameterArraySize(int index);
int MQMaterial::GetShaderParameterArraySize(const char *name);
(new in Rev4.33)
インデックスまたは名前で指定されたシェーダパラメータの値の配列要素数を取得します。
GetMainShaderNode()->GetParameterArraySize()と等価です。
bool MQMaterial::GetShaderParameterBoolValue(int index, int array_index);
bool MQMaterial::GetShaderParameterBoolValue(const char *name, int array_index);
int MQMaterial::GetShaderParameterIntValue(int index, int array_index);
int MQMaterial::GetShaderParameterIntValue(const char *name, int array_index);
float MQMaterial::GetShaderParameterFloatValue(int index, int array_index);
float MQMaterial::GetShaderParameterFloatValue(const char *name, int array_index);
MQColorRGBA MQMaterial::GetShaderParameterColorValue(int index, int array_index);
MQColorRGBA MQMaterial::GetShaderParameterColorValue(const char *name, int array_index);
(new in Rev4.33)
インデックスまたは名前で指定されたシェーダパラメータの値をbool/int/float/色で取得します。
GetMainShaderNode()->GetParameter****Value()と等価です。
void MQMaterial::SetShaderParameterBoolValue(int index, int array_index, bool value);
void MQMaterial::SetShaderParameterBoolValue(const char *name, int array_index, bool value);
void MQMaterial::SetShaderParameterIntValue(int index, int array_index, int value);
void MQMaterial::SetShaderParameterIntValue(const char *name, int array_index, int value);
void MQMaterial::SetShaderParameterFloatValue(int index, int array_index, float value);
void MQMaterial::SetShaderParameterFloatValue(const char *name, int array_index, float value);
void MQMaterial::SetShaderParameterColorValue(int index, int array_index, MQColorRGBA color);
void MQMaterial::SetShaderParameterColorValue(const char *name, int array_index, MQColorRGBA color);
(new in Rev4.33)
インデックスまたは名前で指定されたシェーダパラメータの値をbool/int/float/色で設定します。
GetMainShaderNode()->SetParameter****Value()と等価です。
int MQMaterial::GetShaderMappingNum(void);
(new in Rev4.33)
シェーダが保持するマッピングの数を取得します。
GetMainShaderNode()->GetMappingNum()と等価です。
int MQMaterial::GetShaderMappingName(int index, char *buffer, int buffer_size);
std::string MQMaterial::GetShaderMappingName(int index);
(new in Rev4.33)
シェーダ内のマッピングの名前を取得します。
GetMainShaderNode()->GetMappingName()と等価です。
int MQMaterial::GetShaderMappingFilename(int index, char *buffer, int buffer_size);
int MQMaterial::GetShaderMappingFilename(const char *name, char *buffer, int buffer_size);
int MQMaterial::GetShaderMappingFilename(int index, wchar_t *buffer, int buffer_size);
int MQMaterial::GetShaderMappingFilename(const char *name, wchar_t *buffer, int buffer_size);
std::string MQMaterial::GetShaderMappingFilename(int index);
std::string MQMaterial::GetShaderMappingFilename(const char *name);
std::wstring MQMaterial::GetShaderMappingFilenameW(int index);
std::wstring MQMaterial::GetShaderMappingFilenameW(const char *name);
(new in Rev4.33)
シェーダ内のマッピングのファイル名を取得します。
GetMainShaderNode()->GetMappingFilename()と等価です。
void MQMaterial::SetShaderMappingFilename(int index, char *buffer);
void MQMaterial::SetShaderMappingFilename(const char *name, char *buffer);
void MQMaterial::SetShaderMappingFilename(int index, wchar_t *buffer);
void MQMaterial::SetShaderMappingFilename(const char *name, wchar_t *buffer);
(new in Rev4.33)
シェーダ内のマッピングのファイル名を設定します。
GetMainShaderNode()->SetMappingFilename()と等価です。
MQShaderNode MQMaterial::GetMainShaderNode();
(new in Rev4.50)
メインシェーダノードを取得します。
メインシェーダノードはSetShader()でMQMATERIAL_SHADER_HLSL、SetShaderName()で適切なシェーダ名を指定した場合に存在し、それ以外の場合はNULLが返ります。
int MQMaterial::GetSubShaderNodeNum();
(new in Rev4.50)
サブシェーダノードの数を取得します。
std::string MQMaterial::GetSubShaderNodeID(int index);
(new in Rev4.50)
サブシェーダノードのIDを取得します。
MQShaderNode MQMaterial::GetSubShaderNode(int index);
MQShaderNode MQMaterial::GetSubShaderNode(const char *id);
(new in Rev4.50)
インデックスまたはIDによりサブシェーダノードを取得します。
BOOL MQMaterial::AllocUserData(int userdata_id);
(new in Rev3.10)
材質にユーザーデータ用の領域を確保します。
userdata_id には MQDocument::CreateMaterialUserData() で生成されたIDを指定します。
既に領域が確保されているユーザーデータIDを指定すると、何も行われずにTRUEが返ります。
ユーザーデータはむやみに確保するとメモリが浪費されるため、実際に設定する必要が出るまでは確保しないでください。
void MQMaterial::FreeUserData(int userdata_id);
(new in Rev3.10)
MQMaterial::AllocUserData() で確保されたユーザーデータ用領域を解放します。
ユーザーデータが不要になった時点で、早々に解放してください。不用意に確保し続けるとメモリが浪費されます。
BOOL MQMaterial::GetUserData(int userdata_id, void *buffer);
(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);
(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);
(new in Rev3.10)
buffer に格納されているデータをユーザーデータとして設定します。
buffer は MQDocument::CreateMaterialUserData() で指定されたバイト数の領域である必要があります。
確保されていない材質ユーザーデータIDに対して取得を行うとFALSEが返ります。
BOOL MQMaterial::SetUserDataPart(int userdata_id, int offset, int copy_bytes, const void *buffer);
(new in Rev3.10)
材質のユーザーデータを部分的に設定します。
buffer に格納されているデータがユーザーデータ内の offset から始まる領域に設定されます。
buffer は copy_bytes で指定されたバイト数の領域である必要があります。 copy_bytes に 0 を指定するとユーザーデータ全体、つまりMQDocument::CreateMaterialUserData() で指定されたバイト数が転送されます。
確保されていない材質ユーザーデータIDに対して取得を行うとFALSEが返ります。