MQBoneManagerクラス

(new in Rev4.64)

MQBoneManager クラスはMetasequoia 4に標準搭載されている「ボーン」プラグイン BoneDeformer.dll とアクセスするためのラッパークラスです。

Rev4.70でボーン構造がノード単位で管理されるようになったのに伴い、互換性のない大幅な変更が行われました。

クラス
MQBoneManager コンストラクタ
メンバ関数
BeginImport インポート開始
EndImport インポート終了

MQBoneManager::MQBoneManager(MQBasePlugin *plugin, MQDocument doc);

plugin
プラグイン
doc
ドキュメント

コンストラクタです。


static DWORD MQBoneManager::GetProductID();

ボーンプラグインのプロダクトIDを取得します。


static DWORD MQBoneManager::GetPluginID();

ボーンプラグインのプラグインIDを取得します。


bool MQBoneManager::Verified();

ボーンプラグインが利用可能かどうかを取得します。


void MQBoneManager::BeginImport();

インポートを開始します。

Importプラグイン内で使用する場合、ボーン・スキンオブジェクトを追加する前にこの関数を呼び出す必要があります。


void MQBoneManager::EndImport();

インポートを終了します。

Importプラグイン内でBeginImport()を呼び出してボーン・スキンオブジェクトを追加した後に、この関数を呼び出す必要があります。


UINT MQBoneManager::AddBone(const ADD_BONE_PARAM& param);

ボーンを追加します。


bool MQBoneManager::AddBrother(UINT bone_id, UINT brother_bone_id);

兄弟ボーンを追加します。

Rev4.70で廃止されました。


int MQBoneManager::GetBoneNum();

ボーン数を取得します。


int MQBoneManager::EnumBoneID(std::vector& bone_id_array);

ボーンIDを列挙します。


bool MQBoneManager::GetName(UINT bone_id, std::wstring& name);

void MQBoneManager::SetName(UINT bone_id, const wchar_t *name);

ボーンの名前を取得・設定します。


bool MQBoneManager::GetTipName(UINT bone_id, std::wstring& name);

void MQBoneManager::SetTipName(UINT bone_id, const wchar_t *tip_name);

ボーンの先端の名前を取得・設定します。

Rev4.70で廃止されました。


bool MQBoneManager::GetParent(UINT bone_id, UINT& parent_id);

void MQBoneManager::SetParent(UINT bone_id, UINT parent_id);

ボーンの親ボーンIDを取得・設定します。


bool MQBoneManager::GetChildNum(UINT bone_id, int& child_num);

ボーンの子ボーンの数を取得します。


bool MQBoneManager::GetChildren(UINT bone_id, std::vector<UINT>& children);

ボーンの子ボーンIDを取得します。


bool MQBoneManager::GetBrothers(UINT bone_id, std::vector<UINT>& brothers);

ボーンの兄弟ボーンIDを取得します。

Rev4.70で廃止されました。


bool MQBoneManager::GetBaseRootPos(UINT bone_id, MQPoint& pos);

void MQBoneManager::SetBaseRootPos(UINT bone_id, const MQPoint& pos);

ボーンの変形前の根の位置を取得・設定します。

Rev4.70で廃止され、GetBasePos()に代替されました。


bool MQBoneManager::GetBaseTipPos(UINT bone_id, MQPoint& pos);

void MQBoneManager::SetBaseTipPos(UINT bone_id, const MQPoint& pos);

ボーンの変形前の先端の位置を取得・設定します。

Rev4.70で廃止され、GetBasePos()に代替されました。


bool MQBoneManager::GetBasePos(UINT bone_id, MQPoint& pos);

void MQBoneManager::SetBasePos(UINT bone_id, const MQPoint& pos);

ボーンの変形前の位置を取得・設定します。


bool MQBoneManager::GetBaseMatrix(UINT bone_id, MQMatrix& matrix);

ボーンの変形前の座標変換行列を取得します。


bool MQBoneManager::GetUpVector(UINT bone_id, MQMatrix& matrix);

void MQBoneManager::SetUpVector(UINT bone_id, const MQMatrix matrix);

ボーンのアップベクターを取得・設定します。


bool MQBoneManager::GetDeformRootPos(UINT bone_id, MQPoint& pos);

ボーンの変形後の根の位置を取得します。

Rev4.70で廃止され、GetDeformPos()に代替されました。


bool MQBoneManager::GetDeformTipPos(UINT bone_id, MQPoint& pos);

ボーンの変形後の先端の位置を取得します。

Rev4.70で廃止され、GetDeformPos()に代替されました。


bool MQBoneManager::GetDeformPos(UINT bone_id, MQPoint& pos);

ボーンの変形後の位置を取得します。


bool MQBoneManager::GetDeformMatrix(UINT bone_id, MQMatrix& matrix);

ボーンの変形後の座標変換行列を取得します。


bool MQBoneManager::GetDeformScale(UINT bone_id, MQPoint& scale);

void MQBoneManager::SetDeformScale(UINT bone_id, const MQPoint& scale);

ボーンの変形後のスケールを取得・設定します。


bool MQBoneManager::GetDeformRotate(UINT bone_id, MQAngle& angle);

void MQBoneManager::SetDeformRotate(UINT bone_id, const MQAngle& angle);

ボーンの変形後の回転角を取得・設定します。


bool MQBoneManager::GetDeformTranslate(UINT bone_id, MQPoint& translate);

void MQBoneManager::SetDeformTranslate(UINT bone_id, const MQPoint& translate);

ボーンの変形後の移動量を取得・設定します。


bool MQBoneManager::GetRotationMatrix(UINT bone_id, MQMatrix& matrix);

ボーンの回転行列を取得します。


bool MQBoneManager::GetAngleMin(UINT bone_id, MQAngle& angle);

void MQBoneManager::SetAngleMin(UINT bone_id, const MQAngle& angle);

ボーンの回転角制限の最小値を取得・設定します。


bool MQBoneManager::GetAngleMax(UINT bone_id, MQAngle& angle);

void MQBoneManager::SetAngleMax(UINT bone_id, const MQAngle& angle);

ボーンの回転角制限の最大値を取得・設定します。


bool MQBoneManager::GetVisible(UINT bone_id, bool& visible);

void MQBoneManager::SetVisible(UINT bone_id, bool visible);

ボーンの可視設定を取得・設定します。


bool MQBoneManager::GetLock(UINT bone_id, bool& lock);

void MQBoneManager::SetLock(UINT bone_id, bool lock);

ボーンのロック設定を取得・設定します。


bool MQBoneManager::GetDummy(UINT bone_id, bool& dummy);

void MQBoneManager::SetDummy(UINT bone_id, bool dummy);

ボーンのダミー設定を取得・設定します。


bool MQBoneManager::GetIKChain(UINT bone_id, int& chain);

void MQBoneManager::SetIKChain(UINT bone_id, int chain);

ボーンのIKチェイン設定を取得・設定します。

Rev4.70で値の定義が変更され、0でIKチェインなし、1以上で階層分たどった親ボーンがIKのルート側ボーンとなります。


bool MQBoneManager::GetEndPoint(UINT bone_id, bool& end_point);

void MQBoneManager::SetEndPoint(UINT bone_id, bool end_point);

ボーンの先端ノード設定を取得・設定します。

Rev4.70で廃止されました。


bool MQBoneManager::GetMovable(UINT bone_id, bool& movable);

void MQBoneManager::SetMovable(UINT bone_id, bool movable);

ボーンの根の移動可否設定を取得・設定します。


int MQBoneManager::GetSkinObjectNum();

スキンオブジェクトの数を取得します。


int MQBoneManager::EnumSkinObjectID(std::vector<UINT>& obj_id_array);

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


bool MQBoneManager::AddSkinObject(MQObject obj);

スキンオブジェクトを追加します。


int MQBoneManager::GetVertexWeightArray(MQObject obj, UINT vertex_id, int array_num, UINT *bone_ids, float *weights);

obj
スキンオブジェクト
vertex_id
頂点のユニークID
array_num
ボーン・ウェイトの配列のサイズ
bone_ids
ボーンIDを格納する配列
weights
ウェイト(0~100)を格納する配列
戻り値
格納されたボーン・ウェイト数

指定した頂点に影響するボーンとウェイトを取得します。

array_numはbone_ids, weightsの配列のサイズを指定します。実際にウェイトが割り当てられているボーン数がarray_numを超えた場合、ウェイトの値の小さいものが切り捨てられます。すべてのボーンのウェイトを確実に取得したい場合、GetBoneNum()と同じ数の配列を用意します。

bone_ids, weightsにはウェイトの値が大きいものから降順となるよう各ボーンのウェイトが対として格納されます。


bool MQBoneManager::SetVertexWeight(MQObject obj, UINT vertex_id, UINT bone_id, float weight);

obj
スキンオブジェクト
vertex_id
頂点のユニークID
bone_id
ボーンID
weight
ウェイト(0~100)
戻り値
成功したかどうか

指定した頂点にボーンのウェイトを設定します。


int MQBoneManager::GetWeightedVertexArray(UINT bone_id, MQObject obj, std::vector<UINT>& vertex_ids, std::vector& weights);

bone_id
ボーンID
obj
スキンオブジェクト
vertex_ids
頂点のユニークID
weights
ウェイト(0~100)
戻り値
影響する頂点数

指定したボーンが影響する頂点とウェイトを一括取得します。


bool MQBoneManager::GetTipBone(UINT bone_id, UINT& tip_bone_id);

bool MQBoneManager::GetIKName(UINT bone_id, std::wstring& ik_name, std::wstring& ik_tip_name);

bool MQBoneManager::GetIKParent(UINT bone_id, UINT& ik_parent_bone_id, bool& isIK);

bool MQBoneManager::GetLink(UINT bone_id, LINK_PARAM& param);

bool MQBoneManager::GetGroupID(UINT bone_id, UINT& group_id);

void MQBoneManager::SetTipBone(UINT bone_id, UINT tip_bone_id);

void MQBoneManager::SetIKName(UINT bone_id, const wchar_t *ik_name, const wchar_t *ik_tip_name);

void MQBoneManager::SetIKParent(UINT bone_id, UINT ik_parent_bone_id, bool isIK);

void MQBoneManager::SetLink(UINT bone_id, const LINK_PARAM& param);

void MQBoneManager::SetGroupID(UINT bone_id, UINT group_id);

int MQBoneManager::EnumGroups(std::vector<UINT>& group_ids);

UINT MQBoneManager::AddGroup(const wchar_t *name);

bool MQBoneManager::GetGroupName(UINT group_id, std::wstring& name);

PMD向けの関数です。


int MQBoneManager::GetEffectLimitNum();

頂点ごとに影響するボーンの最大数を取得します。0なら制限はありません。


MQBoneManager::LIST_MODE MQBoneManager::GetListMode();

ボーンリストの表示モードを取得します。

Rev4.70で廃止されました。


void MQBoneManager::SetListMode(LIST_MODE mode);

ボーンリストの表示モードを設定します。

Rev4.70で廃止されました。


bool MQBoneManager::DeformObject(MQObject obj, MQObject target);

obj
スキンオブジェクト
target
objを複製したもの
戻り値
可否

ボーン情報に基づいてスキンオブジェクトの複製に変形を反映します。スキンオブジェクトを直接変形させることはできません。