nach dem ich mich im Forum vorgestellt habe, folgt natürlich auch gleich die erste Frage. Obwohl ich die WIKI themenbezogen gelesen habe und auch das Forum durchsucht habe, finde ich keine richtige Lösung für mein Problem.
Ich erkläre erst mal genauer worum es geht:
Also, ich habe dank der Templates1.2 ein Programm geschrieben, mit dem ich Elemente und Knoten eines FEM-Modells im 2D-Modus (glOrtho) in einem Fenster darstellen kann. Zusätzlich können die Triangles bzw. Quads mit den Ergebnissen einer Betriebsfestigkeits in Form von Konturfarben dagestellt werden. Das klappt mehr oder weniger gut nur mit 'smooth' bzw. weichem Farbverlauf zwischen den Knoten. Auch mit den Beschriftungen und den Skalierungen klappt es gut. (Bild im Anhang)
Das eigentliche Problem ist aber die Mausbewegung bzw. die Rotation. Sie funktioniert soweit ganz gut, dass sich alle Bewegungen natürlich immer auf das Modellkoordiantensystem beziehen, was natürlich total nervt. Denn die Rotationen sollten sich immer auf ein virtuelles stehendes System beziehen, dass mit dem Bildschirkoordinatensystem (x = horizontal und y = vertikal) übereinstimmt und den Ursprung bzw. Nullpunkt im Modellkoordinatensystem oder einem anderen ausgewählten Punkt hat.
Nun habe ich gleich tonnenweise in der WIKI gelesen...Tansformation war wohl das häufigste Wort...habe das Camera-Tutorial gelesen und sogar versucht anzuwenden...aber leider ohne Erfolg. Einige male hat sich sogar die atioglx1.dll mit Ausnamefehlern gemeldet...jetzt ist meine letzte Hoffnung das Forum. Es muss doch eine einfache Routine für so was geben.
Momentan benutze ich die einfache mini Kamera aus dem opengl12_vcl_template.zip. Zusätzlich habe ich noch einen Zoom und die Verschiebung mit der Maus eingebaut, was dann etwa so aussieht:
...
gltranslatef(movex,movey,movez);
glRotatef(XRotation, 1, 0,0);
glRotatef(YRotation, 0, 1,0);
glRotatef(ZRotation, 0, 0,1);
glScalef(scale,scale,scale);
...
Die Z-Rotation soll eigentlich das Modell immer um die Bildschirm Z-Achse drehen, was natürlich so auch nicht geht.
Wie kann ich es also realisieren, dass sich das Modell nach einer Mausbewegung auch in diese Richtung dreht und nicht um die globalen Modellachsen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
ah ich kann mir vorstellen, was du meinst In 3ds max gibt es auch soetwas. Dort kann man ein Objekt nach mehreren Matrizen drehen. Einmal nach der Worldmatrix - also dem Koordinatensystem der Welt - dann nach dem des Modells usw. dort kann man auch in einem Koordinatensystem drehen, was auf dem Betrachter senkrecht steht. Dort zeigt die Z-Achse dann wirklich direkt senkrecht nach hinten, die X-Achse genau nach rechts und die Y-Achse nach oben.
Leider hab ich keine konkrete Idee, wie man das machen könnte. Möglich ist es auf jeden Fall und allzu schwer dürfte es nicht sein - denke ich mal
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Ich glaube dort wird genau mein Problem beschrieben. Ich muss aber erst mal den Quellcode durchforsten.
Ein weiteres Problem ist glaube ich das etwas in die Jahre gekommene 1.2 Template. Es benutzt die OpenGL_SG Unit, und damit bekomme ich die Abstürze. Da muss ich wohl noch mal ran.
So, ich habe mir erst mal ein aktuelles Template besorgt und den ganzen schon vorhandenen Quellcode dort wieder eingepasst. Am Wochenende werde ich mir das Beispielprogramm aus der oben genannten Quelle genauer zu Brust nehmen.
Ich habe schon mal reingesehen...es beschreibt genau das wonach ich suche.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Einfach hier posten. Es finden sich immer interessenten.
Oder als Ergänzung zum Kamera-Artikel ins Wiki stellen. Musst dich aber erst von einen Admin freischalten lassen. (Phobeus und Flo machen das glaubich)
_________________ Blog: kevin-fleischer.de und fbaingermany.com
So, ich habe mal ein einfaches Beispielprogramm erstellt, aus dem das Wesentliche eigentlich hervorgehen sollte. Natürlich habe ich im Beispiel auf alle Menüs bzw. die Importfunktionen sowie die automatische Farbsaklierung verzichtet. Es wird nur ein einfaches Rechteckmodell dargestellt, das mit der Maus bewegt werden kann. Die Farbskalierung wird nur sehr einfach dargestellt, hat aber keinen Bezug zum Modell, dafür kann man zwischen smooth und flat umschalten. Ach ja, man kann auch ein Bildschirmfoto machen (schönes Beispiel aus der WIKI) und ein einfaches Koordinatenkreuz anzeigen. In der linken oberen Ecke wird mit Text eine kleine Hilfe zu den Tasten angezeigt und natürlich auch die FPS.
Lasst mich bitte wissen wenn irgend etwas nicht funktioniert.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 2068
Programmiersprache: C++
Die mainform.dfm fehlt.
Aber was hälst du davon, dass als Beispiel fürs SDK zu stellen?
Sollte nur noch aufs easySDL-Framework umgestellt werden.
Die dazu benötigten Dateien findest du im SVN.
Ansonsten kannst du uns anschreiben, sodass wir es umschreiben.
Du wirst natürlich auf jedenfall als Ersteller der Datei genannt.
Also, das kommt alles etwas schnell...habe grade erst mal gelesen was easySDL überhaupt ist. Hört sich echt gut an. Natürlich hätte ich Lust das zu machen, aber wie du ja weißt, bin ich berufstätig und schreibe abends oder am Wochenende meine Programme. Ich müßte mir dazu schon viel Zeit lassen. Gebt mir etwas Zeit um mich hier erstmal richtig einzulesen.
Sonst hätte ich nichts dagegen wenn einer von euch das Programm so zurecht schneidet, dass es für easyDSL erst mal tauglich ist. Vielleicht kann ich dann später diesen Bereich weiterpflegen.
Anbei hoffentlich jetzt das komplette Paket.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Ja, das geht in Ordnung, die Frage ist nur, was das Template zeigen soll?
Wenn das ein CAD bzw. FEM Template werden soll, dann muss die Rotationsfunktion durch ein anderes Vorzeichen geändert werden da es sich falsch herum dreht. Die Grafik sollte im glortho-Modus laufen und nicht beim heranzommen verschwinden. Über die Hintergrundfarbe lässt sicht streiten, üblich sind aber eher hellere Farben...ist aber auch nur Kosmetik. Die angezeigt Geometrie kann ruhig ohne Texturen auskommen da dieses nicht oder nur selten üblich ist. Schön wäre ein Meshobjekt, wie z.B. eine Kugel o.ä...ich könnte ein Textfile mit Knotenkoordinaten erstellen welches man in einem Array speichern könnte.
Da ich von der SDL noch keine Ahnung habe, überlasse ich dir die Entscheidung. Ich werde bei Zeiten noch mal ein überarbeitetes VCL-Template erstellen und hier posten.
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 2068
Programmiersprache: C++
attragie hat geschrieben:
Wenn das ein CAD bzw. FEM Template werden soll, dann muss die Rotationsfunktion durch ein anderes Vorzeichen geändert werden da es sich falsch herum dreht.
Woher soll ich das wissen Bei mir dreht es sich wie es sich nach deinem Code drehen sollte...
attragie hat geschrieben:
Die Grafik sollte im glortho-Modus laufen und nicht beim heranzommen verschwinden.
Echt im Ortho-Modus? Weil ich die Rotation von 3-dimensionalen Körpern im 2D etwas komisch finde. Wenn ich mit 3D-Editoren gearbeitet hatte, hatte ich drei Draufsichten und eine richtige 3D-Sicht. Ansonsten wollte ich es an den Wunsch von Phobeus anpassen (->Wishlist). Daher auch die Textur und der "richtige" Würfel.
Die Hintergrundfarbe ist so gewählt, weil die Schrift durch Blenden entsteht und auf Weiss lässt sich so blöd was drauf blenden.
...also in meinem Template deht sich der Körper anders herum, wie auch immer. Das mit dem Ortho-Modus würde ich bevorzugen, da man eigentlich nicht in ein Modell eintauchen möchte (natürlich gibt es auch Anwendungen die das benötigen) sondern eher stark vergrößern/zoomen möchte um Details zu erkenen. Außerdem wird keine Perspektive benötigt, da aus den 3D Modellen 2D Zeichnungen gemacht werden, welche keine Tiefeninformationen zeigen dürfen.
Aber primär ging es doch um die Rotationsfunktionen und die hast du ja drin. Ist ja auch die Frage, wie weit man ein Template aufblähen soll. Ich konnte aus den DGL-Templates viel lernen, aber ein fertiges Produkt gibt es nicht, da die Anforderungen an ein Programm doch überall anders sind. Aber die Grundfunktionen, auf denen man aufbauen kann, sollten schon enthalten sein. Im Zweifel gibt es ja zum Glück immer noch die Community.
Das mit den Texturen ist mit Sicherheit ein schönes Beispiel, das ich mir auch noch mal ansehen muss. Bei mir geht es aber um Performance, da ich ja nicht direkt CAD sondern FEM-Netzte mit teilweise über 100000 Elementen (Tetraeder, Hexaeder, Quads usw.) anzeigen möchte. Und da geht die FPS schon mal kräftig in den Keller. Versuche gerade die ganze Geschichte mit Display Listen zu verwirklichen um das eine oder andere FPS herauszuholen.
Ich habe noch mal ein kleines Bild angehängt, auf dem man die Restsicherheit eines Bauteils unter dynamischer Belastung auf 20 Jahre sehen kann.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 2068
Programmiersprache: C++
attragie hat geschrieben:
...also in meinem Template deht sich der Körper anders herum, wie auch immer. Das mit dem Ortho-Modus würde ich bevorzugen, da man eigentlich nicht in ein Modell eintauchen möchte (natürlich gibt es auch Anwendungen die das benötigen) sondern eher stark vergrößern/zoomen möchte um Details zu erkenen. Außerdem wird keine Perspektive benötigt, da aus den 3D Modellen 2D Zeichnungen gemacht werden, welche keine Tiefeninformationen zeigen dürfen.
Habe es gerade nochmal getestet: Man sieht keinen Unterschied zwischen 2D und 3D. Von der FPS ist es auch egal.
attragie hat geschrieben:
Aber primär ging es doch um die Rotationsfunktionen und die hast du ja drin. Ist ja auch die Frage, wie weit man ein Template aufblähen soll. Ich konnte aus den DGL-Templates viel lernen, aber ein fertiges Produkt gibt es nicht, da die Anforderungen an ein Programm doch überall anders sind. Aber die Grundfunktionen, auf denen man aufbauen kann, sollten schon enthalten sein. Im Zweifel gibt es ja zum Glück immer noch die Community.
Ich denke, dass es einfach die Rotation und Translation um feste Achse zeigen soll. Dies machst du ja. Du machst es zwar über leichte Tricks indem du Translation in der Perspektivmatrix machst, Rotation in der Modellmatrix, aber es geht ja.
attragie hat geschrieben:
Das mit den Texturen ist mit Sicherheit ein schönes Beispiel, das ich mir auch noch mal ansehen muss. Bei mir geht es aber um Performance, da ich ja nicht direkt CAD sondern FEM-Netzte mit teilweise über 100000 Elementen (Tetraeder, Hexaeder, Quads usw.) anzeigen möchte. Und da geht die FPS schon mal kräftig in den Keller. Versuche gerade die ganze Geschichte mit Display Listen zu verwirklichen um das eine oder andere FPS herauszuholen.
FPS sollte durch eine kleine Textur wirklich nicht in den Keller gehen. Wenn du bei vielen Elementen Geschwindigkeit willst, schau dir Vertexarrays und Vertexbufferobjekte an.
Zum Einstieg empfehle ich dir die Vertexarrays, wo du einfach nur ein Array der einzelnen Koordinaten/Punkte machst und diese dann mit glInterleavedArrays zeichnest.
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.