Registriert: Mo Nov 24, 2003 21:28 Beiträge: 28 Wohnort: Kiel
Hi Leute!
Ich hab nochmal ne Frage. Wenn ich jetzt unser Sonnensystem in OpenGL darstellen will, dann werd ich die Planeten wohl am besten als gluSphere darstellen (ich weiss das Planeten nicht ganz kreisförmig sind, ist aber glaub ich vernachlässigbar).
1. Wie texturier ich die Dinger denn dann am besten? Gibt's schon vorgefertigte Texturen für die Plani, oder muss ich mir selber welche bauen? Problem seh ich darin das die Texturen ja verformt bzw. verzerrt sein müssen damit sie bei der "Tapezierung" der Sphere wieder korrekt aussehen (also entzerrt werden).
2. Fortgeschritten: Wie krieg ich das "Wabern" der Sonnenoberfläche hin (das man den Eindruck hat die Oberfläche wäre wirklich geschmolzen und heiss)? Mehrere Texturen oder so?
Also, Frage 1 ist mir eigentlich wichtiger. Frage 2 ist ja nur so'ne Art "Bonus" bei der Darstellung.
Registriert: Mi Aug 20, 2003 09:15 Beiträge: 70 Wohnort: Italien
1)Es gibt schon vorgefertigte Texturen von Planeten, wo man die findet weiß ich nicht. googeln(bildsuche) hilft fast immer
2)Das Wabbern kann man mit Shadern verwirklichen (kompliziert und setzt sehr aktuelle HW voraus), oder mit Hilfe einer Detailtextur mit einem causting-effekt; das sind vorgerenderte Texturen[-folgen], die eine meistens Wasser-ähnlichen Effekt haben. Diese Detailtextur kann mit Hilfe von Multitexturing und blending sehr effektvoll mit einer Standard-Sonnentextur verbunden. Auch hier hilft die google-Bildsuche (wenn du nichts findest, kann ich dir meine als Attachement anhängen )
_________________ "Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt" Albert Einstein
Registriert: Mo Nov 24, 2003 21:28 Beiträge: 28 Wohnort: Kiel
Ich hab ein neues Problem bei der Sonne. Die Sonne ist ja eine gluSphere; jetzt hab ich eben eine Lichquelle in die Szene gesetzt, genau dahin wo die Sonne ist. Aber natürlich "umschließt" die Sonne die Lichtquelle, so daß kein Licht zu sehen ist.
Kann ich der Sphere irgendwie sagen daß sie Lichtstrahlen von innen nach außen durchlassen soll? Am besten natürlich in Verbindung damit das sie "leuchtet".
Schalt am besten die Beleuchtung für die Sonne aus. Die Sonne wird ja auch nicht beleuchtet, sondern leuchtet selber. Die Helligkeit hängt daher nur von der Texture oder dem Shader auf der Sonne ab.
Registriert: Mo Nov 24, 2003 21:28 Beiträge: 28 Wohnort: Kiel
wie schalt ich denn lokal für ein Objekt die Beleuchtung ab In dem ich keine Normal definiere?
Das Licht hab ich bis jetzt immer nur mit glEnable, glDisable an- und ausgemacht.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
@Beleuchtung :
Geht ganz einfach :
Code:
glDisable(GL_LIGHTING);
// Unbeleuchtete Objekte zeichnen
glEnable(GL_LIGHTING);
// Beleuchtete Objekte zeichnen
Das ist das schöne an ner Statemachine wies OpenGL eine ist.
@Planetentexturen :
Unter diesem Link solltest du fündig werden.
@Sonnenwabern :
Das lässt sich recht einfach über die Texturkoordinaten machen. Die kannste dann per Sinusfunktion manipulieren um nen Wabereffekt zu erhalten. Dazu musst du allerdings die Kugel selbst rendern und auch die Texturkoordinaten logischerweise selbst übergeben. Ist aber mit grundlegenden mathematischen Kenntnissen kein Problem.
Registriert: Mo Nov 24, 2003 21:28 Beiträge: 28 Wohnort: Kiel
scheisse, ich muss nochmal fragen.
Ich kann mit glDisable und Enable die Beleuchtung zwar vorübergehend ausstellen, aber es dringt ja trotzdem kein Licht aus der Sonne heraus.
Hab einen Screenshot gemacht falls das hilft.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Da machst du definitiv was anderes falsch. Da OpenGl kein Lichtmodell nutzt bei dem Strahlen von der Licht ausgehen nutzt, wird auch nicht geprüft ob das Licht von irgendeinem Objekt blockiert wird. Ob du die Kugel zeichnest oder nicht, spielt für die Lichtquelle keine Rolle. Also liegt dein Problem an einer anderen Stelle. Was für nen Lichtquellentyp nutzt du denn? Eine örtlich begrenzte (sowas wie Spotlight, Pointlight mit Attenuation) oder ne "unendliche" Lichtquelle wie z.B. unser Sonnenlicht?
Registriert: Mo Nov 24, 2003 21:28 Beiträge: 28 Wohnort: Kiel
Ich nutze folgende Parameter (ich weiss noch nicht genau was für Licht die Sonne ausstrahlt, deshalb hab ich erstmal ambient, diffus und spekular voll eingesetzt):
Ich hab's jetzt hinbekommen, daß der Rest der Szene beleuchtet wird (war wie du sagtest du Position des Lichter, hatte vorher {0,0,0,}).
Allerdings wird jetzt die gesamt Szene komplett ausgeleuchtet, die Planis haben keine "Schattenseite" mehr; Die Situation gleicht der ohne jede Beleuchtung die ich vorher hatte.
Zur beleuchtung hätte ich aber auch mal noch ne Frage...
Kennt jemand das Spiel Haegemonia?
Dort hat man einen absolut gut gemachten Übergang zwischen Tag und Nacht Seite eines Planeten. Also der nicht beleuchtette Teil wird durch ne andere Textur dunkel gemacht. Das ganze hat dort nen flüssigen Übergang wodurch es einfach nur genial aussieht. Sollte man die komplette beleuchtung nicht lieber über so einen weg lösen?! Im Weltraum sieht man nur das Licht was auf irgendwelchen Objekten reflektiert wird...
Aber, wie mache ich so einen flüssigen Übergang zwischen einer Tag und einer Nacht Textur?!
Man kann auch mit wenig Polygonen einen flüssigen Übergang erzeugen, wenn man die Beleuchtung in einer Cubemap speichert. Dann kann man die Normale benutzen um aus der Cubemap zu lesen. Die Normale wird zwar bei der Interpolation über die Oberfläche denormalisiert, aber für die Cubemap spielt das keine Rolle und man sieht im Gegensatz zu dem Vertex Licht keine Kanten zwischen den Dreiecken.
Entweder man gibt statt der Normale die Texturekoordinaten, oder man benutzt eine Extension die das automatisch macht oder noch einfacher geht es über ein Vertex Program.
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.