Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 05, 2025 09:17

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 27 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 18, 2008 15:24 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Zitat:
Gerade eine Sonnenfinsternis sähe aber bestimmt gut aus, wenn man sie mal Simulieren könnte. Wobei... Ohne Krümmung von Lichtstrahlen um den Mond herum lohnt sich das auch nicht.

Wobei man das natürlich vom Planeten aus sehen müsste. Dabei fällt auch auf, dass wir echt verdammt großes Glück haben, dass der Mond genau so groß ist wie er ist. Wäre er größer würde sich wohl keine Corona bilden. Und zu klein wär auch doof. Sähe ja aus wie ne CD.
Mal davon abgesehen, könnten wir uns die Sonnenfinsternis garnicht ansehen, wenn der Mond nicht genau so groß wäre wie er ist, weil wir dann nicht existieren würden. Aber das nur am Rande. :D

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 18, 2008 20:20 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Wobei du wegen der Sonnenfinsternis und Mondgröße auch die Distanz beachten musst, die sich ja erhöht. (mit anderen Worten: Der Mond entfernt sich von der erde, allerdings wird diese Bewegung langsamer (oder doch schneller?) )

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 19, 2008 10:34 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Zitat:
dj3hut1 hat geschrieben:
Den Ring musst du dann in Abhängigkeit vom Blickwinkel des Betrachters drehen, so dass man immer von vorne draufguckt...

Stichwort hierzu: Billboard


Dabei muss man darauf achten kein Billboard zu nehmen das auf der z-Achse senkrecht steht(ist so im wiki beschrieben), sondern auf der Verbindungslinie Beobachter-Sonne senkrecht steht. Das liegt daran dass Kugeln in den Ecken des Bildschirms durch Ellipsen statt Kreisen dargestellt werden, und das Billboards sich ensprechend anpassen muss. Falls Interesse besteht kann ich meinen code raussuchen und hier posten.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 19, 2008 13:25 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Lord Horazont hat geschrieben:
Ich mache es also folgendermaßen:
Ich rendere das Quad mit der Szenentextur, die ich zuvor gespeichert habe, 25 mal und zwar so, dass ich eine 5x5-Anordnung dieser Quads habe.
Dabei verwende ich eine Gauss-Matrix die dann den weichen Verwischeffekt erzeugt. Diese Methode ist nicht ganz so schnell, wie die andere, kommt dafür aber ohne Shader und son zeug aus. Ich würde das Preis/Leistungsverhältnis als angemessen bezeichnen.
Achja: FScreenS und FScreenT sind Variablen, die angeben, was die S und T-Koordinaten des unteren rechten Rand der Bildschirmtextur sind. Kannst du folgendermaßen errechnen:
S = ScreenWidth/TextureWidth
T = ScreenHeight/TextureHeight
ScreenWidth und ScreenHeight sollten klar sein.
XF und YF sind der Versatz der Textur.

Dieses muss im Ortho-Modus gerendert werden, mit deaktiviertem Tiefentest.

Ich hoffe, du kannst damit etwas anfangen.

Gruß Lord Horazont

Hast du vielleicht mal n Screenshot oder ein Sample, damit man mal sehen kann, wie das später aussieht ? würde mich mal stark interessieren ;)

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 19, 2008 19:41 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich würde gerne, habe aber gerade keine aussagekräftigen Screenshots zur hand und das Projekt ist nicht Buildfähig.
Ich kann die später mal posten.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 19, 2008 21:02 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Mein Verfahren ist ähnlich wie das von Lord Horazont.
Ich lad mal meine Testanwendung dazu hoch.
Wenn du sehen willst wie das aussieht, schau es dir einfach mal an. :wink:
>>Klick!<<

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 19, 2008 21:30 
Offline
DGL Member

Registriert: Mi Nov 28, 2007 17:37
Beiträge: 17
Wohnort: Berlin
Soooo ...
hab mich jetzt damit beschäftigt und muss sagen das ich leider mit dem
Glow-Effekt nicht klar gekommen bin bzw. ich das ganze leider nicht zum laufen
gekriegt habe. Die Funktion dahinter habe ich (in etwa) verstanden.
Ich habe mir auch Lord Horazont seine Idee angeguckt und habe dann einfach
mal selber einen einfachen, für Anfänger verständlichen Sonneneffekt versucht.

Ich habe eine Kugel genommen auf diese eine Sonnentextur gemacht
und dann eine Schleife geschrieben in der ein Quad mittig von der Kugel aus
pro Durchlauf immer größer wird. Auf dem Quad befindet sich diese Blendmap
hier ...
Bild


Also ich find das sich der damit erzielte Effekt so schon blicken lassen kann.


Bild


So und damit man mal Einblick hat wie das ganze genau gemacht wurde kommt
hier mal der Quellcode. Ich finde die Sonne ja so an sich nicht schlecht doch wenn
ich aber danach ein Objekt zeichne dann verschwindet es sobald es die Ebene der
Quads durchtritt oder erscheint milchig. Man erkennt also eindeutig bei Bewegungen
das der scheinende Effekt der Sonne durch Quads entsteht
Code:
  1. procedure TForm1.DrawSonne;
  2.     const
  3.     radius = 3;
  4.     mat_emission :Array[1..4]of GlFloat = (1,0.6,0,1);
  5.  
  6.     var
  7.         i : integer;
  8.         Sonne : PGLUQuadric ;
  9. Begin
  10. glPopMatrix();
  11. glRotatef(rotation,0,1,0);
  12. glMaterialfv(GL_FRONT, GL_EMISSION, @mat_emission[1]);
  13. glBindTexture (GL_TEXTURE_2D, TexID[1]);
  14. Sonne := gluNEwQuadric;
  15. gluQuadricTexture(Sonne,true);
  16. gluSphere (Sonne,radius+0.5,20,20);
  17.  
  18.  
  19.  
  20. glRotatef(-rotation,0,1,0);
  21. glEnable(GL_Blend);
  22. glDepthFunc(GL_LEQUAL);
  23. glBlendFunc (GL_ONE,GL_ONE);
  24. glBindTexture(GL_TEXTURE_2D,TexID[3]);
  25.  
  26. for i:= 1 to 4 do
  27. begin
  28. glBegin(GL_QUADS);
  29. glTexCoord2f(0,0); glVertex3f(-radius*i,-radius*i,0);
  30. glTexCoord2f(1,0); glVertex3f(radius*i,-radius*i,0);
  31. glTexCoord2f(1,1); glVertex3f(radius*i,radius*i,0);
  32. glTexCoord2f(0,1); glVertex3f(-radius*i,radius*i,0);
  33. glEnd;
  34. end;
  35. glDisable(GL_Blend);
  36.  
  37. end;




Was gibt es alles für Parameter die man mit glDepthFunc übergeben kann
und wie bekomme ich es hin das die anderen Planeten die Quads ignorieren aber
die Sonne nicht ???

_________________
Es ist ein großer Vorteil im Leben, die Fehler, aus denen man
lernen kann, möglichst früh zu begehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 20, 2008 11:04 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Was meinst du mit ignorieren?
Also meine Idee, damit das Quad über allen Planeten außer der Sonne liegt wäre, erst alle Planeten zu rendern, dann das Quad und dann die Sonne, wobei das Quad mit glDepthMask(GL_FALSE) und glDisable(GL_DEPTH_TEST) gerendert wurde.

Ich meinte aber was anderes, als ich meine Methode beschrieben habe.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 20, 2008 11:22 
Offline
DGL Member

Registriert: Mi Nov 28, 2007 17:37
Beiträge: 17
Wohnort: Berlin
Was meintest du denn dann mit deiner Methode genau ??? :oops:
Also es funktioniert ja jetzt soweit. Die Planeten hatte ich schon vor
die Sonne und dessen Effekt gesetzt
Das Problem ist aber wenn eine Umlaufbahn durch die Quads
führt dann sieht man das an den Planten das sie hindurchfliegen.
Sieht so aus als ob ein Ball durch eine Glasscheibe fliegt.
Man sieht halt wann er hindurchtritt und wann er dahinter ist.

Eigentlich stellt das ja nicht so das Problem da, weil der 1. Planet
Merkur außerhalb der Quads liegt. Wenn ich aber den Effekt später
vielleicht in anderen Projekten anwenden möchte könnte dort
dann dieses Problem auftauchen und da ist es dann vielleicht nicht
vermeidbar die Quads zu "berühren" .
Dann würde ich wieder vor dem gleichen Problem sitzen.

Eine Macke hat das ganze auch noch.
Man sieht beim genaueren hingucken die unterschiedlich
großen Ränder der Quads. Man muss zwar genau darauf
achten, aber man sieht sie.

_________________
Es ist ein großer Vorteil im Leben, die Fehler, aus denen man
lernen kann, möglichst früh zu begehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 20, 2008 11:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Du hast im gegensatz zu meiner Methode ein Quad mit einer festen Textur genommen. Ich verwende als Textur die aktuelle Szene. Das macht den Glow Bildweit und es kann auch sehr gut aussehen, wenn man dann einen Planeten an der grenze zwischen beleuchtet und nicht beleuchtet betrachtet und die beleuchtete Seite auf die andere überstrahlt.

Außerdem rendere ich meine Quads im Ortho-Modus, also über den ganzen Bildschirm, was bei einer Szenentextur auch das einzig sinnvolle ist. Und dann eben jedes Quad um einen Pixel versetzt, sodass es zu dem Glow-Effekt kommt... Ich sollte mich mal wirklcih um Screenshots kümmern :wink:

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 20, 2008 11:38 
Offline
DGL Member

Registriert: Mi Nov 28, 2007 17:37
Beiträge: 17
Wohnort: Berlin
Aha ...
... wie funktioniert es das ich die Szene "fotografiere" und als Textur auf ein Quad setze ???

Ich bin noch nicht so weit das ich mal über ein Tutorial dazu gestolpert bin.
Die Technik habe ich auch bei dem normalen Gloweffekt gesehen, aber
halt nicht verstanden da ich die Technik (noch nicht) kenne.
und was hat es mit dem Ortho Matrix auf sich ???
Hab ich auch schon öfters gelesen in dem Zusammenhang ...
... kenn mich aber damit ebenfalls nicht aus :roll:

_________________
Es ist ein großer Vorteil im Leben, die Fehler, aus denen man
lernen kann, möglichst früh zu begehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 20, 2008 12:59 
Offline
DGL Member
Benutzeravatar

Registriert: Do Aug 25, 2005 16:00
Beiträge: 189
Programmiersprache: Java, C#
Also, zum Szene fotografieren: Das nennt sich Renderpass und wird hier beschrieben.

Zum orthogonalen Modus: Der schaltet OpenGL praktisch in eine Art 2D Modus. Der Vorteil ist das man pixelgenau arbeiten kann. Wir haben zum einen ein Tutorial zum orthogonalen Modus, das sich aber primär mit "richtigen" 2D Anwendungen beschäftigt. Außerdem fällt mir auf die schnelle noch der Wikiartikel zum aufrufen des orthogonalen Modus.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 27 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 13 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 16 Queries | GZIP : On ]