Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Sc4v

Alter Hase

  • »Sc4v« ist der Autor dieses Themas

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

1

12.01.2016, 13:25

Integration über Halbraum: BRDF

Hallo Community!

Im Zuge meiner Masterarbeit bin ich auf ein mathematisches Problem gestoßen bei dem ich mir erhoffe, dass der ein oder andere ein wenig mehr Erfahrung in diesem Gebiet hat als ich: Integration einer BRDF über einem Halbraum.

Im "einfachen" Fall wäre das Problem wie folgt definiert:
§a(\omega_o) = \int_{\Omega_f} f_r(\omega_i,\omega_o)d\omega_i§
wobei §\int_{\Omega_f}§ das Integral über die ganze vordere Hemisphere ist und §\omega_i§ und §\omega_o§ sind die incoming und outgoing directions in Kugelkoordinaten.

Nach der Umrechnung vom Integral §\int_{\Omega_f}§ über alle Raumwinkel der vorderen Hemisphere in ein Doppel-Integral über die spherischen Koordinaten §\theta§ und §\phi§ (azimuth) erhält man (da §d\omega_i = sin\theta_i d\theta_id\phi_i§):
§a(\theta_o,\phi_o) = \int_{0}^{2\pi}\int_{0}^{\pi/2} f_r(\theta_i,\phi_i,\theta_o,\phi_o)sin\theta_i d\theta_id\phi_i §

Diese Formel lässt sich über einfache numerische Integration nahezu trivial lösen wenn §f_r§ bekannst ist.

Jetzt zu meinem Problem: Die Notation in dem Paper das ich zu implementieren versuche [1] ist gegeben als:

(Link)


Der Halbraum §\Omega_f§ ist also der obere (Orange). §\theta§ ist 0 auf der Normalen und §\pi/2§ ist dann u.
Das bedeutet, dass §\theta \in [-\pi/2,\pi/2]§ parametrisiert werden muss um den Halbraum zu bestimmen. Nun ist jedoch §sin(-\pi/2) = -1§ wodurch mein Ergebnis negativ wird. Ich glaube ich muss die Formel irgendwie anpassen, bin jedoch nicht sicher wie ?(
Ganz konkret geht es um Formel 6 und 12 aus [1]... es ist ziemlich schwer mein Problem zu beschreiben - ich hoffe es ist einigermaßen klar geworden? Ansonsten einfach nochmal nach fragen... vielleicht kennt ja jemand sogar das Paper?

VG und danke
Sc4v


[1] Dual Scattering Approximation for Fast Multiple Scattering in Hair by Zinke et al.

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »Sc4v« (13.01.2016, 16:38)


Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

12.01.2016, 20:01

Sicher dass du nicht mit den Winkeln durcheinander gekommen bist? §\theta§ geht üblicherweise von 0 bis §\pi§ und dein Teilvolumen hat glaube den Parameterraum §(r,\theta,\varphi)=([0,\inf],[0,\pi/2],[0,\pi])§. Wobei das letzte Interval vmtl auf Grund von Rotationsinvarianz beliebig verschoben werden kann.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Sc4v

Alter Hase

  • »Sc4v« ist der Autor dieses Themas

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

3

13.01.2016, 10:38

Mh, leider bin ich mir sicher dass §\theta \in [-\pi/2,\pi/2]§ und daher nicht im Bereich 0 und §\pi§ liegt. Zumindest sagt das Paper dies.

Die Formel um die es geht ist:

§ \bar{a}_f(\theta_i) = \frac{1}{\pi} \int_{\Omega_f} \int_{-\pi/2}^{\pi/2} f_s((\theta_i,\phi_i),\omega) cos \theta_i d\phi_i d\omega §

Alleine hier ist §\phi§ bereits im Intervall §[-\pi/2,\pi/2]§ definiert. Weiter wird gesagt: §\theta§ is "measured so that 0° is perpendicular to
the hair, 90° is u, and -90° is -u.". In dem vorher gepostetem Bild wird auch gesagt, dass der orangene Bereich der vordere Halbraum ist. Wenn ich also diese Informationen zusammen nehme, dann würde ich folgende Formel bekommen:

§\bar{a}_f(\theta_i) = \frac{1}{\pi} \int_{0}^{\pi} \int_{-\frac{\pi}{2}}^{\frac{\pi}{2}} \int_{-\frac{\pi}{2}}^\frac{\pi}{2} f_s((\theta_i,\phi_i),(\theta_o,\phi_o)) cos \theta_i sin \theta_o d\phi_i d\theta_o d\phi_o§

was leider mein Problem erzeugt 8|

edit: Ich bin nicht überzeugt von §\int_{0}^{\pi}§ für §\phi_o§. Da §\phi_i§ bereits in §[-\pi/2,\pi/2]§ müsste dann nicht §\phi_o \in [-\pi/2,\pi/2]§ oder §\phi_o \in [\pi/2,3\pi/2]§ gelten?

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Sc4v« (13.01.2016, 11:01)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

13.01.2016, 11:20

Ich versteh nicht ganz, wo du beim Integrieren über die Oberfläche einer Halbkugel auf einmal ein Dreifachintegral hernimmst!?

Sc4v

Alter Hase

  • »Sc4v« ist der Autor dieses Themas

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

5

13.01.2016, 11:26

die ursprüngliche Formel ist bereits ein Doppel-Integral §\int_{\Omega_f} \int_{-\pi/2}^{\pi/2}§ aus dem das Dreifach-Integral folgt

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

13.01.2016, 11:29

Dann integrierst du nun aber nichtmehr über eine Halbkugel, sondern irgendwas anderes...

Sc4v

Alter Hase

  • »Sc4v« ist der Autor dieses Themas

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

7

13.01.2016, 11:44

Ja, in der Gänze will ich wissen was die durchschnittliche Abschwächung des Lichtstrahls (bei Forward Scattering) ist wenn dieser mit einem Haar interagiert (gegeben einem Einfallswinkel §\theta_i§).
Das Paper sagt, dass diese forward scattering attenuation als die totale Strahldichte(radiance) der vorderen Hemisphere berechnet wird.
Das ändert aber nix daran, dass das Integral §\int_{\Omega_f}§ über die vordere Hemisphere definiert ist und ich Probleme mit deren Parametrisierung habe :(

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

13.01.2016, 14:41

Wenn der Höhenwinkel wirklich von -90° bis 90° geht, dann nutzen die ggf ne andere Definition der Kugelkoordinaten ( https://de.wikipedia.org/wiki/Kugelkoord…re_Konventionen ).

P.S. Nach kurzen überfliegen des Papers stellt sich mir eine Frage: wie kommst du darauf dass §d\omega_i = sin\theta_i d\theta_id\phi_i§ gilt? Es ist die Rede von " any direction§\omega_a§ is equivalently expressed by the longitudinal inclination §\theta_a§ and the azimuthal angle §\phi_a§". Die von dir genannte Gleichung sieht hingegen wie das Flächenelement aus wobei R^2 fehlt. Wobei du bei dem Ansatz aber dann das Punktprodukt zwischen Flächenelement und Richtungsvektor nehmen müsstest. Was du eigentlich willst ist den "Fluss eines radialsymmetrischen Feldes durch eine Kugeloberfläche". Google einfach mal danach.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Nox« (13.01.2016, 15:12)


Sc4v

Alter Hase

  • »Sc4v« ist der Autor dieses Themas

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

9

13.01.2016, 16:08

Wenn der Höhenwinkel wirklich von -90° bis 90° geht, dann nutzen die ggf ne andere Definition der Kugelkoordinaten ( https://de.wikipedia.org/wiki/Kugelkoord…re_Konventionen ).


Sowas in der Art vermute ich auch - muss ich mir mal genauer ansehen! Danke!

P.S. Nach kurzen überfliegen des Papers stellt sich mir eine Frage: wie kommst du darauf dass §d\omega_i = sin\theta_id\theta_id\phi_i§ gilt? Es ist die Rede von " any direction is equivalently expressed by the longitudinal inclination and the azimuthal angle ". Die von dir genannte Gleichung sieht hingegen wie das Flächenelement aus wobei R^2 fehlt.


Naja das Integral ist über den Halbraum definiert §\Omega_f§. Sämtliche mir bekannte Literatur, sei es "Real-time Rendering" oder "Physically-based Rendering", und die Folien unserer Universität behandeln nun §d\omega§ als differentialen Raumwinkel. Die Umrechnung von Raumwinkel in Kugelkoordinaten ist eben diese Gleichung (siehe auch : https://de.wikipedia.org/wiki/Raumwinkel…ugelkoordinaten). Allerdings gilt diese Formel sicherlich nur bei Einhaltung der gängigen Notation. Da muss ich mal vergleichen :hmm:
R wird übrigens als 1 angenommen. Die Integration ist über die Hemisphere Kugel mit Radius 1. Den "Fluss eines radialsymmetrischen Feldes durch eine Kugeloberfläche" werde ich mal googeln - danke!

Sc4v

Alter Hase

  • »Sc4v« ist der Autor dieses Themas

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

10

13.01.2016, 20:05

Mittlerweile bin ich überzeugt, dass aufgrund der Parametrisierung der Hemisphere im Paper gilt:
§d\omega_i = r*cos\theta_id\theta_id\phi_i§

Man betrachte folgendes Bild


(Link)


§\theta = 0§ ist hier y. In meinem Fall ist es jedoch x.
Mal sehen was ich mit den Überlegungen morgen anfangen kann :hmm:

Werbeanzeige