Samstag, 17. Januar 2009

Terrain-Kollision?

Die Terrain-Kollision muss irgendwie gelöst werden. Normalerweise kann man einen Meshbuffer (oder auch ein ganzes Mesh) direkt in das Newton-Mesh Format umwandeln. Beim Terrain, das ja dynamisch von Irrlicht aus einer Height-Map generiert wird, funktioniert das seltsamerweise nicht.

Folgendes wurde bereits versucht (tscene ist ein ITerrainSceneNode*):
  • CDynamicMeshBuffer mb(video::EVT_STANDARD, video::EIT_32BIT);
    tscene->getMeshBufferForLOD(mb, SKTXTERR_LOD - 1);
    //spezielles level of detail verwenden
  • tscene->getRenderBuffer() //renderbuffer direkt verwenden
  • tscene->getMesh() //ganzes mesh verwenden
Möglichkeiten:
  • Kollision mit einem optimierten OctTreeTriangleSelector prüfen?
    Problem dabei: "händisch" dazupfuschen, stimmt natürlich nicht mit Physikengine überein!
    Bei der ersten Kollision => Explosion?
  1. Viele Rays erzeugen und prüfen, ob diese mit TriangleSelector kollidieren
  2. Mit Ellipsoid prüfen? - Wird allerdings eher bei FPS-Shooter eingesetzt, in diesem Fall wahrscheinlich eher unpassender...
  • ...?

Keine Kommentare:

Kommentar veröffentlichen