MQDocumentクラス

MQDocumentクラスは、オブジェクトや材質などのデータを管理するクラスです。

オブジェクト
GetObjectCount オブジェクトの数を取得します
GetObject 指定されたインデックスのオブジェクトクラスへのポインタを取得します
GetObjectFromUniqueID 指定されたユニークIDのオブジェクトクラスへのポインタを取得します
GetCurrentObjectIndex カレントオブジェクトのインデックスを取得します
SetCurrentObjectIndex カレントオブジェクトをインデックス指定します。
AddObject オブジェクトクラスをドキュメントに登録します
InsertObject オブジェクトを指定してオブジェクトの後ろに登録します。
RemoveObject オブジェクトを削除せずに外します。
DeleteObject オブジェクトを外し、オブジェクトクラスを消滅させます
GetObjectIndex オブジェクトのインデックスを取得します
GetParentObject 指定したオブジェクトの親オブジェクトを取得します
GetChildObjectCount オブジェクトに属する子オブジェクトの数を取得します
GetChildObject オブジェクトの子オブジェクトを取得します
GetGlobalMatrix オブジェクトのグローバル座標変換行列を取得します
GetGlobalInverseMatrix オブジェクトのグローバル座標逆変換行列を取得します
GetUnusedObjectName 使用されていないオブジェクトの名前を取得します
Triangulate 多角形を複数の三角形に分割します
マテリアル
GetMaterialCount マテリアルの数を取得します
GetMaterial 指定されたインデックスのマテリアルクラスへのポインタを取得します
GetMaterialFromUniqueID 指定されたユニークIDのマテリアルクラスへのポインタを取得します
GetCurrentMaterialIndex カレントマテリアルのインデックスを取得します
SetCurrentMaterialIndex カレントマテリアルをインデックス指定します
AddMaterial マテリアルクラスをドキュメントに登録します
DeleteMaterial ドキュメントからマテリアルを外し、マテリアルクラスを消滅させます
GetUnusedMaterialName 使用されていないマテリアルの名前を取得します
メモリ
Compact ドキュメント中の配列に存在するNULLを切り詰めます
選択
ClearSelect ドキュメント中の指定した要素の選択をすべて解除します
AddSelectVertex 頂点を選択します
DeleteSelectVertex 頂点の選択を解除します
IsSelectVertex 頂点が選択されているかどうかをチェックします
AddSelectLine ラインを選択します
DeleteSelectLine ラインの選択を解除します
IsSelectLine ラインが選択されているかどうかをチェックします
AddSelectFace 面を選択します
DeleteSelectFace 面の選択を解除します
IsSelectFace 面が選択されているかどうかをチェックします
AddSelectUVVertex 頂点をUV選択します
DeleteSelectUVVertex 頂点のUV選択を解除します
IsSelectUVVertex 頂点がUV選択されているかどうかをチェックします
ユーザーデータ
CreateObjectUserData オブジェクト用のユーザーデータのIDを生成します
DeleteObjectUserData オブジェクト用のユーザーデータのIDを削除します
FindObjectUserData オブジェクト用のユーザーデータのIDを検索します
CreateVertexUserData 頂点用のユーザーデータのIDを生成します
DeleteVertexUserData 頂点用のユーザーデータのIDを削除します
FindVertexUserData 頂点用のユーザーデータのIDを検索します
CreateFaceUserData 面用のユーザーデータのIDを生成します
DeleteFaceUserData 面用のユーザーデータのIDを削除します
FindFaceUserData 面用のユーザーデータのIDを検索します
CreateMaterialUserData 材質用のユーザーデータのIDを生成します
DeleteMaterialUserData 材質用のユーザーデータのIDを削除します
FindMaterialUserData 材質用のユーザーデータのIDを検索します
マッピング
FindMappingFile ファイル名を絶対パスに変換します
GetMappingImageSize マッピング画像のサイズを取得します。
GetMappingImage マッピング画像を取得します。
GetEnvironmentMapName 環境マップの名前を取得します。
SetEnvironmentMapName 環境マップの名前を設定します。
GetEnvironmentMapIntensity 環境マップの強度を取得します。
SetEnvironmentMapIntensity 環境マップの強度を設定します。
GetEnvironmentMapRotation 環境マップの回転角度を取得します。
SetEnvironmentMapRotation 環境マップの回転角度を設定します。
GetUVChannelID UVチャンネルIDを取得します。
GetUVChannelName UVチャンネル名を取得します。
GetMaxUVChannelNum 使用可能な最大UVチャンネル数を取得します。
シーン
GetScene シーンを取得します

int MQDocument::GetObjectCount(void);

戻り値
オブジェクトの配列要素数

ドキュメント中のオブジェクトの数を取得します。

実際に存在するオブジェクト数ではなく配列要素の大きさが返されるので、 MQDocument::DeleteObject() によりNULLになったものも数として入れられます。正確な数を得るには MQDocument::GetObject() によりNULL以外のものを数える必要があります。


MQObject MQDocument::GetObject(int index);

index
オブジェクトのインデックス
戻り値
オブジェクトクラス

オブジェクトクラスへのポインタを取得します。

指定したインデックスにオブジェクトが存在しない場合はNULLが返されます。


MQObject MQDocument::GetObjectFromUniqueID(int id);

id
オブジェクトのユニークID
戻り値
オブジェクトクラス

指定されたユニークIDのオブジェクトクラスへのポインタを取得します。

ユニークIDに該当するオブジェクトが存在しない場合はNULLが返されます。


int MQDocument::GetCurrentObjectIndex(void);

戻り値
カレントオブジェクトのインデックス

カレントオブジェクトのインデックスを取得します。

複数選択された状態を取得するにはMQObject::GetSelected()を呼び出してください。


void MQDocument::SetCurrentObjectIndex(int index);

index
オブジェクトのインデックス

カレントオブジェクトをインデックス指定します。

複数選択された状態を設定するにはMQObject::SetSelected()を呼び出してください。


int MQDocument::AddObject(MQObject obj);

obj
追加するオブジェクトクラス
戻り値
追加されたオブジェクトのインデックス

オブジェクトクラスをドキュメントに登録します。

objそのものが参照されるので、ドキュメントに追加されたオブジェクトを MQObject::DeleteThis() で消滅させてはいけません。

登録するオブジェクトには他と重複しない名前を指定してください。重複しない名前はMQDocument::GetUnusedObjectName()で取得できます。


int MQDocument::InsertObject(MQObject obj, MQObject before);

obj
追加するオブジェクトクラス
before
このオブジェクトの後ろに追加する(NULLの場合は先頭)
戻り値
追加されたオブジェクトのインデックス

(new in Rev2.41)

オブジェクトクラスをドキュメント内の指定したオブジェクトの後ろのインデックスに登録します。

beforeがNULLの場合、リストの先頭に登録されます。

オブジェクトの挿入により、リストの後ろにあるオブジェクトのインデックスは変更されます。

objそのものが参照されるので、ドキュメントに追加されたオブジェクトを MQObject::DeleteThis() で消滅させてはいけません。


BOOL MQDocument::RemoveObject(MQObject obj);

obj
外すオブジェクト
戻り値
成功の可否

(new in Rev4.71)

ドキュメントからオブジェクトを外します。オブジェクトクラス自体は存続します。

外されたオブジェクトのインデックスに対して MQDocument::GetObject() はNULLを返すようになります。


void MQDocument::DeleteObject(int index);

index
削除するオブジェクトのインデックス

ドキュメントからオブジェクトを外し、オブジェクトクラスを消滅させます。

削除したインデックスに対して MQDocument::GetObject() はNULLを返すようになります。


int MQDocument::GetObjectIndex(MQObject obj);

obj
オブジェクトクラス
戻り値
オブジェクトのインデックス

ドキュメント中のオブジェクトのインデックスを取得します。

指定したオブジェクトがドキュメント中に存在しない場合は-1が返されます。


MQObject MQDocument::GetParentObject(MQObject obj);

obj
子オブジェクトクラス
戻り値
親オブジェクトクラス

(new in Rev2.40)

ドキュメント中の指定したオブジェクトの親オブジェクトを取得します。

指定したオブジェクトがルートにある場合はNULLが返されます。


int MQDocument::GetChildObjectCount(MQObject obj);

obj
親オブジェクトクラス
戻り値
子オブジェクトの数

(new in Rev2.40)

ドキュメント中の指定したオブジェクトに属する子オブジェクトの数を取得します。

子オブジェクトは直下にあるもののみがカウントされ、孫以下はカウントされません。


MQObject MQDocument::GetChildObject(MQObject obj, int index);

obj
親オブジェクトクラス
index
子オブジェクトのインデックス
戻り値
子オブジェクト

(new in Rev2.40)

ドキュメント中の指定したオブジェクトの子オブジェクトを取得します。

インデックスは MQDocument::GetChildObjectCount() で返される数より小さい値を指定してください。


void MQDocument::GetGlobalMatrix(MQObject obj, MQMatrix& mtx);

obj
オブジェクトクラス
mtx
[OUT] グローバル座標変換行列

(new in Rev2.40)

ドキュメント中の指定したオブジェクトのグローバル座標変換行列を取得します。


void MQDocument::GetGlobalInverseMatrix(MQObject obj, MQMatrix& mtx);

obj
オブジェクトクラス
mtx
[OUT] グローバル座標逆変換行列

(new in Rev2.40)

ドキュメント中の指定したオブジェクトのグローバル座標逆変換行列を取得します。


void MQDocument::GetUnusedObjectName(char *buffer, int buffer_size);

void MQDocument::GetUnusedObjectName(char *buffer, int buffer_size, const char *base_name);

buffer
[OUT] 名前を格納するバッファ
buffer_size
バッファのサイズ(バイト単位)
base_name
ベースとなる名前

(new in Rev3.10)

ドキュメント中で使用されていないオブジェクトの名前を取得します。

base_nameを指定した場合、その文字列に連番する名前が取得されます(例:test1 -> test2)。 base_nameが指定されない、またはNULLが指定された場合、適当な名前が取得されます。


BOOL MQDocument::Triangulate(const MQPoint *points, int points_num, int *index_array, int index_num);

points
点の配列
points_num
点の数
index_array
インデックス配列を格納するバッファ
index_num
インデックス配列を格納するバッファの配列数
戻り値
成功の可否

(new in Rev4.00)

多角形を三角形に分割した結果を取得します。

index_arrayには一つの三角形をなす3つのインデックスが三角形の数の分だけ格納されます。index_numは(points_num-2)*3個以上である必要があります。


int MQDocument::GetMaterialCount(void);

戻り値
マテリアルの配列要素数

ドキュメント中のマテリアルの数を取得します。

実際に存在するマテリアル数ではなく配列要素の大きさが返されるので、 MQDocument::DeleteMaterial() によりNULLになったものも数として入れられます。正確な数を得るには MQDocument::GetMaterial() によりNULL以外のものを数える必要があります。


MQMaterial MQDocument::GetMaterial(int index);

index
マテリアルのインデックス
戻り値
マテリアルクラス

マテリアルクラスへのポインタを取得します。

指定したインデックスにマテリアルが存在しない場合はNULLが返されます。


MQMaterial MQDocument::GetMaterialFromUniqueID(int id);

id
ユニークID
戻り値
マテリアルクラス

指定されたユニークIDのマテリアルクラスへのポインタを取得します。

ユニークIDに該当するマテリアルが存在しない場合はNULLが返されます。


int MQDocument::GetCurrentMaterialIndex(void);

戻り値
カレントマテリアルのインデックス

カレントマテリアルのインデックスを取得します。

-1が返された場合はカレントは未着色面であることを示します。


void MQDocument::SetCurrentMaterialIndex(int index);

index
マテリアルのインデックス

カレントマテリアルをインデックス指定します。


int MQDocument::AddMaterial(MQMaterial mat);

mat
追加するマテリアルクラス
戻り値
追加されたマテリアルのインデックス

マテリアルクラスをドキュメントに登録します。

matそのものが参照されるので、ドキュメントに追加されたマテリアルをMQMaterial::DeleteThis()により消滅させてはいけません。

登録するマテリアルには他と重複しない名前を指定してください。重複しない名前はMQDocument::GetUnusedMaterialName()で取得できます。


void MQDocument::DeleteMaterial(int index);

index
削除するマテリアルのインデックス

ドキュメントからマテリアルを外し、マテリアルクラスを消滅させます。

削除したインデックスに対して MQDocument::GetMaterial() はNULLを返すようになります。


void MQDocument::GetUnusedMaterialName(char *buffer, int buffer_size);

void MQDocument::GetUnusedMaterialName(char *buffer, int buffer_size, const char *base_name);

buffer
[OUT] 名前を格納するバッファ
buffer_size
バッファのサイズ(バイト単位)
base_name
ベースとなる名前

(new in Rev3.10)

ドキュメント中で使用されていないマテリアルの名前を取得します。

base_nameを指定した場合、その文字列に連番する名前が取得されます(例:test1 -> test2)。 base_nameが指定されない、またはNULLが指定された場合、適当な名前が取得されます。


void MQDocument::Compact(void);

ドキュメント中のオブジェクトやマテリアル配列に存在するNULLを切り詰めて、配列の大きさを実際に存在するオブジェクトやマテリアル数と同じにします。また、オブジェクト中に存在する頂点や面の配列も切り詰めます。ただし、頂点や面のインデックスが変化することに注意して下さい。

データ量が小さくなるので、ドキュメントやオブジェクトに対して大幅な操作を行った後は、このAPIを実行するのが望ましいです。

ファイルの保存の際には自動的に実行されます。


void MQDocument::ClearSelect(DWORD flag);

flag
[MQDOC_CLEARSELECT_VERTEX] 頂点
[MQDOC_CLEARSELECT_LINE]
[MQDOC_CLEARSELECT_FACE]
[MQDOC_CLEARSELECT_ALL] すべての要素

ドキュメント中の指定した要素の選択をすべて解除します。


BOOL MQDocument::AddSelectVertex(int objindex, int vertindex);
BOOL MQDocument::AddSelectVertex(MQSelectVertex sel);

objindex
オブジェクトのインデックス
vertindex
頂点のインデックス
sel
選択頂点
戻り値
成功の可否

指定した頂点を選択します。


BOOL MQDocument::DeleteSelectVertex(int objindex, int vertindex);
BOOL MQDocument::DeleteSelectVertex(MQSelectVertex sel);

objindex
オブジェクトのインデックス
vertindex
頂点のインデックス
sel
選択頂点
戻り値
成功の可否

指定した頂点の選択を解除します。


BOOL MQDocument::IsSelectVertex(int objindex, int vertindex);
BOOL MQDocument::IsSelectVertex(MQSelectVertex sel);

objindex
オブジェクトのインデックス
vertindex
頂点のインデックス
sel
選択頂点
戻り値
[TRUE] 選択されている
[FALSE] 選択されていない、または頂点が存在しない

指定した頂点が選択されているかどうかをチェックします。


BOOL MQDocument::AddSelectLine(int objindex, int faceindex, int lineindex);
BOOL MQDocument::AddSelectLine(MQSelectLine sel);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
lineindex
ラインのインデックス
sel
選択ライン
戻り値
成功の可否

指定したラインを選択します。


BOOL MQDocument::DeleteSelectLine(int objindex, int faceindex, int linelidex);
BOOL MQDocument::DeleteSelectLine(MQSelectLine sel);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
lineindex
ラインのインデックス
sel
選択ライン
戻り値
成功の可否

指定したラインの選択を解除します。


BOOL MQDocument::IsSelectLine(int objindex, int faceindex, int lineindex);
BOOL MQDocument::IsSelectLine(MQSelectLine sel);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
lineindex
ラインのインデックス
sel
選択ライン
戻り値
[TRUE] 選択されている
[FALSE] 選択されていない、またはラインが存在しない

指定したラインが選択されているかどうかをチェックします。


BOOL MQDocument::AddSelectFace(int objindex, int faceindex);
BOOL MQDocument::AddSelectFace(MQSelectFace sel);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
sel
選択面
戻り値
成功の可否

指定した面を選択します。


BOOL MQDocument::DeleteSelectFace(int objindex, int faceindex);
BOOL MQDocument::DeleteSelectFace(MQSelectFace sel);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
sel
選択面
戻り値
成功の可否

指定した面の選択を解除します。


BOOL MQDocument::IsSelectFace(int objindex, int faceindex);
BOOL MQDocument::IsSelectFace(MQSelectFace sel);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
sel
選択面
戻り値
[TRUE] 選択されている
[FALSE] 選択されていない、または面が存在しない

指定した面が選択されているかどうかをチェックします。


BOOL MQDocument::AddSelectUVVertex(int objindex, int faceindex, int vertindex);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
vertindex
面内頂点のインデックス
戻り値
成功の可否

(new in Rev2.30)

指定した頂点をUV選択します。


BOOL MQDocument::DeleteSelectUVVertex(int objindex, int faceindex, int vertindex);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
vertindex
面内頂点のインデックス
戻り値
成功の可否

(new in Rev2.30)

指定した頂点のUV選択を解除します。


BOOL MQDocument::IsSelectUVVertex(int objindex, int faceindex, int vertindex);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
vertindex
面内頂点のインデックス
戻り値
[TRUE] 選択されている
[FALSE] 選択されていない、または面・頂点が存在しない

(new in Rev2.30)

指定した頂点がUV選択されているかどうかをチェックします。


int MQDocument::CreateObjectUserData(DWORD productID, DWORD pluginID, const char *identifier, int bytes_per_object);

productID
プラグインの制作者ID
pluginID
プラグインのID
identifier
識別用の任意文字列(15文字まで)
bytes_per_object
オブジェクトごとに割り当てるデータのバイト数(65535バイト以内)
戻り値
[0以外] オブジェクトユーザーデータID
[0] 生成失敗

(new in Rev3.10)

オブジェクトごとにプラグイン独自の任意のデータを割り当てるためのオブジェクトユーザーデータIDを生成します。

productID と pluginID は MQGetPlugInID() で取得されるIDを指定する必要があります。bytes_per_object には1つの頂点に割り当てるデータのサイズをバイト数で指定します。1頂点につき最大で65535バイトのデータを割り当てることができます。

生成されたオブジェクトユーザーデータIDは MQObject::AllocUserData() などの関数で使用します。

既に作成されているユーザーデータと同じ productID、pluginID、identifier を指定した場合、ユーザーデータは新規作成されず、既存のユーザーデータのIDが返されます。複数のユーザーデータを扱うには異なる identifier を指定してください。


void MQDocument::DeleteObjectUserData(int userdata_id);

userdata_id
オブジェクトユーザーデータID

(new in Rev3.10)

MQDocument::CreateObjectUserData() で生成されたユーザーデータを削除します。ドキュメント内のオブジェクトにユーザーデータが確保されている場合、この関数を呼び出したときに自動的に解放されます。

ユーザーデータIDの生成と削除は繰り返し行う必要はありません。プラグインがアンロードされるときなど、以降の処理でユーザーデータが完全に不要になったときのみ呼び出してください。


int MQDocument::FindObjectUserData(DWORD productID, DWORD pluginID, const char *identifier);

productID
プラグインの制作者ID
pluginID
プラグインのID
identifier
識別用の任意文字列(15文字まで)
戻り値
[0以外] オブジェクトユーザーデータID
[0] 取得失敗

(new in Rev3.10)

CreateObjectUserData() で作成されたユーザーデータのIDを取得します。ユーザーデータが作成されていなければ0が返されます。


int MQDocument::CreateVertexUserData(DWORD productID, DWORD pluginID, const char *identifier, int bytes_per_vertex);

productID
プラグインの制作者ID
pluginID
プラグインのID
identifier
識別用の任意文字列(15文字まで)
bytes_per_vertex
頂点ごとに割り当てるデータのバイト数(65535バイト以内)
戻り値
[0以外] 頂点ユーザーデータID
[0] 生成失敗

(new in Rev3.10)

頂点ごとにプラグイン独自の任意のデータを割り当てるための頂点ユーザーデータIDを生成します。

productID と pluginID は MQGetPlugInID() で取得されるIDを指定する必要があります。bytes_per_vertex には1つの頂点に割り当てるデータのサイズをバイト数で指定します。1頂点につき最大で65535バイトのデータを割り当てることができます。

生成された頂点ユーザーデータIDは MQObject::AllocVertexUserData() などの関数で使用します。

既に作成されているユーザーデータと同じ productID、pluginID、identifier を指定した場合、ユーザーデータは新規作成されず、既存のユーザーデータのIDが返されます。複数のユーザーデータを扱うには異なる identifier を指定してください。


void MQDocument::DeleteVertexUserData(int userdata_id);

userdata_id
頂点ユーザーデータID

(new in Rev3.10)

MQDocument::CreateVertexUserData() で生成された頂点ユーザーデータを削除します。ドキュメント内のオブジェクトに頂点ユーザーデータが確保されている場合、この関数を呼び出したときに自動的に解放されます。

頂点ユーザーデータIDの生成と削除は繰り返し行う必要はありません。プラグインがアンロードされるときなど、以降の処理で頂点ユーザーデータが完全に不要になったときのみ呼び出してください。


int MQDocument::FindVertexUserData(DWORD productID, DWORD pluginID, const char *identifier);

productID
プラグインの制作者ID
pluginID
プラグインのID
identifier
識別用の任意文字列(15文字まで)
戻り値
[0以外] 頂点ユーザーデータID
[0] 取得失敗

(new in Rev3.10)

CreateVertexUserData() で作成されたユーザーデータのIDを取得します。ユーザーデータが作成されていなければ0が返されます。


int MQDocument::CreateFaceUserData(DWORD productID, DWORD pluginID, const char *identifier, int bytes_per_face);

productID
プラグインの制作者ID
pluginID
プラグインのID
identifier
識別用の任意文字列(15文字まで)
bytes_per_face
面ごとに割り当てるデータのバイト数(65535バイト以内)
戻り値
[0以外] 面ユーザーデータID
[0] 生成失敗

(new in Rev3.10)

面ごとにプラグイン独自の任意のデータを割り当てるための面ユーザーデータIDを生成します。

productID と pluginID は MQGetPlugInID() で取得されるIDを指定する必要があります。bytes_per_face には1つの面に割り当てるデータのサイズをバイト数で指定します。1つの面につき最大で65535バイトのデータを割り当てることができます。

生成された面ユーザーデータIDは MQObject::AllocFaceUserData() などの関数で使用します。

既に作成されているユーザーデータと同じ productID、pluginID、identifier を指定した場合、ユーザーデータは新規作成されず、既存のユーザーデータのIDが返されます。複数のユーザーデータを扱うには異なる identifier を指定してください。


void MQDocument::DeleteFaceUserData(int userdata_id);

userdata_id
面ユーザーデータID

(new in Rev3.10)

MQDocument::CreateFaceUserData() で生成された面ユーザーデータを削除します。ドキュメント内のオブジェクトに面ユーザーデータが確保されている場合、この関数を呼び出したときに自動的に解放されます。

面ユーザーデータIDの生成と削除は繰り返し行う必要はありません。プラグインがアンロードされるときなど、以降の処理で面ユーザーデータが完全に不要になったときのみ呼び出してください。


int MQDocument::FindFaceUserData(DWORD productID, DWORD pluginID, const char *identifier);

productID
プラグインの制作者ID
pluginID
プラグインのID
identifier
識別用の任意文字列(15文字まで)
戻り値
[0以外] 面ユーザーデータID
[0] 取得失敗

(new in Rev3.10)

CreateFaceUserData() で作成されたユーザーデータのIDを取得します。ユーザーデータが作成されていなければ0が返されます。


int MQDocument::CreateMaterialUserData(DWORD productID, DWORD pluginID, const char *identifier, int bytes_per_material);

productID
プラグインの制作者ID
pluginID
プラグインのID
identifier
識別用の任意文字列(15文字まで)
bytes_per_material
材質ごとに割り当てるデータのバイト数(65535バイト以内)
戻り値
[0以外] 材質ユーザーデータID
[0] 生成失敗

(new in Rev3.10)

材質ごとにプラグイン独自の任意のデータを割り当てるための材質ユーザーデータIDを生成します。

productID と pluginID は MQGetPlugInID() で取得されるIDを指定する必要があります。bytes_per_material には1つの材質に割り当てるデータのサイズをバイト数で指定します。1つの材質につき最大で65535バイトのデータを割り当てることができます。

生成された材質ユーザーデータIDは MQMaterial::AllocUserData() などの関数で使用します。

既に作成されているユーザーデータと同じ productID、pluginID、identifier を指定した場合、ユーザーデータは新規作成されず、既存のユーザーデータのIDが返されます。複数のユーザーデータを扱うには異なる identifier を指定してください。


void MQDocument::DeleteMaterialUserData(int userdata_id);

userdata_id
材質ユーザーデータID

(new in Rev3.10)

MQDocument::CreateMaterialUserData() で生成された材質ユーザーデータを削除します。ドキュメント内の材質にユーザーデータが確保されている場合、この関数を呼び出したときに自動的に解放されます。

材質ユーザーデータIDの生成と削除は繰り返し行う必要はありません。プラグインがアンロードされるときなど、以降の処理で材質ユーザーデータが完全に不要になったときのみ呼び出してください。


int MQDocument::FindMaterialUserData(DWORD productID, DWORD pluginID, const char *identifier);

productID
プラグインの制作者ID
pluginID
プラグインのID
identifier
識別用の任意文字列(15文字まで)
戻り値
[0以外] 材質ユーザーデータID
[0] 取得失敗

(new in Rev3.10)

CreateMaterialUserData() で作成されたユーザーデータのIDを取得します。ユーザーデータが作成されていなければ0が返されます。


BOOL MQDocument::FindMappingFile(char *out_path, const char *filename, DWORD map_type);
BOOL MQDocument::FindMappingFile(wchar_t *out_path, const wchar_t *filename, DWORD map_type);

outpath
絶対パスを格納するバッファ (ANSIまたはワイド文字列)
filename
ファイル名 (ANSIまたはワイド文字列)
map_type
マッピング画像のタイプ
[MQMAPPING_TEXTURE] テクスチャマッピング
[MQMAPPING_ALPHA] 透明マッピング
[MQMAPPING_BUMP] バンプマッピング
[MQMAPPING_HLSL] HLSLシェーダ向けマッピング
戻り値
[TRUE] 変換成功
[FALSE] 変換失敗

(new in Rev2.10)

MQMaterial::GetTextureName(), GetAlphaName(), GetBumpName() で得られるファイル名を絶対パスに変換します。

outpath は MAX_PATH 以上のサイズを持つ必要があります。


BOOL MQDocument::GetMappingImageSize(const char *filename, DWORD map_type, int& width, int& height);
BOOL MQDocument::GetMappingImageSize(const wchar_t *filename, DWORD map_type, int& width, int& height);

filename
ファイル名 (ANSIまたはワイド文字列)
map_type
マッピング画像のタイプ
[MQMAPPING_TEXTURE] テクスチャマッピング
[MQMAPPING_ALPHA] 透明マッピング
[MQMAPPING_BUMP] バンプマッピング
width
[OUT] 画像の横ピクセル数
height
[OUT] 画像の縦ピクセル数
戻り値
[TRUE] 取得成功
[FALSE] 取得失敗

(new in Rev3.10)

指定されたファイル名のマッピング画像のサイズを取得します。

マッピング画像は既に読み込まれている必要があります。MQMaterial::SetTextureName()などで設定した直後にはまだ取得できません。


BOOL MQDocument::GetMappingImage(const char *filename, DWORD map_type, int& width, int& height, int& bpp, const RGBQUAD*& colors, const BYTE*& buffer);
BOOL MQDocument::GetMappingImage(const wchar_t *filename, DWORD map_type, int& width, int& height, int& bpp, const RGBQUAD*& colors, const BYTE*& buffer);

filename
ファイル名 (ANSIまたはワイド文字列)
map_type
マッピング画像のタイプ
[MQMAPPING_TEXTURE] テクスチャマッピング
[MQMAPPING_ALPHA] 透明マッピング
[MQMAPPING_BUMP] バンプマッピング
width
[OUT] 画像の横ピクセル数
height
[OUT] 画像の縦ピクセル数
bpp
[OUT] 1ピクセルあたりのビット数
colors
[OUT] カラーパレット
buffer
[OUT] 画像バッファ
戻り値
[TRUE] 取得成功
[FALSE] 取得失敗

(new in Rev4.10)

指定されたファイル名のマッピング画像を取得します。

マッピング画像は既に読み込まれている必要があります。MQMaterial::SetTextureName()などで設定した直後にはまだ取得できません。

bppが8以下の場合、colorsには色数分のカラーパレットが格納されています。8ビットより大きい画像の場合はカラーパレットを持たないためNULLが返されます。

bufferにはWindowsのDIBと互換性がある配置で画像データが格納されています。この内容を直接書き換えないでください。


std::wstring MQDocument::GetEnvironmentMapName();

戻り値
環境マップの名前

(new in Rev4.80)

環境マップの名前を取得します。


BOOL MQDocument::SetEnvironmentMapName(const std::wstring& name, BOOL show_progress);

name
環境マップの名前
show_progress
進捗ダイアログを表示するかどうか
戻り値
[TRUE] 成功
[FALSE] 失敗

(new in Rev4.80)

環境マップの名前を設定します。名前に一致するファイルがなければ FALSE が返されます。


float MQDocument::GetEnvironmentMapIntensity();

戻り値
環境マップの強度

(new in Rev4.80)

環境マップの強度を取得します。デフォルト値は0です。


void MQDocument::SetEnvironmentMapIntensity(float intensity);

intensity
環境マップの強度

(new in Rev4.80)

環境マップの強度を設定します。


float MQDocument::GetEnvironmentMapRotation();

戻り値
環境マップの回転角度(弧度単位)

(new in Rev4.80)

環境マップの回転角度を取得します。デフォルト値は0です。


void MQDocument::SetEnvironmentMapRotation(float rotation);

rotation
環境マップの回転角度(弧度単位)

(new in Rev4.80)

環境マップの回転角度を設定します。


UINT MQDocument::GetUVChannelID(const wchar_t *name);

name
UVチャンネル名
戻り値
UVチャンネルID

(new in Rev4.85)

UVチャンネルの名称からUVチャンネルIDを取得します。

初めて使用されるUVチャンネル名が指定された場合、新しいUVチャンネルIDが生成されます。


std::wstring MQDocument::GetUVChannelName(UINT channel);

name
UVチャンネルID
戻り値
UVチャンネル名

(new in Rev4.85)

UVチャンネルIDの名称を取得します。

0または存在しないチャンネルIDが指定された場合、空文字が返ります。


int MQDocument::GetMaxUVChannelNum();

戻り値
使用可能な最大UVチャンネル数

(new in Rev4.85)

使用可能な最大UVチャンネル数を取得します。

チャンネル数はMetasequoiaのエディションによって異なります。


MQScene MQDocument::GetScene(int index);

index
シーンのインデックス
戻り値
シーンクラス

(new in Rev2.10)

ドキュメントに割り当てられているシーンを取得します。

indexに0を指定するとパースペクティブビューが取得されます。現行バージョンではindexは0以外は指定しないで下さい。