Mal wieder ein mathematisches Problem

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

eizdealer

Betreff: Mal wieder ein mathematisches Problem

BeitragSa, Okt 23, 2004 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Blitzforum

Zur Zeit beschäftige ich mich mit dem Rendern von Schatten statischer Objekte. Das Problem dabei ist die Distanz zwischen Objekt und Kamera.
Die Kamera soll möglichst nah an das Objekt platziert werden, allerdings muss das ganze Objekt komplett sichtbar sein. (wg. möglichst effektiver Ausnutzung der Lightmap)

Mein Lösungsansatz: Bounding Box des Objekts berechnen, den Winkeln der Kamera entsprechend die Größe eines Planes berechnen, welches durch den Mittelpunkt des Objekts geht, senkrecht zur Kamera steht und das Objekt gerade so abdeckt. Mit der Größe und einer Formel lässt sich dann die Distanz zur Kamera berechnen, das funktioniert soweit auch schon.

Gegeben ist also das Objekt durch einen Quader (-> Bounding Box), von dem alle Punkte sowie der Mittelpunkt bekannt sind.
Außerdem kennt man den horizontalen und vertikalen Winkel, der zwischen Kamera und Objekt sein soll. (Hört sich kompliziert an. Man weiß einfach von welcher Richtung die Kamera auf das Objekt schaut)

Hier mal ein kleines Bild:
user posted image

Nun sollen horizontale und vertikale größe des roten rechtecks berechnet werden. Mein bisheriger Versuch:
Code: [AUSKLAPPEN]
RectWidth# = Abs( Width*Cos(SunRotation) ) + Abs( Depth*Sin(SunRotation) )

RectHeight# = Abs( Height*Cos(SunAngle) ) + Abs( (Abs( Width*Sin(SunRotation) ) + Abs( Depth*Cos(SunRotation) ))*Sin(SunAngle) )
Height, Width und Depth sind die größen der Bounding Box. SunAngle und SunRotation sind die Winkel der Kamera.
Das Ganze geht schonmal in die richtige Richtung, verhält sich aber teilweise sehr komisch.


Jetzt zu meiner Frage: Habt ihr eine Idee, was an den Formeln falsch sein könnte? Oder noch besser: Habt ihr einen einfacheren Lösungsansatz?
Ich mach da jetzt schon einige Tage rum und es bringt mich fast zum verzweifeln :/
 

blitzblaster

BeitragSo, Okt 24, 2004 12:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi !

Also wie Du schon genannt hast, muss die Camera richtig positioniert sein.

Hierfür gilt folgende Formel:

E = (I / r2) * cos a

r = Abstand von der Lichtquelle zum Objekt
A = Fläche
I = Lichtstärke

Ich hoffe, dass hilft Dir etwas weiter.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group