Registriert: Di Feb 25, 2003 15:10 Beiträge: 147 Wohnort: Koblenz a. Rhein
kann man die projected textures nicht als licht verwenden ? wäre doch ne gute lösung oder ? (vielleicht bissel rechenintensiv ) aber egal ( so ab gf3, 1,2 ghz sollts aber dann schon laufen ! )
was haltet ihr davon ?
_________________ mir fällt kein Spruch mehr ein für meine Signatur naja...
Registriert: Di Feb 25, 2003 15:10 Beiträge: 147 Wohnort: Koblenz a. Rhein
Ich sehe gerade, dass bei dem Beispiel von Delphigl.de die Textur noch ganz uf der hinteren wand abgebildet werden, obwohl ja dass, was an den gittern zu sehen ist, hinten schatten seien müsste...
_________________ mir fällt kein Spruch mehr ein für meine Signatur naja...
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das liegt leider in der Art der Projektion, das eine umgekehrte Projektion des Projektors (toller Satz, gell ) auf der Rückseite zu sehen ist.Vermeiden lässt sich das durch die Nutzung von Clippingplanes um die Geometrie die hinter dem Projektor liegt bei der Projektion der Textur abzuschneiden.
Schau dir dazu mal folgendes Dokument an : <a href='http://developer.nvidia.com/object/Projective_Texture_Mapping.html' target='_blank'>http://developer.nvidia.com/object/Project...re_Mapping.html</a>
Und ganz nebenbei sind projezierte Texturen keine gute Lösung wenn man mehrere Lichtquellen braucht, denn dann muss man für jede Lichtquelle die Geometrie erneut rendern, was für die Grafikkarte ganz schön stressig wird.
Registriert: Di Feb 25, 2003 15:10 Beiträge: 147 Wohnort: Koblenz a. Rhein
da gibts ne demo ( der unterste download ) auf der scheints mit 2 lichtquellen noch keine problemezu geben... aber gut bei 8 wirds laam denk ich:D ( falls jemanls 8 gleichzeitig berechnet werden müssen... naja selbst wenn
was is denn eine bessere lösunng ? 3d-texturen ( hast ja gesagt, damit gehts auch .. )
oder was ???
cya!
_________________ mir fällt kein Spruch mehr ein für meine Signatur naja...
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Die Techniken die du nutzen willst, sind für Anwendungen die der breiten Öffentlichkeit zugänglich gemacht werden soll fast alle unbrauchbar.Projezierte Texturen erfordern wie gesagt das mehrmalige Rendern der Geometrie und sind deshalb sehr leistungszerrend.In UT2003 gibts z.B. auch Projektoren (z.B. Schatten von Bäumen oder Ventilatoren), die aber deshalb auch nur sehr spärlich eingesetzt werden können. Mit 3D-Texturen siehts auch nicht viel besser aus, denn diese werden in Hardware erst seit der GeForce3 unterstützt, und laufen auf GeForce2&Co in Form einer Dia-Show ab (1-2fps).Ausserdem verbrauchen 3D-Texturen jede Menge Speicher, weshalb du nicht besonders viele Lichtquellen im Speicher unterbringen könntest. Für korrekte dyamische Beleuchtung (hardwarebeschleunigt) fallen mir momentan auf Anhieb PixelShader ein, die allerdings wiederrum nur ab GF3&Co. nutzbar sind.
Mit Cubemaps geht das ganze auch gut. Der Vorteil ist, daß man Cubemaps auch in alle Richtungen projezieren kann und es nicht zu Fehlern wie bei den 2D Texturen kommt. Der Nachteil im Gegensatz zu 3D Texturen ist, daß man die Entfernung von der Lichtquelle nicht berücksichtigen kann. Dafür brauchen Cubemap viel weniger Speicher. Cubemaps gibt es ab der GF1.
ich denke das hängt v.a auch davon ab, wo man diese Licher verwenden will. wenn cih etwa an spiele wie terminal velocity,schleichfahrt und ähnliche denke, die allesamt dynamische lichet unterstützen, so hat sich die beleuchtung meist auf den boden beschränkt. das ist auch gar nicht mal so verkehrt, solange wie man punktförmige lichter verwendet, also keine spotlights. die beleuchteten elemente sind dann nur noch eine handvoll polygone, die man schnell bekommen kann. auf diese wird projeziert(auf welche weise man das auch immer macht, hier fielen mir spontan einige fakemöglichkeiten ein) und erneut gerendert. voila - wo sollen denn deine lichter verwendung finden? und welcher art sind sie? vielleicht gibt es dort auch entsprechend simple lösungen
Man die 3D Texture übrigends auch zur Not durch 2 2D Texture ersetzen, wenn die Karte keine 3D Texturen unterstützt. Mit 2 2D Texturen und dann noch eine Cubemap für Lichteffekte kann man auch schon auf einer GF1 eine ganze Menge machen. Man benötigt für dynamisches Licht auf einer GF3 nur eine 3D Texture, die man auch für alle Lichter weiterverwenden kann. Es reicht eine Größe von 64*64*64 und 1 Farbkanal aus so daß sie insgesammt 256Kb Speicher belegt. Das ist genausoviel wie eine normale 256*256 RGBA Texture. Da die GF3 4 Texturen gleichzeitig benutzen kann, könnte man theoretisch 4 Lichter, die natürlich nahe beieinander liegen sollten, gleichzeitig zeichnen, wenn man auf Bumpmapping und Schatten verzichtet. 4 Lichter pro Fläche sind akzeptabel und wenn man noch mehr will, kann man ja immer noch additiv blenden.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
<a href='http://www.delphi3d.net/download/pointatt.zip' target='_blank'>Hier</a> gibts ne Demo zum Thema "Beleuchtung mittels 3D-Textur" (stammt von <a href='http://www.delphi3d.net' target='_blank'>http://www.delphi3d.net</a> ).Die Farbwerte der 3D-Textur werden mathematisch errechnet und diese Textur wird dann mittels der glTexGeni-Funktionalität von OpenGL (zum automatischen Generieren von Texturkoordinaten) auf die Szene geworfen. Wie gesagt ist diese Technik allerdings nur ab GeForce3 und höher nutzbar.
Mitglieder in diesem Forum: 0 Mitglieder und 6 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.