Aktuelle Zeit: 27.04.2024, 00:35

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
BeitragVerfasst: 10.09.2008, 21:45 
Offline

Registriert: 09.07.2008, 13:03
Beiträge: 14
Hallo,

ich habe mal wieder ein Problem ;).

Ich habe 4 große Quader (Cubes) aneinander gesetzt. Die Kamera guckt fast von Vogelperspektive drauf (allerdings mit einem kleinen Winkel). Die Cubes sind so groß, dass man die Kamera so positionieren kann, das nur die Oberfläche eines einzelnen Cubes im Sichtfeld liegt.
In diesem Fall möchte ich die anderen Cubes welche nicht im Sichtfeld liegen, verschieben.

Dazu muss ich also rausfinden ob die Kamera gerade nur einen erfasst oder nicht.
Also habe ich die Cubes in Boxen gelegt:

Code:
           
bbox[y] = tile[y]->getBoundingBox();
tile[y]->getAbsoluteTransformation().transformBoxEx(bbox[y]);
//tile[y] ist der entsprechende CubeNode

Danach übergebe ich die box und das Frustum an diese Funktion:

Code:
bool CGame::isBoxInView(const core::aabbox3d<f32>& box, const scene::SViewFrustum* view)
{
  for (s32 i=0; i < SViewFrustum::VF_PLANE_COUNT; i++)
  {
    switch (box.classifyPlaneRelation(view->planes[i]))
    {
      case core::ISREL3D_SPANNING:
        return true;

        case core::ISREL3D_FRONT:
         return false;
    }
  }
  return true;
}

Dummerweise spricht diese Funktion, egal welche Box ich übergebe immer an der selben Stelle an.
Woran könnte das liegen? Oder gibt es eine einfachere Möglichkeit das Problem zu lösen??

Danke Max

EDIT: Mal wieder den Wald vor lauter Bäumen nicht gesehen.
Es geht natürlich einfach, wenn auch nicht ganz so genau, aber für meine Zwecke reicht das.
Code:
   
    core::aabbox3d<f32> box = tile[2]->getTransformedBoundingBox();
    if ( pCamera->getViewFrustum()->getBoundingBox().intersectsWithBox(box) )
    printf(" tile 2 ");


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de