AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Erkennen wenn object den Boden berührt (OpenGL)
Thema durchsuchen
Ansicht
Themen-Optionen

Erkennen wenn object den Boden berührt (OpenGL)

Ein Thema von EWeiss · begonnen am 17. Jul 2008 · letzter Beitrag vom 17. Jul 2008
Antwort Antwort
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#1

Re: Erkennen wenn object den Boden berührt (OpenGL)

  Alt 17. Jul 2008, 08:39
Zitat von EWeiss:
Bestimmt wieder ein frage für little dave
Welch eine Ehre

Zitat von EWeiss:
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.
Das ist an sich ein schon etwas aufwendigerer Effekt - dafür musst du bei dir wahrscheinlich einiges ändern: Das Grundprinzip wäre folgendes:
Zuerst solltest du die Reflektionen mit der finalen Rotation und Perspektive in eine Textur rendern (z.B. per FBO oder per glCopyTexSubImage). Diese Textur ist dann der "Inhalt" deiner Spiegelfläche, welche du dann mittels eines/mehrerer Quads zeichnest.
Da du jetzt den Inhalt in einer Textur hast, kannst du entweder per Shader oder per simples Vertex-Transforming eine Wasseroberfläche simulieren. Per Shader wäre zwar die modernere Variante, ist aber auch komplizierter da du die Wellen erst als Heightmap-Textur dynamisch erstellen musst und diese dann an den Shader weitergibst. Das Resultat kann sich dann aber sehen lassen. Als Beispiel mal ein Screenshot aus meiner Engine:
http://wiki.delphigl.com/images/thum...rial_step3.jpg

Über den genauen Ablauf des Render-Vorgangs gibt es hier ein sehr gutes Tutorial.

Wenn du aber nicht so sehr auf Shader stehen solltest (also dann die Vertex-Methode benutzen würdest), könntest du ja diese Methode von Sulaco etwas anpassen.

Und die Überprüfung, ob ein Objekt den Boden berührt, musst du komplett selbst übernehmen - für sowas ist OpenGL nicht da. Aber DGL-Luke hat ja schon den richtigen Ansatz für dich geliefert (wobei eine Sphere hier nicht so gut geeignet ist).
Für deinen Boden erstellst du zunächst eine Ebenengleichung mit a*x + b*y + c*z + d = 0, wobei a, b und c die einzelnen Komponenten des Normalenvektors der Ebene sind. In diese Gleichung setzt du dann einfach die Position des Mittelpunktes deines Objektes ein und bekommst dann den Abstand des Mittelpunktes zur Ebene. Wenn dieser Abstand jetzt kleiner-gleich der halben Höhe des Objektes, berührt dein Objekt den Boden.
Hoffe du verstehst wie ich das meine.

Grüße
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz