今回のSDKで頂点ごとに任意のデータをプラグインから割り当てることができるようになりました。これにより、例えばボーンやモーフに使用されるウェイトなどのデータを頂点に容易に割り当てることが出来ます。オブジェクトが複製されたときにはユーザーデータの内容もそのまま複製されます。
使用方法ですが残念ながらサンプルがありませんので、以下に簡単に記載します。
MQDocument::CreateVertexUserData()
まずこの関数を最初に呼び出して、頂点ユーザーデータIDを作成します。頂点ごとに割り当てるデータのサイズはここで指定します。複数回呼び出すと、複数のユーザーデータを管理できます。
MQObject::AllocVertexUserData()
頂点ユーザーデータIDに対応するメモリ領域をオブジェクトに確保します。同じIDで複数回呼び出しても確保される領域は1つだけなので、ユーザーデータの取得・設定の前にとりあえず毎回呼び出しても問題ありません。
MQObject::SetVertexUserData()
指定した頂点にユーザーデータを設定します。
MQObject::GetVertexUserData()
頂点に設定されたユーザーデータを取得します。
基本はこの4つです。あと解放用の関数にMQDocument::DeleteVertexUserData()とMQObject::FreeVertexUserData()がありますが、ドキュメント・オブジェクトの削除時に自動的に解放されるので、必ず呼び出さないといけないということはありません。
ただし、まだ現時点ではテスト実装なので、SDKの仕様については今後変更になる可能性が大です。特にウェイトを割り当てる目的だと頂点ごとに固定長ではなく可変長のデータサイズが必要になることを考慮しても、仕様として中途半端な気がしています。ですので、試しに実装してみて速度面などに問題がないか、あるいは仕様についての提言などをコメントまたはSDK用BBSにいただけると幸いです。何の意見もなければ・・・見送りにするかもしれません。
また、このBeta版用のSDKで作成したプラグインは配布しないでください。配布すると仕様変更に対応できなくなるので危険です。
※5/28 23:40 ヘッダが一部おかしかったので差し替え版mqsdk310_beta1_a.zipを用意しました。