Markierungen in OpenGL



  • Hallo

    Möchte auf einer Figur, die ich mit MilkShape erstellt und dann eingefügt habe, Markierungen anbringen. Dachte mir, wenn ich mit der Maus an die entsprechende Stelle klicke und diese Koordinaten abfrage, kann ich ja diese Werte als Wert für einen in OpenGL gezeichneten Punkt verwenden.
    Dachte ich mir so. Geht aber nicht.
    Der Punkt erscheint zwar am Bildschirm, allerdings nicht an der richtigen Stelle und auch nur wenn ich die Koordinaten der Maus durch 100 teile. Ich nehem an, dass ich mit zwei verschiedenen Koordinatensysteme arbeite. Zum einen mit dem von C#, das den Ursprung links oben hat und von dem ich die Koordinaten abfrage. Zum anderen mit dem von OpenGL das den Ursprung in der Mitte meines panels, in dem ich zeichne, hat.
    Kann ich eines der beiden Koordinatensysteme umskalieren?? mit glTranslate gehts nicht.

    oder hat jemand eine bessere/einfachere Lösung für mich??



  • Das Stichwort heißt "Picking"...
    Im Prinzip mußt Du eine Gerade abschiessen die an den Mauskoordinaten die Near-Plane schneidet.



  • Nullpunkt in die Mitte bekommst du einfach, indem du die Hälfte der Breite/Höhe von den Koordinaten abziehst.

    Bye, TGGC (Der Held ist zurück)



  • "Picking" ist ja schön und gut und des Prinzip hab ich auch verstanden. Ich bilde von meinem Mauszeiger aus eine Gerade und bestimme wo sich die gerade und mein Objekt schneiden. schön und gut aber wie mach ich das???

    wird durch diese Methode auch das Probelm mit den verschiedenen Koordinatensystemen behoben?



  • @TGGC: Das hab ich auch mal geglaubt und gleich als erstes ausprobiert geht aber komischerweise nicht. Bekomme immer noch den Punkt an der falschen Stelle. Dieser Fehler ist auch nicht durch ne Konstante auszugleichen weil der Mauszeiger immer unterschiedlichen Abstand zum gezeichneten Punkt hat.



  • Dann machst du was falsch. Es ging auch erstmal nur um den Nullpunkt (und nicht um alle!), daher ist der unterschiedliche Abstand egal, da ja nur der Abstand im Nullpunkt interessiert. Der Rest muss dann über eine Skalierung angepasst werden.

    Bye, TGGC (Der Held ist zurück)



  • Das mit Nullpunkt skalieren haut nicht hin und den rest über eine skala anpassen ist meiner Meinung nach zu aufwändig.

    Hab mich mit dem Picking beschäftigt. Soweit ich das jetzt verstanden hab kann ich nur ein komplettes Objekt auswählen, oder? Ich müßte nämlich auf einer kompletten Figur an verschiedenen stellen Markierungen anbringen können. Diese soll nach Möglichkeit zu einen späteren Zeitpunkt wieder rekonstruierbar sein. Soll also alles zusammen speicherbar sein.

    Oder gibt es andere Möglichkeiten um Markierungen anzubringen?



  • Quotenmausi schrieb:

    Hab mich mit dem Picking beschäftigt. Soweit ich das jetzt verstanden hab kann ich nur ein komplettes Objekt auswählen, oder?

    "Auswählen" kannst Du damit gar nichts.
    Du erstellst Dir eine Gerade, die Deinen Mauscursor repräsentiert.
    Und diese wiederum könnte halt z.B. ein (oder mehrere) Objekt schneiden.
    Dieses Objekt könntest Du dann auswählen, klar.
    Du könntest natürlich die Gerade auch polygon-genau gegen das Objekt testen und dann die Frontfaces wählen und "markieren"... 🤡 👍



  • Also wie man einen Punkt skaliert, das würde mich jetzt schon interessieren!

    Bye, TGGC (Der Held ist zurück)


Anmelden zum Antworten