next up previous
Next: Homework 4: Due Week Up: Week 4: Form Factors Previous: Theory: Form Factors

Subsections

   
Practice: Computing Form Factors

Choices

Point to Area Form Factors

One of the problem with looking at point to point form factors is that they blow up when the square of the distance between the two points is small compared to the area of the source. A solution to this was motivated by the desire to eliminate the hemicube and use ray tracing for computing visibility[36]. Assuming each ray is sampling some disk on the source, we want the form factor from a point to a disk. This can be expressed (in $[0-\pi]$ terms) as

\begin{displaymath}F_{dA_{r},A_s} = \frac{A_s}{d^2 + \frac{A_s}{\pi}}
\end{displaymath}

for a disk centered over and perpendicular to dAr (d2 is the distance between the point and the center of the disk, squared). We can use this to approximate the form factor to any disk as

\begin{displaymath}F_{dA_{r},A_s} \approx \frac{\cos(\theta_{r})\cos(\theta_{s}) {\rm
vis}(r,s) A_s}{d^2 + \frac{A_s}{\pi}}
\end{displaymath}

with the ${\rm vis}(r,s)$ term being the visibility between the differential receiver and the center of the disk.

The point to disk method solves some problems, but introduces some as well. There are often artifacts in corners, due to approximating the source as a collection of disks. A solution to that was to use analytic form factors between a point and a polygon.


\begin{displaymath}F_{dA_{r},A_s} = \frac{1}{2}\sum_{i = 1}^n \beta_i \cos \alpha_i
\end{displaymath}

where $\beta_i$ is the angle between PVi and PVi+1 and $\alpha_i$ is the angle between the normal of the triangle PViVi+1 and the surface normal N of the differential area. If we let $\overline{R_i}$ be the unit vector from point P to vertex Vi, then this can be written more explicitly as

\begin{displaymath}F_{dA_{r},A_s} = -\frac{1}{2}\sum_{i = 1}^n \arccos(\overline...
...\bullet \overline{(\overline{R}_i \times
\overline{R}_{i+1})}
\end{displaymath}

Note the difference in the factor of $\pi$ from the CW book, which has been explained ad nauseum. Also note the sign difference. I'm pretty sure I'm right. If you get negative form factors when you should get positive ones, flip the sign.

Although several of these methods allow visibility to be checked at each kernel evaluation, it is sometimes useful to delay visibility checks until after the form factor has been computed. Also, you may want to check visibility much more coarsely than you computed the form factors.

Orientation Traps and Clipping issues

The simplest way to evaluate the kernel is to use the following

\begin{displaymath}k(x,y) = -\frac{((x - y) \bullet N_r) ((x - y) \bullet N_s)}{((x -
y)\bullet(x - y))^2}.
\end{displaymath}

This works fine until both polygons are facing away from each other. Then this gives a positive answer. You should get similar problems with the point to polygon form factor. Therefore, check to see if one object is completely behind the other and set those form factors to zero. This only works easily for planar geometry, but can be done for NURBS with some effort, and you should still do a per kernel evaluation check.

The point to polygon and point to disk methods give incorrect results if the source is partially behind the receiver. This is not so bad for point to disk as it is an approximation anyway, but for point to poly you should clip based on the support plane for the receiving point.


next up previous
Next: Homework 4: Due Week Up: Week 4: Form Factors Previous: Theory: Form Factors
Comments: Brian Edward Smits
1998-06-08