ich brauch mal hilfe Ich habe eine linie die beliebig im 3D Raum stehen kann. (ich habe einen punkt der linie + richtungsvektor).
Jetzt habe ich zusätzlich noch eine Kugel, welche auf der Linie hin und her gehen soll, und zwar immer so, das sie auf höhe des MausCursors ist (in X-Richtung).
hat da jemand eine idee wie ich das hinbekomme?
Hab hier nochmal ein Beispielbild gemacht wie ich das gern will:
Beispielbild 10KB
Aya~
// edit Lossy: Bild als Link. Weil hat doch eine recht große Auflösung.
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 2068
Programmiersprache: C++
Du hast deine Gerade g = Stützvektor + r * Richtungsvektor sowie deine Ebene E = Stützvektor + s * (1, 0, 0)^T + t * (0, 0, 1)^T
Den Stützvektor sowie den Richtungsvektor der Geraden hast du ja. Bei der Ebene ist der Stützvektor der Punkt auf den dein Mauszeiger zeigt (z.B. per gluUnproject).
Jetzt berechnest du einfach den Schnittpunkt der Geraden mit der Ebene. Diese Punkt ist dann die Position der Kugel.
Mir ist klar wie ich via glReadPixels ne tiefe auslese etc, nur... trotzdem ist mir nicht ganz klar welche tiefe... glReadPixels liest die tiefe an z.B der stelle wo ich hinklicke.. aber ich hab ka was ich wie zeichnen soll damit ich da die korrekte tiefe für die berechnung bekomme.
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 2068
Programmiersprache: C++
Du brauchst irgendwo an hinterster Stelle ein einfaches Quad mit der Hintergrundfarbe. Dieses gibt er dann zurück wenn nichts davor liegt.
Edit:
Brauchst du bei dem Beispiel noch Selektion und hast irgendwelche im Vordergrund? Ansonsten könntest du anstatt der Geraden ein unsichtbares (weil geblendetes) aber existierendes Quad zeichnen und direkt mit gluUnProject die Position auslesen. Dann wäre es nur noch eine Schnittpunktberechnung zwischen zwei Geraden.
also ich soll einfach irgendeine beliebige tiefe nehmen? Dann kann ich ja auch die FarClipping Plane benutzen o.Ä... aber so ganz verstehen tu ich leider immernochnicht wie du das genau meinst
Aya~
PS: Ich habe schon noch ne menge andere sachen in der Scene, aber könnte zur not einfach nen renderpass nur dafür machen.
Mitglieder in diesem Forum: 0 Mitglieder und 9 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.