Registriert: Mo Feb 12, 2007 20:09 Beiträge: 10 Wohnort: Jüdenberg
Hallo,
ich habe in Info diese jahr ein Projekt aufbekommen und komme irwie mit OpenGl nicht so ganz klar. Ziel ist es ein Beleuchtungsscene in Delphi darzustellen. Also ich nehme meine Bühne, packe da nen paar Spots rein und dann wenn möglich stelle ich da noch ein paar Menschen hin und gucke die mir dann aus verschiedenen Winkeln(am besten aus der jeder möglichen Position der Aula an). Frage: Muss ich die Bühne mit Quads und so nachbauen, da mit ich die Dreidimensional hinbekomme oder kann man die auch als Objekt irwo erstellen und die dann in Delphi einladen? Ich komme auch mit dem Thema Licht nicht so ganz klar, aber naja.
Ja, du kannst die Szene vorher ersteinmal per 3D Modeller designen und dann laden. Als Modeller bietet sich Blender an. Der hat auch einige export-Formate, die für die man schnell einen passenden Loader findet. Dann kann man eine Szene recht schnell darstellen. Allzuviel hat das aber ersteinmal noch nicht mit Licht zu tun.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Du kannst dir überlegen wie du vorgehen willst.
Entweder du erstellst dir zuerst eine OpenGL Scene und versuchst mit der Beleuchtung klar zu kommen. Die Bühne ersetzt du erstmal durch ein Gitter aus Quads.
Oder du baust erstmal ein modell eurer Aula (z.B. in blender) und versuchst dann in OpenGL die Scene rings rum zu bauen.
Falls du glaubst realistisches Licht mit OpenGL einfach so erstellen zu können, muss ich dich enttäuschen. Da OpenGL kein Streulicht (per Reflektionen) kennt wurden Technologien wie Raytracer entwickelt.
Sollst du eigentlich auch Schatten und sowas einbauen? Wie ist dein Kenntnisstand in Sachen OpenGL und deiner Programmiersprache?
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Zitat:
PS: Ich bin verloren.
Hey! Warum so negativ? Ja, es ist ein ambitioniertes Projekt, wenn man grade erst damit anfängt. Aber es ist auch jede Menge Spaß dabei. Und es gibt einen Haufen fertiger Dinge, die man einsetzen kann. Musst Du ja Deinem Lehrer nicht auf die Nase binden.
Registriert: Mo Feb 12, 2007 20:09 Beiträge: 10 Wohnort: Jüdenberg
Oha, mein Kenntnisstand^^
Also tut mir erstmal Leid, dass ich so lange nich auf den Treat geantwortet habe, aber die letzte Woche war ein bisschen stressig(Europarty in Ferropolis, wem das was sagt).
Naja also mit OpenGL kann ich die kleinenren, Sachen, die in der Tutorials gezeigt wurden. Aber so richtig Plan von der Materie habe ich nicht. Was auch das Problem darstellt. Ich scheitere ja schon bei diesem DC. Ich will auf dem Panel zeichnen, aber habe keine Ahnung, wie ich in der From.create sage, dass das DC vom Panel kommt oder wie ich die Prozeduren, die im Delphiwiki drinne sind anwende. Kann das bitte jemand von auch mal bitte posten?
Danke
Registriert: Mo Feb 12, 2007 20:09 Beiträge: 10 Wohnort: Jüdenberg
Ahso, ich habe noch ein kleines Prob, wie kann die renderprozedur so gestallten, dass die nicht ständig läuft, sondern nur auf knopfdruck ausgelöst wird?
DC holst du dir ja am Anfang z.b. mit DC:= GetDC(Handle);
Handle is ein Element, das alle Klassen haben die von TWinControl abgeleitet sind, das handle wird dann jeweils von der instanz genommen, in der das GetDC aufgerufen wird, hast du z.b. ein Formular und hast in der Create Methode das drin, dann holt er sich das vom formular .. willste das von nem Panel namens ZeichenPanel (oder Panel1 oder sonstwas) haben dann sagst du halt DC:= GetDC(ZeichenPanel.Handle); um dich darauf festzulegen
zum problem mit dem nur aufrufen bei knopfdruck musst du die render routine halt nicht in nen timer- oder onidle-handler setzen in die für den knopfdruck, allerdings musst du dich dann auch selbst drum kümmern, dass bei resize oder verdecken des zeichenbereichs nachher alles wieder angezeigt wird.
alternativ kann man auch bei anzeige statischer bilder in der idle-funktion Done := true setzen, dann wird nur einmal neu gezeichnet z.b. nach resize, überdeckung durch andere fenster etc., allerdings auch dann, wenn man knöpfe drückt etc die eigentlich nichts machen
Registriert: Mo Feb 12, 2007 20:09 Beiträge: 10 Wohnort: Jüdenberg
Hallo,
also meine Bühne habe ich jetzt gebastelt und versuche auch schon seit, ka 3h oder so da licht reinzubekommen. Ich benutze dafür glLightx.
Aber egal wie, ich bekomme nix ordentliches hin. Wenn ich die Position des Lichtes direkt vor eine Wand mache(1 einhat abstand), dann müsste man ja eigentlich den bereich des lichtes sehen, bis der cutoff kommt. aber das geht nicht.
ich habe es shcon mit bewegen und cutoff verändern versucht aber das geht irgendwie nicht.
kann mir da wer helfen?
Registriert: Mo Feb 12, 2007 20:09 Beiträge: 10 Wohnort: Jüdenberg
Also mein Ziel ist es da Spots reinzubekommen. Also einen Lichtkegel und mit glLightx(gllightx, gl_specular,@light_specular) bekomme ich das einfach nich hin. es funst net. ich erhalte auch keine runden lichtkreise auf den flächen, wo das licht draufstrahlt. ich erhalte immer nur richtig helle ecken und dann nimmt die licht stärke ab.(habe auch noch diffus mit drinne).
ich grase auch schon das tutorial dazu rauf und runter
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das OpenGL licht wird pro Vertex berechnet und dann über die Flächen verteilt. Nimm mal so ne Wand und zerleg die in viele kleine Flächen. Probiers dann nochmal.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Mo Feb 12, 2007 20:09 Beiträge: 10 Wohnort: Jüdenberg
Hehe, also das Funktioniert schonmal sehr gut, aber was empfehlt Ihr so? Also wie groß sollten denn die einzelnen Flächen so sein? Ich habe jetzt vierecke mit 1*1 abmessungen.
Registriert: Mo Feb 12, 2007 20:09 Beiträge: 10 Wohnort: Jüdenberg
Hmm,
das man da jetzt einen Lichtkegel sehen kann ist schoneinmal positiv, aber ich habe dann immernoch das Problem, dass ich mit dem Cutoff nicht den Focus verändere, sondern das Licht einfach am einem Punkt aus der Quelle abschneide, also der Lichtkegel nicht kleiner wird, sondern die Rundung dann einfach abgeschnitten wird. Und wenn ich das Licht bewege, dann bleibt das Licht irgendwie von der Richtung her immer gleich, nur dass ich den Bereich verschiebe. Also der Spot hat sein Maximum an Punkt k und wenn ich den Verschieben will, dann bewegt sich aus irgendeinem Grund nur der Ausschnitt vom Lichtkegel, der angezeigt wird.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Öhm... Wie meinen?
Also falls du einen Lichtkegel "im Raum" sehen willst, wirst du den selber per gluCylinder in die Szene einfügen müssen. Beleuchtung äußert sich in OpenGL nur auf den Beleuchteten Flächen.
Falls du was anderes Meinst - mach mal ne Skizze/Bilder irgendwas visuelles.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Mo Feb 12, 2007 20:09 Beiträge: 10 Wohnort: Jüdenberg
Jut also ich habe diese gluCylinder Fkt schon mal gefunden und habe auch verstanden, was da drinne steht und so, aber wie bewege ich den cylinder und vor allem, wie bekomme ich den lichtkegel dann angezeigt, also dass es eben aussieht, wie licht.
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.