3D - Festes Limit an Lichtquellen?
Übersicht

NerleBetreff: 3D - Festes Limit an Lichtquellen? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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? ![]() |
||
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. ![]() 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. |
||
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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? ![]() 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? |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Nerle |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group