Autor Wątek: NxHeightField  (Przeczytany 628 razy)

Offline yoyuu

  • Użytkownik

# Czerwiec 06, 2010, 22:11:52
Witam. Czy możecie mi powiedzieć dlaczego obiekty przenikają mi przez teren, który został zrobiony za pomocą takiej funkcji:

numVertices - ilość wierzchołków, które tworzą mój teren
scale - odległość jednego wierzchołka od drugiego
dim - ilość wierzchołków w jednym wierszu lub w jednej kolumnie
hVert - jednowymiarowa tablica, w której przechowuję wierzchołki

NxActor *physics::createHeightField()
{
...

NxHeightFieldDesc heightFieldDesc;
heightFieldDesc.nbColumns = dim;
heightFieldDesc.nbRows = dim;
heightFieldDesc.convexEdgeThreshold = 0;

heightFieldDesc.samples = new NxU32[numVertices];
heightFieldDesc.sampleStride = sizeof(NxU32);

NxU8 *currentByte = (NxU8*)heightFieldDesc.samples;

for(int i=0; i < numVertices; i++)
{
NxHeightFieldSample *currentSample = (NxHeightFieldSample*)currentByte;

currentSample->height = (NxI16)hVert[i].pos.y;
currentSample->tessFlag = 0;

currentByte += heightFieldDesc.sampleStride;
}

NxHeightField *heightField = scene->getPhysicsSDK().createHeightField(heightFieldDesc);
delete [] heightFieldDesc.samples;

NxHeightFieldShapeDesc heightFieldShapeDesc;
heightFieldShapeDesc.heightField = heightField;
heightFieldShapeDesc.shapeFlags = NX_SF_FEATURE_INDICES | NX_SF_VISUALIZATION;
heightFieldShapeDesc.heightScale = 1;
heightFieldShapeDesc.rowScale = (float)scale;
heightFieldShapeDesc.columnScale = (float)scale;
heightFieldShapeDesc.materialIndexHighBits = 0;
heightFieldShapeDesc.holeMaterial = 2;

NxActorDesc actorDesc;
actorDesc.shapes.pushBack(&heightFieldShapeDesc);
actorDesc.body = NULL;
actorDesc.globalPose.t = NxVec3(0.0f,0.0f,0.0f);

NxActor *newActor = scene->createActor(actorDesc);
return newActor;

}

Wydaje mi się, że wszystko jest tak jak powinno być, ale mimo to nie chce działać.


Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Dab

  • Redaktor
    • blog

# Czerwiec 06, 2010, 23:05:15
Odpal Visual Debugger i sprawdź.