StillDesign / PhysX.Netによる布(2)

 ネイティブ側のエラーなので、勝手に終了したりするので、「StillDesign / PhysX.Net」のソースコードをビルドしてトレースをしました。

 エラー箇所はC#から見てCloth.ParticlePositionsプロパティの取得です。C++/CLIソースコードでは次のメソッドです。

array<Vector3>^ Cloth::ParticlePositions::get()

 その中で、次のコードで頂点の数を得ています。

int c = _cloth->getNumberOfParticles();

 次のコードは頂点をPhysXのバッファから取得する部分です。

_cloth->getPositions( buffer );

 この後、マネージドの配列へ丁寧にコピーするコードがあります。

 上記のbufferのサイズはcの頂点数に従って作られています。このcは、融合された後の少なくなった頂点数になっており、取得されるデータは融合される前の頂点数のため、bufferがオーバーランしている模様です。PhysX SDKにはパーティクル数と同じというような記述がありますが、うまく話がかみ合いません。

 結果的に元のサイズで取得できるような暫定のコードに変更してみたところ、エラーはなくなって、意図した結果が得られました。

 この現象はどう解消すべきなのでしょうか。