Hi!
Wie der Titel schon besagt, habe ich ein Problem mit der Belichtung bzw. in meinem Fall mit dem Schatten!
Anfangs generiere ich die Welt incl. Spielfeld und einer Kugel, die als Hintergrund genommen wird. Wenn die Welt nun dargestellt wurde,
wird das Spielfeld dargestellt, auf dessen Oberfläche sich der Schatten der Kegel befinden soll, jedoch nicht auf dem Hintergrund. Hierzu
versuche ich den Hintergrund einfach mit X_CLEAR_Z in den "Hintergrund zu rücken" und dabei die Schattendarstellung korrekt darzustellen.
Dies erweist sich leider als nahezu unlösbares Problem. Könnt ihr mir dabei helfen?
Das hier ist der Original - Code:
X_MAKE3D 1, 1000, 45
X_MIPMAPPING TRUE
draw_3D_camera(_br)
IF _br.option.background = 1
draw_3D_back(_br)
X_CLEAR_Z
ENDIF
IF _br.option.light = 1
X_SPOT_LT 0, RGB(255, 255, 255), 0, 50, 0, 0, 0, 0, 360
ENDIF
draw_3D_spielfeld(_br)
draw_3D_kegel(_br)
draw_3D_wuerfel(_br)
draw_3D_marker(_br)
IF _br.option.shadow = 1
X_CULLMODE 1
X_SPOT_LT -3, RGB(255, 255, 255), 0, 50, 0, 0, 0, 0, 360
draw_3D_kegel(_br)
X_SPOT_LT -3, RGB(255, 255, 255), 0, 50, 0, 0, 0, 0, 0
ENDIF
Inzwischen habe ich ihn mehrfach umgebaut, X_MAKED + Camera erneut nach den Buffer gesetzt, ebenso habe ich versucht die Lichtquelle für den Schatten zu deaktivieren und einfach den Hintergrund danach zu zeichnen, dann jedoch wird der Hintergrund gar nicht angezeigt!
Kann mir jemand helfen? Ich komme nicht drauf, wie ich den Fehler beheben kann!
Gruß
W.
[attachment deleted by admin]
kein X_Clear_Z machen.
Funktioniert leider so herum auch nicht!
Der Schatten wird sowohl am Spielfeld, als auch auf der Kugelinnenseite vollständig dargestellt...
Wenn ich den Backbuffer richtig verstanden habe, sollten alle im Vordergrund dargestellten Objekte,
einfach in "2D" flach am Hintergrund dargestellt werden, ohne für den Schattenwurf überhaupt in Betracht zu kommen, oder?
Im Prinzip so:
SetCamera()
SetLights()
DrawEverything()
X_SPOT_LT -3, ... // enable shadow casting
DrawEverythingThatCastsShadow()
SHOWSCREEN
Das Problem stellt sich leider etwas komplexer dar, Gernot!
SetCamera()
DrawBackground() // <-- Dieses Objekt hier wird...
X_CLEAR_Z
SetCamera()
SetLights()
DrawEverything()
X_SPOT_LT -3, ...
DrawEverythingThatCastsShadow()
SHOWSCREEN // <-- ...hier als Schattenauflagefläche ausgegeben, obwohl es eigentlich im Hintergrund liegen sollte
Daher kommen die Probleme mit dem Schatten!
Und ich komme nicht dahinter, was ich in dem Fall falsch mache...
Kannst Du ein kleines Beispiel machen?
So, jetzt sind wir wieder bei diesem doofen Vorführeffekt! :'(
Hier das Beispiel, wo exakt das funktioniert, das in meinem Programm nich geht!
Lustigerweise besteht zwischen beiden nur der Unterschied, daß es bei mir etwas komplexer ist und das X_CLEAR_Z da nicht will und hier schon! :D
[attachment deleted by admin]
Kannst Du mir alles mailen?
Schon geschehen!