Hallo,
um die Geschwindigkeit beim Schattenwurf ein bisschen zu optimieren möchte ich bei jedem schattenwerfenden Objekt überprüfen, ob zPass-Schatten genügen oder zFail-Schatten benutzt werden müssen. Dazu will ich überprüfen, ob sich die Kamera im Schattenvolumen befinden könnte, und zwar wenn sich die Kameraposition in dem Zylinder befindet, der sich aus dem Radius der Boundingsphere ergibt und von der Sonne (unendlich entferntes Licht, deshalb reicht ein Lichtvektor) wegzeigt. (Siehe Skizze). Die Höhe des Zylinders spielt dabei erstmal keine Rolle.
Nun fehlt mir leider die Idee, wie ich das ins Programm übertragen könnte
Danke für die Antworten.
BTW: Wofür ist das dritte Kästchen unter dem Antwortsfeld?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Du musst eine senkrechte von der Kamera auf den Vektor berechnen und die länge dieser Strecke mit dem Radius des Cylinders vergleichen.
Dabei kannst du den Vektor des Cylinders als Normalenvektor einer Ebene annehmen in der die besagte Strecke liegen muss.
Aus dem Stehgreif kann ich dir aber auch keine Formeln sagen. Ich würde dir raten dein Tafelwerk und das CompGeo Script (Links->General) mal anzugucken. Vielleicht hilft dir das weiter...
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Sa Nov 13, 2004 11:00 Beiträge: 229 Wohnort: Steinhude
das dürfte sich relativ einfach über Vektorgeometrie lösen lassen.
Du musst dafür lediglich den Abstand von der Kameraposition zur Geraden die aus dem Mittelpunkt der Boundingsphere und dem Lichtvektor gebildet wird errechnen und mit dem radius der sphere vergleichen.
Für den Abstand Punkt grade gibt es mehrere Formeln, eine möglichkeit ist
Code:
d=sqrt(sqr(x0-P)-sqr((x0-p)*a/|a|))
wobei x0 der aufpunkt der graden (mittelpunkt der Sphere in deinem fall), a der Richtungsvektor der geraden (bei dir Lichtvektor) und P der Punkt von dem man den Abstand wissen will (also Kameraposition in deinem fall) ist. Die Formel sollte so stimmen, kann aber keine Garantie gebn, is schon ne weile her, das ich mich damit beschäftigt hab Falls diewieder erwarten nicht klappt kannst du es sonst noch mit der versuchen:
Mitglieder in diesem Forum: Bing [Bot] und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.