Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

Erkennen wenn object den Boden berührt (OpenGL)

  Alt 17. Jul 2008, 01:09
Bestimmt wieder ein frage für little dave

Wie der thread schon sagt möchte ich erkennen wenn meine CD den Boden berührt auf dem die Albums sich drehen.
Ich denke das gäbe einen feinen Effekt wenn ich dann diesen zu Wasser werden lasse.

hier wird der Quader erstellt
Delphi-Quellcode:
begin

  glDepthMask(ByteBool(GL_TRUE));

  // Kamera ausrichten, damit man was sieht
  glTranslatef(0, -7, -30);

  // Maus verarbeiten
  if FMousePos.X > 0 then
  begin
  if FMousePos.X < 30 then
     ListAngle := ListAngle - pi/4 * ADeltaTime
  else
  if FMousePos.X > _FNormal.Image1.Width - 30 then
     ListAngle := ListAngle + pi/4 * ADeltaTime;
  end;

  // Wichtig für die Spiegelung
  glDisable(GL_CULL_FACE);

  glEnable(GL_BLEND);
  // Jetzt spiegel wir alles an der x-z-Ebene
  glScalef(1, -1, 1);
  // Jetzt zeichnen wir zuerst die Reflektionen der Quads
  DrawQuads();

  glDisable(GL_BLEND);
  // Dann spiegel wir wieder zurück
  glScalef(1, -1, 1);
  // und zeichnen die eigentlichen Quads
  DrawQuads();

  // Jetzt brauchen wir Blending
  glEnable(GL_BLEND);
  // nun die Blending-Funktion setzen
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

  glBegin(GL_QUADS);
    glColor4f(0.0, 0.0, 0.0, 0.7); glVertex3f(-15, 0, 15);
    glColor4f(0.0, 0.0, 0.0, 0.7); glVertex3f(-15, 0,-15);
    glColor4f(0.0, 0.0, 0.0, 0.7); glVertex3f( 15, 0,-15);
    glColor4f(0.0, 0.0, 0.0, 0.7); glVertex3f( 15, 0, 15);
  glEnd();
  glDisable(GL_BLEND);

  glLoadIdentity;

end;
der unterste teil.

EDIT:
Lese mich mal im Wiki ein

gruss Emil
  Mit Zitat antworten Zitat