Hej. Nu var det ett bra tag sen jag satt med physx (bland annat eftersom det är jävligt jobbigt att arbeta mot closed source). Det jag senast har använt är Bullet; väldigt trevligt (och faktiskt mer korrekt, även om det är hyfsat ideellt). Tackar, jag bytte till en annan wrapper som funkar mycket bättre.. Nu funkar det att cooka meshen.. :DProblem med physx-sharp och skapa triangle meshes
Jag håller på att testa lite om physx-wrappern physx-sharp är nått att ha. http://imaginary-project.net/physx-sharp/
Jag har lyckats skapa enkla object som sfärer och kuber och även fått dem att påverkas av krafter etc..
Men nu vill jag även skapa triangle meshes för att kunna skapa lite mer avancerade actors..
Jag vet inte riktigt hur ajg sak gå tillväga, har saxat lite från C++ exemplen och från kod jag hitat på physx-sharp forumet.. men inget funkar..
private NxActor CreateActorFromFile(string filename)
{
MeshManager meshManager = new MeshManager();
NxActor actor = null;
NxVec3[] vertices;
int[] indices;
meshManager.GetMesh(filename, out vertices, out indices);
// create stream
NxStream stream = new NxStream();
NxTriangleMeshDesc meshDesc = new NxTriangleMeshDesc();
// go unsafe
unsafe
{
// fix pointers
fixed (int* pIndices = indices)
fixed (NxVec3* pVertices = vertices)
{
// assign pointers
meshDesc.triangles = new IntPtr((void*)pIndices);
meshDesc.points = new IntPtr((void*)pVertices);
meshDesc.pointStrideBytes = (uint)sizeof(NxVec3);
meshDesc.numVertices = (uint)vertices.Length;
meshDesc.numTriangles = (uint)indices.Length / 3;
meshDesc.triangleStrideBytes = 3 * sizeof(int);
meshDesc.flags = 0;
meshDesc.heightFieldVerticalAxis = NxHeightFieldAxis.NX_Z;
meshDesc.heightFieldVerticalExtent = -1000.0f;
// create mesh
NxCookingInterface cooking = PhysXLoader.NxGetCookingLib(PhysXLoader.NX_PHYSICS_SDK_VERSION);
bool cooked = cooking.NxCookTriangleMesh(meshDesc, stream);
}
}
NxTriangleMesh mesh = sdk.createTriangleMesh(stream);
return actor;
}
bool cooked blir = false och sedan crashar den när det försöker skapa meshen på raden efter...
"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
Sv: Problem med physx-sharp och skapa triangle meshes
Det första du bör kolla är så att du har vettiga värden i vertices och indices, och testa detta med en enda tetraeder, alt. en kub om du tycker det är enklare.
Om allt verkar vara korrekt finns det lite olika kompilatordirektiv som kan ställa till det i PhysX. Kolla upp vilka du ska använda, och dessutom grejer som att SDK är av korrekt version osv., och följ det noga.
Och vidare så har jag för mig att PhysX har en funktion typ "Vad var föregående felet". Lägg den före NxTriangleMesh-grejen, för att se vad PhysX själv säger är fel.Sv:Problem med physx-sharp och skapa triangle meshes