jeder von euch kennt doch so spritesysteme, also wie bei half-life, eine 2d textur,
die immer parallel zum betrachter ist, jetzt bräuchte ich einen ball, und
dachte, dass ich den am besten so mache, nur wie stelle ich das genau an ?
angenommen ich habe ein bild, dann muss ich erstmal einen alphakanal hinzufügen
(das bekomme ich glaube ich noch hin) und dann muss das ja irgendwie immer parallel
zur kamera sein, nur wie mache ich das ?
und warum kann ich, wenn ich einmal eine textur erstellt habe, keine farben mehr nutzen ?
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Die Technik nennt sich Billboard (sph%C3%A4risches_Billboard) und sollte immer dann verwendet werden, wenn ein Objekt als reine Dekoration häufig verwendet wird. Wenn Du also einen reinen Ball brauchst, würde es sich vielleicht sogar anbieten diesen eher als 3D-Gebilde zu machen, da nahezu alle Grafikkarten dies heutzutage ohne Probleme schaffen werden. Billboards sind insbesondere bei Partikelsystemen heutzutage sinnvoll.
@farbe: kannst Du. Siehe http://www.delphigl.com/forum/viewtopic.php?t=5540. Ich vermute, dass deine Textur weitesgehend schwarz enthält und es zu den dort beschriebenen Effekt kommt. Wenn Du ein Objekt wie gewohnt (ohne Textur) färben willst, mußt Du vor dessen Zeichnung wieder mit glDisable(GL_TEXTURE_2D); die Texturing deaktivier und ggf. danach wieder aktivieren.
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
aber wäre das nicht speicherschonender, bzw man kann damit ja eventuell nen schicken effekt erzielen, das problem ist nur, dass der dann nicht vom licht beeinflusst werden darf, und zu richtigen kugeln, da hab ich hier den generator gefunden, aber da weiß ich net recht, wie ich die berechnung nur einmal mache, sonst schluckt mir das zu viel
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Speicherschonender? Mein Arbeitsplatz PC ist nun schon sehr alt und hat 1,5 GB drinne. Wir leben nicht mehr im Zeitalter, wo man sich groß Gedanken um Speicher machen muss (das soll nicht heißen man soll verschwenden, sondern bei der Technikwahl helfen). Nehmen wir z.B. ein Planetensystem an. Man könnte diese nun mit einem Billboard darstellen. Würde sich vermutlich aber dafür entscheiden lieber eine 3D-Kugel zu nehmen, da diese hübscher aussieht. Sowohl Speicher als auch die Grafikkarte (die defacto eher den Engpass darstellt) würden kaum einen Unterschied wahrnehmen - der User schon. Billboards oder vergleichebare Techniken fangen erst an sich zu lohnen, wenn man wirklich sehr viele solcher Objekte darstellt. Einzelne Partikel z.B. oder auch Bäume, die sehr weit weg stehen vom Spieler würde man mit Billboards realisieren. Früher stellt man für Bäume prinzipiell Billboards auf, da dies der "günstigste" Weg war. Heutzutage wirst Du kaum noch einen Titel finden, der es (wagt) so macht.
Licht... nun das OpenGL-Licht solltest Du sofern es nicht gebrauht wird einfach mit glDisable(GL_LIGHTING); deaktivieren. Insbesondere bei Billboards wie Partikeln ist das hochgradig zu empfehlen, weil Licht darauf nichts zu suchen hat. Den hinteren Teil deines Posts verstehe ich nicht. Es gibt z.B. eine Sonderform des Billboards - den sogenannten Imposter. Hierbei wird ein 3D-Modell geladen und im Speicher nicht direkt in die Welt geladen, sondern in eine Textur. Diese wird dann als Billboard aufgestellt. Der Vorteil: Der Imposter sieht weitaus realistischer aus und wird wirken wie 3D, obwohl man einiges an Polygonen spart. Insbesondere dann, wenn es sich z.B. um einen Wald handelt, wo die Objekte sehr häufig vorkommen. Vor allem, solange der Spieler auf etwas zugeht und nicht hin und her darauf hin läuft ist nichtmal stets eine Aktualisierung notwendig. Man schließt also einen guten Kompromiss zwischen 2D und 3D Lösung.
Defacto ist diese Technik schon recht kompliziert und sollte nicht bei einem Einsteiger verwendet werden. Billboards können sinnvoll sein, sind aber häufig zu Gunsten eines richtigen 3D-Objektes zu ersetzen - insbesondere dann, wenn es sich dabei um eine Spielfigur handelt oder etwas, wo der Spieler die ganze Zeit drauf blickt. Übrigens: Auch unter "PointSprites" solltest Du einmal nachsehen, da dies vielleicht eine gute Lösung für Dich ist. Ein Sample ist in der aktuellen DGLSDK: http://svn.delphigl.com/websvn/listing.php?repname=dglsdk_linux&path=%2Ftrunk%2Fsamples%2FeasySDL%2Fpointsprites%2F&rev=0&sc=0 Beachte bitte, dass dieses Sample inkompatibel ist zu den easySDL-Headern der aktuellen SDK. Du mußt also entweder den Code entsprechend in eine eigene Anwendung einbauen oder die aktuellen Header aus dem Repository ziehen.
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Mitglieder in diesem Forum: 0 Mitglieder und 7 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.