Dynamische Schatten -welche Methode?
Übersicht

![]() |
x-pressiveBetreff: Dynamische Schatten -welche Methode? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gibt es eine brauchbare (also schnelle) Methode, Schatten von beweglichen oder animierten Objekten darzustellen? Welche hat bei euch bisher zufriedenstellend funktioniert?
Ich denke, das Problem besteht aus zwei Teilen: 1. Erzeugen der Schatten (die Umrisse sollten schon der Form eines Objekts entsprechen) 2. Das positionieren der Schatten (z.B. auf unebenem Untergrund) Die beste Lösung für Punkt 1 wäre wohl, alle Objekte, die einen dynamischen Schatten werfen sollen, schwarz zu färben, mit einer 'Schattenkamera' vom Standpunkt der Lichtquelle aus zu 'filmen' und so eine Art 'Shadowmap' zu erhalten. Diese Schatten könnte man dann wohl z.B. in die Textur des Untergrunds/Terrains 'drüberrendern', was aber wahrscheinlich recht langsam ist. Eine bessere Methode wäre vielleicht, den Schatten eines Objekts auf ein Sprite oder eine unterteilte Fläche als Textur zu plazieren und dann alle Vertices dieser Fläche auf den Boden zu 'nageln'. So würde sich der Schatten quasi wie ein Handtuch den Unebenheiten des Bodens/Terrains anpassen. Ist das möglich oder für Echtzeit-Darstellung absolut ungeeignet? |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
also,
the easy way to write 3D games! steht auf der Packung zu B3D wenn du das mit einer genügenden Geschwindigkeit schafst, bist du der Held! für sowas kann man aber auch mal auf www.blitzcoder.com und www.blitzbasic.com schauen, die haben dort große Codearchieve, wo man dazu auch ein paar beispiele findet! zu beachten währe, das alle eigentlich für "große" Spiele zulangsam sind! Wenn du nur 1-2 Objekte hast ok, aber bei mehr ![]() |
||
between angels and insects |
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie...?! Eure Games haben alle keine Schatten?? ![]() |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
bruZard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dafür haben _wir_ einen "Schatten" ... reicht doch, oder? | ||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
okay...
könnte mir jemand erklären warum ich beim ersten durchlesen als Antwort von x-pressive den Verweis auf einen Link aus dem englischen Codearchiv gesehen hab (den ich übrigens auch öffnete) und nun was ganz andres da steht? ohne den vermerk eines Edit ? Werd ich paranoid oder pfuscht hier jmd an den Einträgen rum ? |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe da gestern mal was gemacht nach dem Prinzip wie es Inpac in seinem Problem Thread sagte. Hier mal die Demo.
[url]www.sucox.art-fx.org\PhyDemo2.zip[/url] Naja, schau dir einfach Inpacs Thread an und du weißt wie ich es gemacht habe. bye |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Suco-X: Okay -läuft doch recht flüssig. Welche Methode hast du denn für die Tokamak-Demo benutzt?
Bladerunner: nein, du bist nicht schitzophren (obwohl... -kleiner Scherz ![]() http://www.blitzbasic.com/code...p?code=434 Diese Methode benutzt die 'Handtuch'-Technik (bin mir nicht ganz sicher weil der Code so messy und unkommentiert ist), wobei der Schatten quasi als Sprite auf den Untergrund geklebt wird. Aber funktioniert das auch bei vielen Objekten? http://www.blitzbasic.com/code...p?code=332 Und das ist, denke ich, die Methode, alle Objekte aus einem Winkel heraus zu 'filmen' und dann das erzeugte Bild mit allen gewünschten Objekten darauf in eine Textur zu kopieren. Damit habe schon experimentiert und bei Texturgrößen über 128x128 sinkt die Framerate leider tiefer, als Schröders Chancen auf eine Wiederwahl ![]() |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei CreateTexture solltest du noch Flag 256 nutzen damit die textur in den VRam kommt. Somit gibt es wohl weniger speed Probleme.
bye |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
@uzingLG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann man die zweite Methode auch verwenden mit:
---> Lichtern, die andere X und Z Positionen haben als 0 ---> Komplexen (=ungeraden) Objekten als Untergrund ---> Lichtern, die nicht auf den Untergrund ausgerichtet sind? Ich hoffe, die Experimentierer können mir helfen, da ich bei dem Code noch nicht ganz durchblicke... |
||
@uzingLG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok
ich habs mal mit dem 1. Punktepfeil versucht, ohne den dritten auf die Probe zu stellen, uuuuund: es hat geklappt! Was wäre die zuverlässigste Testmethode für die anderen 2? |
||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, bei der 'Schatten durch Kamera erzeugen'-Methode ist die Form und Anzahl der Objekte eigentlich egal. Der Flaschenhals ist hier der langsame CopyRect-Befehl, um das erzeugte Schattenbild vom BackBuffer in eine Textur zu kopieren, da man ja nicht direkt in eine Textur rendern kann. Die Texturgröße bestimmt also zu einem großen Teil die Geschwindigkeit dieser Methode, weniger die Anzahl der Objekte.
'Lichter' braucht es dafür gar keine. Die Schatten entstehen ja dadurch, das alle Objekte, die einen Schatten werfen sollen, schwarz gefärbt werden und mit einer Kamera aus einem Winkel gefilmt werden, der halt einfach der POSITION einer virtuellen Lichtquelle entspricht. Ob da nun wirklich ein Licht ist, oder nicht, ist nicht relevant. Ja, geht auch bei unebenen Terrains. |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also das CopyRect hier der flaschenhals ist will ich mal bezweifeln. Bei meinem PC(P4 2 ghz, GF 4 TI 4200) funktionierts auch mit einer 1024x1024 lightmap Textur. Und da ist nichts dran Optimiert. Was hindert einem z.b. daran eine 256x256 lightmap für langsame PC´s zu nehmen oder die Lightmap nur bei jedem 2 en oder 3 en Frame zu Rendern?
Habe das bei meinem PC mal mit ner 512x512 lightmap getestet, wen ich jeden 2 en Frame nur zeichne ist der fps verlust bei Flip 0 gerade mal 0. Würde dann zwar nicht mehr ganz so schick aussehen aber jemand mit nem Lahmen PC kann wohl auch mit B3D keine Doom 3 Grafik verlangen. Also für mich ist hier der einzigste Flaschenhals der Benutzer der warscheinlich denkt B3D Optimiert sich von selber. bye |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
@uzingLG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ähm...
und wenn ich kein Terrain nehme sondern einen komplexen Level aus Räumen usw... |
||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
@suco-x: Ist doch logisch: wenn man direkt in den Texturbuffer rendern könnte, kann man sich einen ganzen Schritt sparen, was natürlich wieder Ressourcen für andere Funktionen freigibt. Bedenke, das man diese Technik nicht nur in kleinen Demos benutzt, sondern auch in komplexeren Games, wo man wirklich jedes Quentchen Performance braucht.
uzingLG's Frage interessiert mich aber auch -wie könnte man dynamische Schatten in geschlossenen Räumen realisieren? Gut, man könnte statt einem Terrain eben einen durchgehenden Boden benutzen, das würde dann aber nicht mehr auf Treppen und mit mehreren Stockwerken funktionieren. Ich denke fast, hier wäre man auf die 'Handtuch'/Sprite-Methode angewiesen, oder..? |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Trotzdem ist CopyRect nicht der Flaschenhals. Ich will mal einen von den angeblichen "In textur direkt rendern" Sources sehen, egal von welcher Sprache. Ich bezweifel das es dort anders funktioniert wie in B3D.
bye |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
darkshadow |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also diese CopyRect Methode ist bei einer Tex - egal welche Größe - verträglich finde ich. Wenn ich jetzt mal die Demo von norc nehme: Ich habe es von einer Texture von 128x128 - 1024x1024 bei AA4, AF4, VSync On und Textureschärfung getestet und erziehlte immer gute FPS Zahlen auf meinen PIII-866 & GeForce4 TI-4200. Sie lagen immer so um die 100 FPS. | ||
INpac |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
kann ich auch bestätigen.... 256 aollte aber maximum bleiben, für nahe darstellungen eben notfalls 512 | ||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, sofern man Texture-Flag 256 setzt -ohne kracht's bei mir gleich auf die Hälfte runter ![]() Aber um auf uzingLG's Frage zurückzukommen: welche Schattenmethode wäre denn überhaupt für Indoor-Levels (mehrere Stockwerke, Treppen etc.) geeignet? Mir fällt da auf Anhieb keine Lösung ein... -schon mal jemand probiert? |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
für mehrere stockwerke indoor nehmen selbst die profis vorberechnete lightmaps... nunja, bei splintercell scheinen es realtimelightmaps zu sein, aber das dürfte bei bb ziemlich langsam werden ![]() |
||
MrKeks.net |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group