MQObjectクラス

MQObjectクラスは、オブジェクト中の頂点や面に関する情報を保持します。

基本操作
DeleteThis オブジェクトクラスをデリート(消滅)させます
GetUniqueID オブジェクトのユニークIDを取得します
GetType オブジェクトの種類を取得します
SetType オブジェクトの種類を設定します
Clone オブジェクトクラスの複製を作成します
Clear オブジェクト内の頂点・面をすべて削除します
Merge 2つのオブジェクトを合成します
Freeze 曲面や鏡面などの属性をフリーズさせて完全にポリゴン化します
GetName オブジェクトの名前を取得します
SetName オブジェクトの名前を設定します
GetSelected オブジェクトの選択状態を取得します
SetSelected オブジェクトの選択状態を設定します
頂点
GetVertexCount 頂点の数を取得します
GetVertex 頂点の位置を取得します
SetVertex 頂点の位置を設定します
GetVertexArray すべての頂点の位置を配列として一括取得します
AddVertex 頂点を追加します
DeleteVertex 頂点を削除します
GetVertexRefCount 頂点の参照数を取得します
GetVertexUniqueID 頂点に割り当てられているユニークIDを取得します
GetVertexIndexFromUniqueID ユニークIDが割り当てられている頂点のインデックスを取得します
GetVertexRelatedFaces 頂点を割り当てている面の一覧を取得します。
GetVertexWeight 頂点の曲面に対する重みを取得します
SetVertexWeight 頂点の曲面に対する重みを設定します
CopyVertexAttribute 属性を別の頂点にコピーします
GetFaceCount 面数を取得します
GetFacePointCount 面に属する頂点の数を取得します
GetFacePointArray 面の頂点インデックスを配列として取得します
GetFaceCoordinateArray 面の各頂点のUV値を配列として取得します
SetFaceCoordinateArray 面の各頂点のUV値を配列として設定します
GetFaceVertexColor 面内の頂点の頂点カラーを取得します
SetFaceVertexColor 面内の頂点の頂点カラーを設定します
GetFaceVertexNormal 面内の頂点の法線とエッジの折目を取得します。
SetFaceVertexNormal 面内の頂点の法線とエッジの折目を設定します
GetFaceEdgeCrease 面内のエッジの先鋭度を取得します
SetFaceEdgeCrease 面内のエッジの先鋭度を設定します
GetFaceVisible 面の表示・非表示を取得します
SetFaceVisible 面の表示・非表示をを設定します
GetFaceMaterial 面に割り当てられたマテリアルのインデックスを取得します
SetFaceMaterial 面にマテリアルを割り当てます
GetFaceUniqueID 面に割り当てられているユニークIDを取得します
GetFaceIndexFromUniqueID ユニークIDが割り当てられている面のインデックスを取得します
AddFace 面を追加します
InsertFace 面を指定したインデックスに追加します
DeleteFace 面を削除します
InvertFace 面の向きを反転します
諸操作
OptimizeVertex 指定距離以下にある頂点を結合します
Compact 頂点・面のインデックスを切り詰めます
属性
GetVisible オブジェクトの表示・非表示状態を取得します
SetVisible オブジェクトの表示・非表示状態を設定します
GetPatchType 曲面のタイプを取得します
SetPatchType 曲面のタイプを設定します
GetPatchSegment 曲面の分割数を取得します
SetPatchSegment 曲面の分割数を設定します
GetPatchTriangle Catmull-Clark曲面の三角形の分割方法を取得します
SetPatchTriangle Catmull-Clark曲面の三角形の分割方法を設定します
GetPatchSmoothTriangle OpenSubdiv曲面の三角形のスムージング方法を取得します
SetPatchSmoothTriangle OpenSubdiv曲面の三角形のスムージング方法を設定します
GetPatchLimitSurface OpenSubdiv曲面の極限サーフェス適用を取得します
SetPatchLimitSurface OpenSubdiv曲面の極限サーフェス適用を設定します
GetPatchMeshInterp OpenSubdiv曲面の面の境界の補間方法を取得します
SetPatchMeshInterp OpenSubdiv曲面の面の境界の補間方法を設定します
GetPatchUVInterp OpenSubdiv曲面の面の境界の補間方法を取得します
SetPatchUVInterp OpenSubdiv曲面の面の境界の補間方法を設定します
GetShading スムージングのタイプを取得します
SetShading スムージングのタイプを設定します
GetSmoothAngle スムージング角度を取得します
SetSmoothAngle スムージング角度を設定します
GetMirrorType 鏡面のタイプを取得します
SetMirrorType 鏡面のタイプを設定します
GetMirrorAxis 鏡面の座標軸を取得します
SetMirrorAxis 鏡面の座標軸を設定します
GetMirrorDistance 鏡面の接続距離を取得します
SetMirrorDistance 鏡面の接続距離を設定します
GetLatheType 回転体のタイプを取得します
SetLatheType 回転体のタイプを設定します
GetLatheAxis 回転体の座標軸を取得します
SetLatheAxis 回転体の座標軸を設定します
GetLatheSegment 回転体の分割数を取得します
SetLatheSegment 回転体の分割数を設定します
GetDepth 階層の深さを取得します
SetDepth 階層の深さを設定します
GetFolding 子オブジェクトを折りたたんで非表示にしているかどうかを取得します
SetFolding 子オブジェクトを折りたたんで非表示にしているかどうかを設定します
GetLocking 編集禁止になっているかどうかを取得します
SetLocking 編集禁止にするかどうかを設定します
GetColor 頂点・辺の表示色を取得します
SetColor 頂点・辺の表示色を設定します
GetColorValid 頂点・辺の表示色が有効かを取得します
SetColorValid 頂点・辺の表示色が有効かを設定します
ローカル座標
GetScaling ローカル座標変換行列の拡大成分を取得します
SetScaling ローカル座標変換行列の拡大成分を設定します
GetRotation ローカル座標変換行列の回転成分を取得します
SetRotation ローカル座標変換行列の回転成分を設定します
GetTranslation ローカル座標変換行列の移動成分を取得します
SetTranslation ローカル座標変換行列の移動成分を設定します
GetLocalMatrix ローカル座標の変換行列を取得します
SetLocalMatrix ローカル座標の変換行列を設定します
GetLocalInverseMatrix ローカル座標の逆変換行列を取得します
光源パラメータ
GetLightValue 光源オブジェクトの光強度を取得します
SetLightValue 光源オブジェクトの光強度を設定します
GetLightAttenuation 光源オブジェクトの光減衰度を取得します
SetLightAttenuation 光源オブジェクトの光減衰度を設定します
GetLightFallOffEnd 光源オブジェクトの光減衰の終了距離を取得します
SetLightFallOffEnd 光源オブジェクトの光減衰の終了距離を設定します
GetLightFallOffHalf 光源オブジェクトの光減衰の半減距離を取得します
SetLightFallOffHalf 光源オブジェクトの光減衰の半減距離を設定します
描画フラグ
AddRenderFlag 指定項目を描画時に強制的に表示します
RemoveRenderFlag 指定項目の強制表示を取りやめます
AddRenderEraseFlag 指定項目を描画時に強制的に非表示にします
RemoveRenderEraseFlag 指定項目の強制非表示を取りやめます
ユーザーデータ
AllocUserData オブジェクトユーザーデータの確保
FreeUserData オブジェクトユーザーデータの解放
GetUserData オブジェクトユーザーデータの取得
GetUserDataPart オブジェクトユーザーデータの部分取得
SetUserData オブジェクトユーザーデータの設定
SetUserDataPart オブジェクトユーザーデータの部分設定
AllocVertexUserData 頂点ユーザーデータの確保
FreeVertexUserData 頂点ユーザーデータの解放
GetVertexUserData 頂点ユーザーデータの取得
GetVertexUserDataPart 頂点ユーザーデータの部分取得
SetVertexUserData 頂点ユーザーデータの設定
SetVertexUserDataPart 頂点ユーザーデータの部分設定
AllocFaceUserData 面ユーザーデータの確保
FreeFaceUserData 面ユーザーデータの解放
GetFaceUserData 面ユーザーデータの取得
GetFaceUserDataPart 面ユーザーデータの部分取得
SetFaceUserData 面ユーザーデータの設定
SetFaceUserDataPart 面ユーザーデータの部分設定

void MQObject::DeleteThis(void);

オブジェクトクラスをデリート(消滅)させます。

この関数はドキュメントに登録されていないオブジェクトにのみ有効で、ドキュメントに登録されたオブジェクトを消滅させる場合はMQDocument::DeleteObject()を使用しなければなりません。


UINT MQObject::GetUniqueID(void);

戻り値
ユニークID

(new in Rev2.40)

オブジェクトのユニークIDを取得します。

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


int MQObject::GetType(void);

戻り値
オブジェクトの種類
[MQOBJECT_TYPE_NORMAL] 通常オブジェクト
[MQOBJECT_TYPE_POINT_LIGHT] 点光源
[MQOBJECT_TYPE_DIRECTIONAL_LIGHT] 平行光源

(new in Rev3.00)

オブジェクトの種類を取得します。


void MQObject::SetType(int type);

type
オブジェクトの種類
[MQOBJECT_TYPE_NORMAL] 通常オブジェクト
[MQOBJECT_TYPE_POINT_LIGHT] 点光源
[MQOBJECT_TYPE_DIRECTIONAL_LIGHT] 平行光源

(new in Rev3.00)

オブジェクトの種類を設定します。


MQObject MQObject::Clone(void);

戻り値
複製されたオブジェクトクラス

オブジェクトクラスの複製を作成します。


void MQObject::ClearAllFaces(void);

(new in Rev4.59)

オブジェクト内の頂点・面をすべて削除します。


void MQObject::Merge(MQObject source);

source
合成元オブジェクトクラス

sourceのオブジェクトクラスをthisへ合成します。sourceの内容は変化しません。


void MQObject::Freeze(DWORD flag);

flag
各属性のフラグ(複数指定可)
[MQOBJECT_FREEZE_PATCH] 曲面
[MQOBJECT_FREEZE_MIRROR] 鏡面
[MQOBJECT_FREEZE_LATHE] 回転体
[MQOBJECT_FREEZE_ALL] すべての属性

曲面や鏡面などの属性をフリーズさせて完全にポリゴン化します。


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

std::string MQObject::GetName();

std::wstring MQObject::GetNameW();

buffer
名前を格納するバッファ
size
バッファの大きさ
戻り値
オブジェクト名(ANSIまたはワイド文字列)

引数付きの関数ではオブジェクトの名前をbufferへ格納します。引数なしの関数ではANSIまたはワイド文字列として名前を取得します。


void MQObject::SetName(const char *buffer);

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

オブジェクトの名前をセットします。


BOOL MQObject::GetSelected();

戻り値
選択状態

(new in Rev3.10)

オブジェクトの選択状態を取得します。

この選択状態はオブジェクトパネル上で複数選択したときの状態を示します。カレントオブジェクトについてはMQDocument::GetCurrentObjectIndex()で取得します。


void MQObject::SetSelected(BOOL flag);

flag
選択状態

(new in Rev3.10)

オブジェクトの選択状態を設定します。

この選択状態はオブジェクトパネル上で複数選択したときの状態を示します。カレントオブジェクトについてはMQDocument::SetCurrentObjectIndex()で設定します。


int MQObject::GetVertexCount(void);

戻り値
頂点配列の要素数

頂点の数を取得します。

実際に存在する頂点数ではなく配列要素の大きさであるので、正確な頂点数を調べるには各頂点ごとにMQObject::GetVertexRefCount()で0以外が返されるかどうかを調べる必要があります。


MQPoint MQObject::GetVertex(int index);

index
頂点のインデックス
戻り値
頂点位置

指定した頂点の位置を取得します。

MQObject::GetVertexRefCount()で0以外が返される頂点にのみ呼び出して下さい。


void MQObject::SetVertex(int index, MQPoint pts);

index
頂点のインデックス
pts
頂点位置

指定した頂点の位置を設定します。


void MQObject::GetVertexArray(MQPoint *ptsarray);

ptsarray
位置配列

オブジェクト中のすべての頂点の位置を配列として一括取得します。

ptsarrayの配列要素数はMQObject::GetVertexCount()で返される数以上でなければなりません。


int MQObject::AddVertex(MQPoint p);

p
頂点の位置
戻り値
追加された頂点のインデックス

頂点を追加します。

メモリ不足で頂点データが確保できない場合は-1が返ります。


BOOL MQObject::DeleteVertex(int index);

index
頂点のインデックス
戻り値
削除の成功の可否

頂点を削除します。

オブジェクト中のどれかの面が指定した頂点を持つ場合は、その面もいっしょに削除されます。

削除後もMQObject::GetVertexCount()の数は変化せず、削除されたインデックスへMQObject::GetVertexRefCount()は0を返すようになります。


int MQObject::GetVertexRefCount(int index);

index
頂点のインデックス
戻り値
参照カウント

頂点がどれだけの面で使われているかを取得します。0が返された場合、頂点は存在しないことを示します。

MQObject::AddVertex()により参照数は1がセットされ、MQObject::AddFace()で指定されるごとに値が1つずつ増え、MQObject::DeleteFace()により1つずつ減ります。


UINT MQObject::GetVertexUniqueID(int index);

index
頂点のインデックス
戻り値
頂点のユニークID

(new in Rev2.40)

指定した頂点に割り当てられているユニークIDを取得します。

ユニークIDはオブジェクト中の他の頂点と重複しない値です。Compact() などによりインデックスが変更されてもユニークIDは変わらないため、特定の頂点の認識に用いることができます。


int MQObject::GetVertexIndexFromUniqueID(UINT unique_id);

unique_id
頂点のユニークID
戻り値
頂点のインデックス(見つからない場合は-1)

(new in Rev2.40)

指定したユニークIDが割り当てられている頂点のインデックスを取得します。頂点が削除されたり、元々存在しないユニークIDを指定した場合には-1が返ります。


UINT MQObject::GetVertexRelatedFaces(int vertex, int *faces);

vertex
頂点のインデックス
faces
面のインデックスを格納する配列
戻り値
面の数

(new in Rev3.00)

指定した頂点を割り当てている面を取得します。MQObject::GetFacePointArray()で総当りで探索するよりも高速に処理できます。

facesにNULLを指定した場合、面の数のみを取得します。

facesにNULL以外を指定した場合、面のインデックスが格納されます。facesは戻り値で返される数以上の配列である必要があります。


DWORD MQObject::GetVertexColor(int index);

index
頂点のインデックス
戻り値

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

32ビットのダブルワード値のうち、0xFF000000をマスクすることで頂点カラーが有効であるかどうかを調べます。マスク結果が0の場合頂点カラーは無効であり、0xFF000000の場合は有効です。有効の場合は0x000000FFが赤、0x0000FF00で緑、0x00FF0000青を示します。

 

(in Rev2.30) 頂点カラーの保持方法の変更に伴い、GetVertexColor()は正しい動作を保証しません。MQObject::GetFaceVertexColor()に置き換える必要があります。

(in Rev2.40) この関数は廃止されました。


void MQObject::SetVertexColor(int index, DWORD color);

index
頂点のインデックス
color

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

頂点カラーを消去するするときはcolorに0を、有効にするときは0xFF000000に各色の値をORします。

 

(in Rev2.30) 頂点カラーの保持方法の変更に伴い、SetVertexColor()は正しい動作を保証しません。MQObject::SetFaceVertexColor()に置き換える必要があります。

(in Rev2.40) この関数は廃止されました。


float MQObject::GetVertexWeight(int index);

index
頂点のインデックス
戻り値
ウェイト

頂点の曲面に対する重みを取得します。

ウェイトは0から1までの値になります。


void MQObject::SetVertexWeight(int index, float value);

index
頂点のインデックス
value
ウェイト

頂点の曲面に対する重みを設定します。

valueは0から1までの値でなければなりません。


void MQObject::CopyVertexAttribute(int vert1, MQObject obj2, int vert2);

vert1
オブジェクト中の頂点のインデックス
obj2
ソースのオブジェクト
vert2
obj2中の頂点のインデックス

obj2中のvert2頂点に割り当てられた、位置を除いて隠し・固定・頂点カラー・ウェイトなどの属性をvert1にコピーします。


int MQObject::GetFaceCount(void);

戻り値
面配列の要素数

面数を取得します。

実際に存在する面数ではなく配列要素の大きさであるので、正確な面数を得るには各面ごとにMQObject::GetFacePointCount()で0以外が返されるかどうかを調べる必要があります。


int MQObject::GetFacePointCount(int face);

face
面のインデックス
戻り値
頂点数

指定した面に属する頂点の数を取得します。

0の場合はMQObject::DeleteFace()により既に破棄され存在していないことを示します。

(in Rev4.00)

多角形が扱えるようになったため、従来の4以下だけではなく5以上の数も返されます。


void MQObject::GetFacePointArray(int face, int *vertex);

face
面のインデックス
vertex
頂点インデックスを格納するバッファ

指定した面の頂点インデックスを配列として取得します。

vertexはMQObject::GetFacePointCount()で得られる数以上の大きさをもつ配列でなければなりません。


void MQObject::GetFaceCoordinateArray(int face, MQCoordinate *uvarray);

face
面のインデックス
uvarray
UV値を格納するバッファ

指定した面の各頂点のUV値を配列として取得します。

uvarrayはMQObject::GetFacePointCount()で得られる数以上の大きさをもつ配列でなければなりません。


void MQObject::SetFaceCoordinateArray(int face, MQCoordinate *uvarray);

face
面のインデックス
uvarray
UV値を格納したバッファ

指定した面の各頂点のUV値を配列として設定します。

uvarrayはMQObject::GetFacePointCount()で得られる数以上の大きさをもつ配列でなければなりません。


DWORD MQObject::GetFaceVertexColor(int face, int vertex);

face
面のインデックス
vertex
面内頂点のインデックス
戻り値

(new in Rev2.30)

指定した面内の頂点の頂点カラーを取得します。

vertexはMQObject::GetFacePointCount()で得られる数未満でなければなりません。

32ビットのダブルワード値のうち、0xFF000000が不透明度、0x000000FFが赤、0x0000FF00で緑、0x00FF0000が青を示します。


void MQObject::SetFaceVertexColor(int face, int vertex, DWORD color);

face
面のインデックス
vertex
面内頂点のインデックス
color

(new in Rev2.30)

指定した面内の頂点の頂点カラーを設定します。

vertexはMQObject::GetFacePointCount()で得られる数未満でなければなりません。

32ビットのダブルワード値のうち、0xFF000000が不透明度、0x000000FFが赤、0x0000FF00で緑、0x00FF0000が青を示します。


void MQObject::GetFaceVertexNormal(int face, int vertex, BYTE& flag, MQPoint& normal);

face
面のインデックス
vertex
面内の頂点・辺のインデックス
flag
法線フラグ
[MQOBJECT_NORMAL_HARD_EDGE] 面内の辺に対する折目の指定
[MQOBJECT_NORMAL_FIX] 面内の頂点に対する固定法線の指定
normal
法線

(new in Rev4.60)

指定した面内の頂点に対して法線を取得し、辺に対して折目を取得します。

vertexはMQObject::GetFacePointCount()で得られる数未満でなければなりません。


void MQObject::SetFaceVertexNormal(int face, int vertex, int type, MQPoint normal);

face
面のインデックス
vertex
面内の頂点・辺のインデックス
flag
法線フラグ
[MQOBJECT_NORMAL_HARD_EDGE] 面内の辺に対する折目の指定
[MQOBJECT_NORMAL_FIX] 面内の頂点に対する固定法線の指定
normal
法線

(new in Rev4.60)

指定した面内の頂点に対して法線を設定し、辺に対して折目を設定します。

vertexはMQObject::GetFacePointCount()で得られる数未満でなければなりません。


float MQObject::GetFaceEdgeCrease(int face, int line);

face
面のインデックス
line
辺のインデックス
戻り値
先鋭度
[0] 先鋭化しない
[1] 先鋭化する

(new in Rev3.10)

指定した面内の辺に対して、曲面用のエッジ先鋭度を取得します。

lineはMQObject::GetFacePointCount()で得られる数未満でなければなりません。


void MQObject::SetFaceEdgeCrease(int face, int line, float crease);

face
面のインデックス
line
辺のインデックス
crease
先鋭度
[0] 先鋭化しない
[1] 先鋭化する

(new in Rev3.10)

指定した面内の辺に対して、曲面用のエッジ先鋭度を設定します。

lineはMQObject::GetFacePointCount()で得られる数未満でなければなりません。

creaseにはCatmull-Clark曲面へは0または1、OpenSubdiv曲面へは0以上の値を指定します。


BOOL MQObject::GetFaceVisible(int face);

face
面のインデックス
戻り値
表示・非表示

(new in Rev3.00)

指定した面の表示・非表示を取得します。

視点や表示オプションに基づくシーン内の現在の表示状態を取得するにはMQScene::GetVisibleFace()を用います。


void MQObject::SetFaceVisible(int face, BOOL flag);

face
面のインデックス
flag
表示・非表示

(new in Rev3.00)

指定した面の表示・非表示を設定します。


int MQObject::GetFaceMaterial(int face);

face
面のインデックス
戻り値
マテリアルのインデックス

面に割り当てられたマテリアルのインデックスを取得します。インデックスはオブジェクトが属するドキュメント中のものになります。

どのマテリアルも割り当てられていない「未着色面」の場合は-1が返されます。


void MQObject::SetFaceMaterial(int face, int material);

face
面のインデックス
material
マテリアルのインデックス

指定した面にマテリアルを割り当てます。


UINT MQObject::GetFaceUniqueID(int face);

face
面のインデックス
戻り値
面のユニークID

(new in Rev2.40)

指定した面に割り当てられているユニークIDを取得します。

ユニークIDはオブジェクト中の他の面と重複しない値です。Compact() などによりインデックスが変更されてもユニークIDは変わらないため、特定の面の認識に用いることができます。


int MQObject::GetFaceIndexFromUniqueID(UINT unique_id);

unique_id
面のユニークID
戻り値
面のインデックス(見つからない場合は-1)

(new in Rev2.40)

指定したユニークIDが割り当てられている面のインデックスを取得します。面が削除されたり、元々存在しないユニークIDを指定した場合には-1が返ります。


int MQObject::AddFace(int count, int *index);

count
頂点の個数
index
頂点インデックス配列へのポインタ
戻り値
追加された面のインデックス

面を追加します。

面は index に格納された count 個の頂点インデックスをもちます。countが2の場合は辺を意味します。

メモリ不足で面データが確保できない場合は-1が返ります。


int MQObject::InsertFace(int face_index, int count, int *vert_index);

face_index
面のインデックス
count
頂点の個数
vert_index
頂点インデックス配列へのポインタ
戻り値
追加された面のインデックス (成功した場合はface_indexと同じ値)

(new in Rev4.10)

face_indexで指定されたインデックスに面を追加します。face_indexはMQObject::DeleteFace()で削除されている必要があります。

面は index に格納された count 個の頂点インデックスをもちます。countが2の場合は辺を意味します。

指定したインデックスに既に面が存在している場合や、メモリ不足で面データが確保できない場合は-1が返ります。


BOOL MQObject::DeleteFace(int index);

index
面のインデックス
戻り値
削除の成功の可否

面を削除します。

削除した面に属する頂点のうち、この面にしか属していないものは、自動的に削除されます。

削除後も MQObject::GetFaceCount() の数は変化せず、削除された面インデックスへ MQObject::GetFacePointCount() は0を返すようになります。


BOOL MQObject::InvertFace(int index);

index
面のインデックス
戻り値
反転の成功の可否

面の向きを反転します。


void MQObject::OptimizeVertex(float distance, MQBool *apply);

distance
結合させる距離
apply
頂点ごとの適用の可否

オブジェクト中の distance 以下の距離にある頂点を結合します。

配列数が頂点と同じ数を持つ apply がセットされている場合、頂点ごとに結合させるかどうかを決定することができます。apply が NULL の場合、すべての頂点が結合の対象となります。

DXFのように、頂点情報が独立して存在せずに、面情報に直接頂点位置が記述されたファイルを読み込んだ後、このAPIを用いると非常に有効です。


void MQObject::Compact(void);

オブジェクト中に存在する MQObject::GetVertexRefCount() で0を返す頂点や、 MQObject::GetFacePointCount() で0を返す面を切りつめて、配列のサイズを小さくします。

切り詰めた後はインデックスが変化することに注意して下さい。

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


DWORD MQObject::GetVisible(void);

戻り値
[0] 非表示
[0以外] 表示

オブジェクトの表示・非表示状態を取得します。

戻り値は将来のバージョンでビットマスクによって頂点・辺・面の表示状態を示すように変更する予定です。


void MQObject::SetVisible(DWORD visible);

visible
[0] 非表示
[0xFFFFFFFF] 表示

オブジェクトの表示・非表示状態を設定します。

引数は将来のバージョンでビットマスクによって頂点・辺・面の表示状態を示すように変更する予定です。


DWORD MQObject::GetPatchType(void);

戻り値
曲面のタイプ
[MQOBJECT_PATCH_NONE] なし
[MQOBJECT_PATCH_SPLINE1] スプライン-タイプ1
[MQOBJECT_PATCH_SPLINE2] スプライン-タイプ2
[MQOBJECT_PATCH_CATMULL] Catmull-Clark曲面 (new in Rev2.30)
[MQOBJECT_PATCH_OPENSUBDIV] OpenSubdiv曲面 (new in Rev4.00)

オブジェクトに割り当てられた曲面のタイプを取得します。


void MQObject::SetPatchType(DWORD type);

type
曲面のタイプ(GetPatchTypeと同じ)

オブジェクトに曲面のタイプを割り当てます。


int MQObject::GetPatchSegment(void);

戻り値
分割数

オブジェクトの曲面の分割数を取得します。


void MQObject::SetPatchSegment(int segment);

segment
分割数

オブジェクトに曲面の分割数を設定します。


BOOL MQObject::GetPatchTriangle(void);

戻り値
分割方法 [TRUE] 三角形に分割
[FALSE] 四角形に分割

(new in Rev3.10)

Catmull-Clark曲面生成時の三角形の分割タイプを取得します。


void MQObject::SetPatchTriangle(BOOL flag);

flag
分割方法
[TRUE] 三角形に分割
[FALSE] 四角形に分割

(new in Rev3.10)

Catmull-Clark曲面生成時の三角形の分割タイプを設定します。


BOOL MQObject::GetPatchSmoothTriangle(void);

戻り値
スムージング方法
[TRUE] スムージングを行う
[FALSE] スムージングを行わない

(new in Rev4.20)

OpenSubdiv曲面生成時の三角形のスムージング方法を取得します。


void MQObject::SetPatchSmoothTriangle(BOOL flag);

flag
スムージング方法
[TRUE] スムージングを行う
[FALSE] スムージングを行わない

(new in Rev4.20)

OpenSubdiv曲面生成時の三角形のスムージング方法を設定します。


BOOL MQObject::GetPatchLimitSurface(void);

戻り値
極限サーフェス
[TRUE] 極限サーフェスを適用する
[FALSE] 極限サーフェスを適用しない

(new in Rev4.51)

OpenSubdiv曲面生成時の極限サーフェスへの適用を行うかを取得します。


void MQObject::SetPatchLimitSurface(BOOL flag);

flag
極限サーフェス
[TRUE]極限サーフェスを適用する
[FALSE]極限サーフェスを適用しない

(new in Rev4.51)

OpenSubdiv曲面生成時の極限サーフェスへの適用を行うかを設定します。


int MQObject::GetPatchMeshInterp(void);

戻り値
補間方法
[MQOBJECT_INTERP_EDGE_ONLY] エッジのみ
[MQOBJECT_INTERP_EDGE_AND_CORNER] エッジと角

(new in Rev4.30)

OpenSubdiv曲面生成時の開いた面の境界の補間方法を取得します。


void MQObject::SetPatchMeshInterp(int interp);

interp
補間方法
[MQOBJECT_INTERP_EDGE_ONLY] エッジのみ
[MQOBJECT_INTERP_EDGE_AND_CORNER] エッジと角

(new in Rev4.30)

OpenSubdiv曲面生成時の開いた面の境界の補間方法を設定します。


int MQObject::GetPatchUVInterp(void);

戻り値
補間方法
[MQOBJECT_UVINTERP_NONE] なし
[MQOBJECT_UVINTERP_CORNERS_ONLY] 角のみ
[MQOBJECT_UVINTERP_CORNERS_PLUS1] 角+1
[MQOBJECT_UVINTERP_CORNERS_PLUS2] 角+2
[MQOBJECT_UVINTERP_BOUNDARIES] 境界
[MQOBJECT_UVINTERP_ALL] すべて

(new in Rev4.30)

OpenSubdiv曲面生成時の開いたUVの境界の補間方法を取得します。

(in Rev4.51) 戻り値がメッシュ用と異なる専用の値へ変更されました。(互換性は保持されます)


void MQObject::SetPatchUVInterp(int interp);

interp
補間方法
[MQOBJECT_UVINTERP_NONE] なし
[MQOBJECT_UVINTERP_CORNERS_ONLY] 角のみ
[MQOBJECT_UVINTERP_CORNERS_PLUS1] 角+1
[MQOBJECT_UVINTERP_CORNERS_PLUS2] 角+2
[MQOBJECT_UVINTERP_BOUNDARIES] 境界
[MQOBJECT_UVINTERP_ALL] すべて

(new in Rev4.30)

OpenSubdiv曲面生成時の開いたUVの境界の補間方法を設定します。

(in Rev4.51) 引数がメッシュ用と異なる専用の値へ変更されました。(互換性は保持されます)


int MQObject::GetShading(void);

戻り値
[MQOBJECT_SHADE_FLAT] スムージングなし
[MQOBJECT_SHADE_GOURAUD] スムージングあり

(new in Rev2.10)

オブジェクトに設定されているスムージングのタイプを取得します。


void MQObject::SetShading(int type);

type
[MQOBJECT_SHADE_FLAT] スムージングなし
[MQOBJECT_SHADE_GOURAUD] スムージングあり

(new in Rev2.10)

オブジェクトにスムージングのタイプを設定します。


float MQObject::GetSmoothAngle(void);

戻り値
スムージング角度

(new in Rev2.10)

オブジェクトに設定されているスムージング角度を取得します。

角度は0から180までの値になります。


void MQObject::SetSmoothAngle(float degree);

degree
スムージング角度

(new in Rev2.10)

オブジェクトにスムージング角度を設定します。

角度は0から180までの値を指定します。


int MQObject::GetMirrorType(void);

戻り値
鏡面のタイプ
[MQOBJECT_MIRROR_NONE] なし
[MQOBJECT_MIRROR_NORMAL] 左右分離鏡面
[MQOBJECT_MIRROR_JOIN] 左右接続鏡面

(new in Rev2.10)

オブジェクトに設定されている鏡面のタイプを取得します。


void MQObject::SetMirrorType(int type);

type
鏡面のタイプ
[MQOBJECT_MIRROR_NONE] なし
[MQOBJECT_MIRROR_NORMAL] 左右分離鏡面
[MQOBJECT_MIRROR_JOIN] 左右接続鏡面

(new in Rev2.10)

オブジェクトに鏡面のタイプを設定します。


DWORD MQObject::GetMirrorAxis(void);

戻り値
鏡面の座標軸(複数同時指定可)
[MQOBJECT_MIRROR_AXIS_X] X軸
[MQOBJECT_MIRROR_AXIS_Y] Y軸
[MQOBJECT_MIRROR_AXIS_Z] Z軸
[MQOBJECT_MIRROR_AXIS_LOCAL] ローカル座標 (new in Rev2.40)

(new in Rev2.10)

オブジェクトに設定されている鏡面の座標軸を取得します。


void MQObject::SetMirrorAxis(DWORD axis);

axis
鏡面の座標軸(複数同時指定可)
[MQOBJECT_MIRROR_AXIS_X] X軸
[MQOBJECT_MIRROR_AXIS_Y] Y軸
[MQOBJECT_MIRROR_AXIS_Z] Z軸
[MQOBJECT_MIRROR_AXIS_LOCAL] ローカル座標 (new in Rev2.40)

(new in Rev2.10)

オブジェクトに鏡面の座標軸を設定します。


float MQObject::GetMirrorDistance(void);

戻り値
接続距離

(new in Rev2.10)

オブジェクトに設定されている鏡面の接続距離を取得します。


void MQObject::SetMirrorDistance(float dis);

dis
接続距離

(new in Rev2.10)

オブジェクトに鏡面の接続距離を設定します。


int MQObject::GetLatheType(void);

戻り値
回転体のタイプ
[MQOBJECT_LATHE_NONE] なし
[MQOBJECT_LATHE_BOTH] 両面の回転体

(new in Rev2.10)

オブジェクトに設定されている回転体のタイプを取得します。


void MQObject::SetLatheType(int type);

type
回転体のタイプ
[MQOBJECT_LATHE_NONE] なし
[MQOBJECT_LATHE_BOTH] 両面の回転体

(new in Rev2.10)

オブジェクトに回転体のタイプを設定します。


DWORD MQObject::GetLatheAxis(void);

戻り値
回転体の座標軸
[MQOBJECT_LATHE_X] X軸
[MQOBJECT_LATHE_Y] Y軸
[MQOBJECT_LATHE_Z] Z軸

(new in Rev2.10)

オブジェクトに設定されている回転体の座標軸を取得します。


void MQObject::SetLatheAxis(DWORD axis);

axis
回転体の座標軸
[MQOBJECT_LATHE_X] X軸
[MQOBJECT_LATHE_Y] Y軸
[MQOBJECT_LATHE_Z] Z軸

(new in Rev2.10)

オブジェクトに回転体の座標軸を設定します。


int MQObject::GetLatheSegment(void);

戻り値
分割数

(new in Rev2.10)

オブジェクトに設定されている回転体の分割数を取得します。


void MQObject::SetLatheSegment(int segment);

segment
分割数

(new in Rev2.10)

オブジェクトに回転体の分割数を設定します。


int MQObject::GetDepth(void);

戻り値
階層の深さ

(new in Rev2.40)

オブジェクトの階層の深さを取得します。ルート直下にあるオブジェクトは0を返します。

Clone()では階層の深さは複製されません。


void MQObject::SetDepth(int depth);

depth
階層の深さ

(new in Rev2.40)

オブジェクトの階層の深さを設定します。

深さを設定する際はオブジェクトがドキュメントに登録されている必要があります。深さを設定する際は、階層の不整合が生じないよう注意してください。


BOOL MQObject::GetFolding(void);

戻り値
子階層が折りたたまれているか

(new in Rev2.40)

オブジェクトパネル上で子オブジェクトを折りたたんで非表示にしているかどうかを取得します。


void MQObject::SetFolding(BOOL flag);

flag
子階層を折りたたむか

(new in Rev2.40)

オブジェクトパネル上で子オブジェクトを折りたたんで非表示にしているかどうかを設定します。


BOOL MQObject::GetLocking(void);

戻り値
編集禁止かどうか

(new in Rev2.40)

オブジェクトが編集禁止になっているかどうかを取得します。


void MQObject::SetLocking(BOOL flag);

flag
編集禁止かどうか

(new in Rev2.40)

オブジェクトを編集禁止または編集可能に設定します。


MQColor MQObject::GetColor(void);

戻り値
頂点・辺の表示色

(new in Rev2.40)

オブジェクトの頂点・辺の表示色を取得します。


void MQObject::SetColor(MQColor color);

color
頂点・辺の表示色

(new in Rev2.40)

オブジェクトの頂点・辺の表示色を取得します。

SetColorValid()でTRUEを指定しないと、設定した色は表示に反映されません。


BOOL MQObject::GetColorValid(void);

戻り値
頂点・辺の表示色が有効か

(new in Rev2.40)

オブジェクトの頂点・辺の表示色が有効かを取得します。

無効の場合、オブジェクトに設定された色ではなくデフォルトの表示色で表示されます。


void MQObject::SetColorValid(BOOL flag);

color
頂点・辺の表示色が有効か

(new in Rev2.40)

オブジェクトの頂点・辺の表示色を有効にするかを設定します。

無効の場合、オブジェクトに設定された色ではなくデフォルトの表示色で表示されます。


MQPoint MQObject::GetScaling(void);

戻り値
ローカル座標の拡大率

(new in Rev2.40)

ローカル座標変換行列の拡大成分を取得します。


void MQObject::SetScaling(MQPoint scale);

scale
ローカル座標の拡大率

(new in Rev2.40)

ローカル座標変換行列の拡大成分を設定します。


MQAngle MQObject::GetRotation(void);

戻り値
ローカル座標の回転角

(new in Rev2.40)

ローカル座標変換行列の回転成分を取得します。


void MQObject::SetRotation(MQAngle angle);

angle
ローカル座標の回転角

(new in Rev2.40)

ローカル座標変換行列の回転成分を設定します。


MQPoint MQObject::GetTranslation(void);

戻り値
ローカル座標の移動量

(new in Rev2.40)

ローカル座標変換行列の移動成分を取得します。


void MQObject::SetTranslation(MQPoint trans);

angle
ローカル座標の移動量

(new in Rev2.40)

ローカル座標変換行列の移動成分を設定します。


MQMatrix MQObject::GetLocalMatrix(void);

戻り値
ローカル座標の変換行列

(new in Rev2.40)

ローカル座標の変換行列を取得します。


void MQObject::SetLocalMatrix(const MQMatrix& mtx);

mtx
ローカル座標の変換行列

(new in Rev2.40)

ローカル座標の変換行列を設定します。


MQMatrix MQObject::GetLocalInverseMatrix(void);

戻り値
ローカル座標の逆変換行列

(new in Rev2.40)

ローカル座標の逆変換行列を取得します。


float MQObject::GetLightValue(void);

戻り値
光強度

(new in Rev3.00)

光源オブジェクトの光強度を取得します。


void MQObject::SetLightValue(float value);

value
光強度

(new in Rev3.00)

光源オブジェクトの光強度を設定します。


int MQObject::GetLightAttenuation(void);

戻り値
光減衰度
[0] 減衰なし
[1] 線形
[2] 2次関数

(new in Rev3.00)

光源オブジェクトの光減衰度を取得します。


void MQObject::SetLightAttenuation(int value);

value
光減衰度
[0] 減衰なし
[1] 線形
[2] 2次関数

(new in Rev3.00)

光源オブジェクトの光減衰度を設定します。


float MQObject::GetLightFallOffEnd(void);

戻り値
光減衰の終了距離

(new in Rev3.00)

光源オブジェクトの光減衰の終了距離を取得します。


void MQObject::SetLightAttenuation(float distance);

distance
光減衰の終了距離

(new in Rev3.00)

光源オブジェクトの光減衰の終了距離を設定します。


float MQObject::GetLightFallOffHalf(void);

戻り値
光減衰の半減距離

(new in Rev3.00)

光源オブジェクトの光減衰の半減距離を取得します。


void MQObject::SetLightFallOffHalf(float distance);

distance
光減衰の半減距離

(new in Rev3.00)

光源オブジェクトの光減衰の半減距離を設定します。


void MQObject::AddRenderFlag(MQOBJECT_RENDER_FLAG flag);

flag
描画フラグの種類
[MQOBJECT_RENDER_POINT] 点の表示
[MQOBJECT_RENDER_LINE] 辺の表示
[MQOBJECT_RENDER_FACE] 面の表示
[MQOBJECT_RENDER_OVERWRITELINE] 辺の上書き表示
[MQOBJECT_RENDER_OVERWRITEFACE] 面の上書き表示
[MQOBJECT_RENDER_ALPHABLEND] 半透明表示
[MQOBJECT_RENDER_MULTILIGHT] 複数光源表示
[MQOBJECT_RENDER_SHADOW] 影の表示
[MQOBJECT_RENDER_TEXTURE] テクスチャの表示 (new in Rev4.59)
[MQOBJECT_RENDER_VERTEXCOLOR] 頂点カラーの表示 (new in Rev4.59)
[MQOBJECT_RENDER_VERTEXCOLOR_POINT] 点を頂点カラーで表示 (new in Rev4.30)
[MQOBJECT_RENDER_SCREEN] 頂点の位置をスクリーン座標で指定 (new in Rev4.50)

(new in Rev4.02)

指定した項目の表示を強制的に有効にします。

この関数は通常MQStationPlugin::CreateDrawingObject()で作成した描画オブジェクトに対して適用します。


void MQObject::RemoveRenderFlag(MQOBJECT_RENDER_FLAG flag);

flag
描画フラグの種類
[MQOBJECT_RENDER_POINT] 点の表示
[MQOBJECT_RENDER_LINE] 辺の表示
[MQOBJECT_RENDER_FACE] 面の表示
[MQOBJECT_RENDER_OVERWRITELINE] 辺の上書き表示
[MQOBJECT_RENDER_OVERWRITEFACE] 面の上書き表示
[MQOBJECT_RENDER_ALPHABLEND] 半透明表示
[MQOBJECT_RENDER_MULTILIGHT] 複数光源表示
[MQOBJECT_RENDER_SHADOW] 影の表示
[MQOBJECT_RENDER_TEXTURE] テクスチャの表示 (new in Rev4.59)
[MQOBJECT_RENDER_VERTEXCOLOR] 頂点カラーの表示 (new in Rev4.59)
[MQOBJECT_RENDER_VERTEXCOLOR_POINT] 点を頂点カラーで表示 (new in Rev4.30)
[MQOBJECT_RENDER_SCREEN] 頂点の位置をスクリーン座標で指定 (new in Rev4.50)

(new in Rev4.02)

指定した項目の強制表示を無効化し、元の状態に戻します。


void MQObject::AddRenderEraseFlag(MQOBJECT_RENDER_FLAG flag);

flag
描画フラグの種類
[MQOBJECT_RENDER_POINT] 点の表示
[MQOBJECT_RENDER_LINE] 辺の表示
[MQOBJECT_RENDER_FACE] 面の表示
[MQOBJECT_RENDER_OVERWRITELINE] 辺の上書き表示
[MQOBJECT_RENDER_OVERWRITEFACE] 面の上書き表示
[MQOBJECT_RENDER_ALPHABLEND] 半透明表示
[MQOBJECT_RENDER_MULTILIGHT] 複数光源表示
[MQOBJECT_RENDER_SHADOW] 影の表示
[MQOBJECT_RENDER_TEXTURE] テクスチャの表示 (new in Rev4.59)
[MQOBJECT_RENDER_VERTEXCOLOR] 頂点カラーの表示 (new in Rev4.59)
[MQOBJECT_RENDER_VERTEXCOLOR_POINT] 点を頂点カラーで表示 (new in Rev4.30)
[MQOBJECT_RENDER_SCREEN] 頂点の位置をスクリーン座標で指定 (new in Rev4.50)

(new in Rev4.02)

指定した項目を強制的に非表示にします。

この関数は通常MQStationPlugin::CreateDrawingObject()で作成した描画オブジェクトに対して適用します。


void MQObject::RemoveRenderEraseFlag(MQOBJECT_RENDER_FLAG flag);

flag
描画フラグの種類
[MQOBJECT_RENDER_POINT] 点の表示
[MQOBJECT_RENDER_LINE] 辺の表示
[MQOBJECT_RENDER_FACE] 面の表示
[MQOBJECT_RENDER_OVERWRITELINE] 辺の上書き表示
[MQOBJECT_RENDER_OVERWRITEFACE] 面の上書き表示
[MQOBJECT_RENDER_ALPHABLEND] 半透明表示
[MQOBJECT_RENDER_MULTILIGHT] 複数光源表示
[MQOBJECT_RENDER_SHADOW] 影の表示
[MQOBJECT_RENDER_TEXTURE] テクスチャの表示 (new in Rev4.59)
[MQOBJECT_RENDER_VERTEXCOLOR] 頂点カラーの表示 (new in Rev4.59)
[MQOBJECT_RENDER_VERTEXCOLOR_POINT] 点を頂点カラーで表示 (new in Rev4.30)
[MQOBJECT_RENDER_SCREEN] 頂点の位置をスクリーン座標で指定 (new in Rev4.50)

(new in Rev4.02)

指定した項目の強制非表示を無効化し、元の状態に戻します。


BOOL MQObject::AllocUserData(int userdata_id);

userdata_id
オブジェクトユーザーデータID
戻り値
[TRUE] 確保成功
[FALSE] 確保失敗

(new in Rev3.10)

オブジェクトにユーザーデータ用の領域を確保します。

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

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

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


void MQObject::FreeUserData(int userdata_id);

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

(new in Rev3.10)

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

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


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

userdata_id
オブジェクトユーザーデータID
buffer
ユーザーデータを格納するバッファ
戻り値
[TRUE] 取得成功
[FALSE] 取得失敗

(new in Rev3.10)

オブジェクトのユーザーデータを取得します。

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

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


BOOL MQObject::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::CreateObjectUserData() で指定されたバイト数が転送されます。

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


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

userdata_id
オブジェクトユーザーデータID
buffer
ユーザーデータが格納されたバッファ
戻り値
[TRUE] 設定成功
[FALSE] 設定失敗

(new in Rev3.10)

オブジェクトのユーザーデータを設定します。

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

確保されていないオブジェクトユーザーデータIDに対して取得を行うとFALSEが返ります。


BOOL MQObject::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::CreateObjectUserData() で指定されたバイト数が転送されます。

確保されていないオブジェクトユーザーデータIDに対して取得を行うとFALSEが返ります。


BOOL MQObject::AllocVertexUserData(int userdata_id);

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

(new in Rev3.10)

オブジェクトに頂点ユーザーデータ用の領域を確保します。

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

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

頂点ユーザーデータはむやみに確保するとメモリが浪費され、また頂点追加・削除にかかる時間が増大するため、実際に設定する必要が出るまでは確保しないでください。


void MQObject::FreeVertexUserData(int userdata_id);

userdata_id
頂点ユーザーデータID

(new in Rev3.10)

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

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


BOOL MQObject::GetVertexUserData(int userdata_id, int vertex_index, void *buffer);

userdata_id
頂点ユーザーデータID
vertex_index
頂点のインデックス
buffer
頂点ユーザーデータを格納するバッファ
戻り値
[TRUE] 取得成功
[FALSE] 取得失敗

(new in Rev3.10)

頂点のユーザーデータを取得します。1つの頂点に対して取得できます。

vertex_index で指定された頂点に割り当てられている頂点ユーザーデータを buffer に格納します。

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

確保されていない頂点ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。また、MQObject::SetVertexUserData() でユーザーデータが設定されていない頂点に対して取得を行うと buffer にはすべて0が格納されます。


BOOL MQObject::GetVertexUserDataPart(int userdata_id, int vertex_start_index, int copy_vertex_num, int offset, int copy_bytes, void *buffer);

userdata_id
頂点ユーザーデータID
vertex_start_index
頂点の開始インデックス
copy_vertex_num
開始インデックスからの面の数
offset
1つの頂点のデータの先頭からのオフセット
copy_bytes
頂点ごとのデータの転送バイト数
buffer
頂点ユーザーデータを格納するバッファ
戻り値
[TRUE] 設定成功
[FALSE] 設定失敗

(new in Rev3.10)

頂点のユーザーデータを部分的に取得します。1つまたは複数の頂点に対して一括して取得できます。

データを vertex_start_index で始まる copy_vertex_num 個の頂点のユーザーデータを一括して buffer に格納します。

buffer は copy_vertex_num*copy_bytes で示されるバイト数の領域である必要があります。

offset と copy_bytes を指定することで頂点ごとのユーザーデータのうち一部のみを書き換えることができます。 copy_bytes に 0 を指定すると頂点ユーザーデータ全体、つまりMQDocument::CreateVertexUserData() で指定されたバイト数が転送されます。

確保されていない頂点ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。


BOOL MQObject::SetVertexUserData(int userdata_id, int vertex_index, const void *buffer);

userdata_id
頂点ユーザーデータID
vertex_index
頂点のインデックス
buffer
頂点ユーザーデータが格納されたバッファ
戻り値
[TRUE] 設定成功
[FALSE] 設定失敗

(new in Rev3.10)

頂点のユーザーデータを設定します。1つの頂点に対して設定できます。

buffer に格納されているデータを vertex_index で指定された頂点のユーザーデータとして設定します。

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

確保されていない頂点ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。


BOOL MQObject::SetVertexUserDataPart(int userdata_id, int vertex_start_index, int copy_vertex_num, int offset, int copy_bytes, const void *buffer);

userdata_id
頂点ユーザーデータID
vertex_start_index
頂点の開始インデックス
copy_vertex_num
開始インデックスからの面の数
offset
1つの頂点のデータの先頭からのオフセット
copy_bytes
頂点ごとのデータの転送バイト数
buffer
頂点ユーザーデータが格納されたバッファ
戻り値
[TRUE] 設定成功
[FALSE] 設定失敗

(new in Rev3.10)

頂点のユーザーデータを部分的に設定します。1つまたは複数の頂点に対して一括して設定できます。

buffer に格納されているデータを vertex_start_index で始まる copy_vertex_num 個の頂点に対して一括してユーザーデータとして設定します。

buffer は copy_vertex_num*copy_bytes で示されるバイト数の領域である必要があります。

offset と copy_bytes を指定することで頂点ごとのユーザーデータのうち一部のみを書き換えることができます。 copy_bytes に 0 を指定すると頂点ユーザーデータ全体、つまりMQDocument::CreateVertexUserData() で指定されたバイト数が転送されます。

確保されていない頂点ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。


BOOL MQObject::AllocFaceUserData(int userdata_id);

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

(new in Rev3.10)

オブジェクトに面ユーザーデータ用の領域を確保します。

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

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

面ユーザーデータはむやみに確保するとメモリが浪費され、また面追加・削除にかかる時間が増大するため、実際に設定する必要が出るまでは確保しないでください。


void MQObject::FreeFaceUserData(int userdata_id);

userdata_id
面ユーザーデータID

(new in Rev3.10)

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

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


BOOL MQObject::GetFaceUserData(int userdata_id, int face_index, void *buffer);

userdata_id
面ユーザーデータID
face_index
面のインデックス
buffer
面ユーザーデータを格納するバッファ
戻り値
[TRUE] 取得成功
[FALSE] 取得失敗

(new in Rev3.10)

face_index で指定された面に割り当てられている面ユーザーデータを buffer に格納します。

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

確保されていない面ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。また、MQObject::SetFaceUserData() でユーザーデータが設定されていない面に対して取得を行うと buffer にはすべて0が格納されます。


BOOL MQObject::GetFaceUserDataPart(int userdata_id, int face_start_index, int copy_face_num, int offset, int copy_bytes, void *buffer);

userdata_id
面ユーザーデータID
face_start_index
面の開始インデックス
copy_face_num
開始インデックスからの面の数
offset
1つの面のデータの先頭からのオフセット
copy_bytes
面ごとのデータの転送バイト数
buffer
面ユーザーデータを格納するバッファ
戻り値
[TRUE] 取得成功
[FALSE] 取得失敗

(new in Rev3.10)

面のユーザーデータを部分的に取得します。1つまたは複数の面に対して一括して取得できます。

face_start_index で始まる copy_face_num 個の面に割り当てられている面ユーザーデータを buffer に格納します。

buffer は copy_face_num*copy_bytes で示されるバイト数の領域である必要があります。

offset と copy_bytes を指定することで面ごとのユーザーデータのうち一部のみを取得することができます。 copy_bytes に 0 を指定すると面ユーザーデータ全体、つまりMQDocument::CreateFaceUserData() で指定されたバイト数が転送されます。

確保されていない面ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。また、MQObject::SetFaceUserData() でユーザーデータが設定されていない面に対して取得を行うと buffer にはすべて0が格納されます。


BOOL MQObject::SetFaceUserData(int userdata_id, int face_index, const void *buffer);

userdata_id
面ユーザーデータID
face_index
面のインデックス
buffer
面ユーザーデータが格納されたバッファ
戻り値
[TRUE] 設定成功
[FALSE] 設定失敗

(new in Rev3.10)

buffer に格納されているデータを face_index で指定された面のユーザーデータとして設定します。

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

確保されていない面ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。


BOOL MQObject::SetFaceUserDataPart(int userdata_id, int face_start_index, int copy_face_num, int offset, int copy_bytes, const void *buffer);

userdata_id
面ユーザーデータID
face_start_index
面の開始インデックス
copy_face_num
開始インデックスからの面の数
offset
1つの面のデータの先頭からのオフセット
copy_bytes
面ごとのデータの転送バイト数
buffer
面ユーザーデータが格納されたバッファ
戻り値
[TRUE] 設定成功
[FALSE] 設定失敗

(new in Rev3.10)

面のユーザーデータを部分的に設定します。1つまたは複数の面に対して一括して設定できます。

buffer に格納されているデータを face_start_index で始まる copy_face_num 個の面に対して一括してユーザーデータとして設定します。

buffer は copy_face_num*copy_bytes で示されるバイト数の領域である必要があります。

offset と copy_bytes を指定することで面ごとのユーザーデータのうち一部のみを書き換えることができます。 copy_bytes に 0 を指定すると面ユーザーデータ全体、つまりMQDocument::CreateFaceUserData() で指定されたバイト数が転送されます。

確保されていない面ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。