3D - Festes Limit an Lichtquellen?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Nerle

Betreff: 3D - Festes Limit an Lichtquellen?

BeitragMo, Sep 03, 2007 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich setze eben mehrere Lichtquellen, und muss erstaunt bemerken, dass seltsamerweise jedesmal ab der 8. Lichtquelle Schluss ist. Es erscheint zwar keine Fehlermeldung oder dergleichen, aber er zeigt die weiteren einfach nicht an.

Es handelt sich hier mal um "Punktlicht" (Paramter "2").

Von solch einem festen "Licht-Limit" von max. 8 Punktlichtern in BB habe ich noch nirgends gelesen, kann es also an der Grafikkarte liegen (GeForce Ti4200, 128MB) oder gar an etwas ganz anderem? Question

aMul

Sieger des Minimalist Compo 01/13

BeitragMo, Sep 03, 2007 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Liegt an DX7. Hättest du mit der Suchfunktion auch rausfinden können.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

Dreamora

BeitragMo, Sep 03, 2007 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Selbst aktuelle Karten gehen da nicht viel weiter was die Lichtquellen betrifft.
Aber ich Rate dir dringend davon ab, von diesen Lichtern zu sehr gebrauch zu machen. Speziell bei deiner Hardware müsstest du ja eigentlich merken wie hoch der Preis ist, performance mässig, denn diese Lichter mit sich bringen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Nerle

BeitragMo, Sep 03, 2007 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Zum Problem: ich versuche die Möglichkeit zu realisieren, dass der Spieler Lichter ausschießen kann, und der gegenwärtige Sichtbereich (Top-Down-View) tatsächlich dunkler wird. Und mir fällt keine andere Möglichkeit ein, wie ich das simulieren könnte, als durch tatsächliche Lichtquellen.

Durch die Top-Down-View hätte ich eigentlich zudem die sehr gute Möglichkeit, die Lichtquellen die sich gerade außerhalb der Sichtweite bzw. weit genug vom Spieler entfernt befinden, auszublenden. So dass immer nur 2-3 Lichtquellen eigentlich sichtbar sind und berechnet werden.

Nun rätsle ich aber, mit welchen Befehlen sich das am besten realisieren läßt?

Ich habe die Board-Suche benutzt und bin auf einige mögliche Befehle gestoßen, mir aber noch nicht klar, was sich hier nun wirklich eignet.

Ich habe es mit CameraRange versucht, aber das funktioniert auch nicht. Ich habe 10 Lichtquellen gesetzt und die CameraRange so gesetzt, dass man immer nur max. 3 auf einmal sieht. Aber dennoch zeigt er auch hier Licht 9 und 10 nicht an. Rolling Eyes

Wäre da HideEntity/ShowEntity, in Verbindung mit EntityInView eine Lösung, oder verhält es sich damit ähnlich?

PS: Eine Möglichkeit wäre vielleicht das AmbientLight bzw. eine starkes Richtungslicht für´s ganze Level flexibel zu verändern - je nachdem ob sich eine (funktionierende) Lichtquelle in der Nähe des Spielers befindet, oder? Es quasi an- und ab-dimmen lassen, je nach vorhandener Lichtquelle im Radius der Spielfigur.

aMul

Sieger des Minimalist Compo 01/13

BeitragMo, Sep 03, 2007 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Hide-/ShowEntity-Variante sollte funktionieren.
Das mit dem AmbientLight geht auch, nur wird dann halt alles dunkler/heller. keine Ahnung wie sich das mit deinem Spielkonzept verträgt.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

Dreamora

BeitragMo, Sep 03, 2007 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun ich kenne noch mindestens 3 weitere Möglichkeiten:

1. Befehl LightMesh

2. EntityColor bzw. wenn du grössere Meshes hast EntityFX so einstellen das VertexColor genutzt wird und direkt die Vertices heller und dunkler machen. (je dunkler, desto weniger belichtet)

3. Wenn die Cam eine Top Down View ist, hindert dich nichts daran, schwarze flächen zwischen Kamera und Brett zu legen welche du je nach "beleuchtungsgrad" mehr oder weniger transparent machen könntest. (-> Fog of War like)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Nerle

BeitragMo, Sep 03, 2007 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Also LightMesh scheidet glaube ich aus, da diese Prozedur ja mit allen sichtbaren Objekten durchgeführt werden müsste (Levelgeometrie, Gegner-Modelle usw.), das scheint sehr aufwendig.

Zitat:
3. Wenn die Cam eine Top Down View ist, hindert dich nichts daran, schwarze flächen zwischen Kamera und Brett zu legen welche du je nach "beleuchtungsgrad" mehr oder weniger transparent machen könntest. (-> Fog of War like)


Das wäre eine taugliche Lösung, denke ich. Ich hab das mal eben getestet: Plane erstellt, mit EntityColor schwarz gefärbt und am Alphawert herum gespielt - es wäre eine, vor allem leichte und rasche Lösung.

Nur: Falls der EntityAlpha-Wert dieser Plane nun davon abhängig sein soll, ob sich ein als Lichtquelle ausgewiesenes Objekt gerade in Sichtweite befindet, müsste ich dazu doch in der Hauptschleife permanent alle Objekte danach abfragen lassen, oder? Und das geht doch sicherlich wieder arg auf die Performance, stelle ich mir vor.

Und eine simple Frage habe ich da auch noch: Wenn ich nun z.B. 9 Lichter setze, "leuchten" ja nur 8.
Würde der Spieler nun eines wegballern, und man es mit FreeEntity löschen, geht dann wiederum ein anderes Licht an? Very Happy

Und falls ja - durch was wird die Reihenfolge bestimmt? Ich nehme mal an, die Reihenfolge in welcher sie gesetzt bzw. "created" wurden? Also wenn man z.B. 30 Lichter setzt, und von den aktuell leuchtenden 8 eines löscht, leuchtet dann das als 9. gesetztes Licht auf einmal auf?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Sep 03, 2007 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst sie nicht ganz löschen. Bereits ql:HideEntity macht eine Lichtquelle für andere Platz.

Code: [AUSKLAPPEN]
Graphics3D 800,600,0,2
SetBuffer BackBuffer()

camera=CreateCamera()
PositionEntity camera,128,40,-64

terrain=CreateTerrain(256)
TurnEntity terrain,0,0,0
TerrainDetail terrain,20000,1
For y=0 To 255
   For x=0 To 255
      ModifyTerrain terrain,x,y,Rand(0,4)
   Next
Next

TerrainShading terrain,1

AmbientLight 32,32,32


Dim light(19)
For q=0 To 19
   light(q)=CreateLight(2)
   LightRange light(q),1
   PositionEntity light(q),20+q*10,2,64   
Next



While Not KeyHit(1)
   
   If KeyHit(57)
      For q=0 To 19
         HideEntity light(q)
      Next
      For q=1 To 8
         ShowEntity light(Rand(19))   
      Next
   End If
   
   RenderWorld
   
   Flip
Wend
End
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Nerle

BeitragDi, Sep 04, 2007 6:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Du musst sie nicht ganz löschen. Bereits HideEntity macht eine Lichtquelle für andere Platz.


Hm, aber wo liegt da eigentlich dann der Unterschied zu CameraRange, was das Ausblenden der Objekte betrifft? "Hidet" es nicht auch alle Objekte, die sich gerade jenseits des Cam-Blickwinkels befinden?

Als ich das aber wie gesagt testete (über 8 Lights, aber immer nur 2-3 pro Screen), musste ich feststellen, dass es z.B. nicht wie das von Dir gecodete Beispiel funktionierte, ab dem 8.Licht ging da nichts mehr an, auch wenn sich die anderen nicht mehr in Blickweite befanden.

Was das dynamische "hiden" und wieder einblenden von Objekten betrifft habe ich auch noch eine große Frage, aber da mache ich eben der Übersichtlichkeit für spätere Suchende halber einen neuen Thread.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Sep 04, 2007 12:23
Antworten mit Zitat
Benutzer-Profile anzeigen
edit1:

Nerle hat Folgendes geschrieben:
...aber da mache ich eben der Übersichtlichkeit für spätere Suchende halber einen neuen Thread.


Genau das wird da schon besprochen. Sorry...
 

Dreamora

BeitragDi, Sep 04, 2007 12:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Was nicht im Sichtbereich ist wird nicht gerendert, da hast du recht.

Aber HideEntity macht bedeutend mehr als nur nicht zeichnen, dass darf man prinzipiell NIE verwechseln, "nicht rendern" und hideEntity sind elementar verschiedene Dinge.

Dazu gehören zb: Kollision wird deaktiviert, animationen werden pausiert, terrain wird nicht aktualisiert und noch einiges mehr.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

skey-z

BeitragDi, Sep 04, 2007 12:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Was auch eine Simulation einer Lichtquelle ist, erstelle einen Kegel, setze ihn auf leuchtend(entityfx 1) mach ihn ein wenig transparenter und setze den Blendmodus auf Multiplikation (entityblend 3).
Falls dies überhaupt in dein Konzept passt, ist halt nur eine weitere kleine Möglichkeit.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

Nerle

BeitragDi, Sep 04, 2007 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
skey-z hat Folgendes geschrieben:
Was auch eine Simulation einer Lichtquelle ist, erstelle einen Kegel, setze ihn auf leuchtend(entityfx 1) mach ihn ein wenig transparenter und setze den Blendmodus auf Multiplikation (entityblend 3).
Falls dies überhaupt in dein Konzept passt, ist halt nur eine weitere kleine Möglichkeit.


Zusätzlich könnte man das sicherlich nett als optischen Effekt verwenden, aber eine Leuchtquelle wie ich sie für mein Konzept benötige, kann das leider nicht ersetzen. Ich probiert jetzt mal mit HideEntity herum, prinzipiell klingt das nämlich wie eine wirklich gute Lösung für das was ich mir vorstelle.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group