[Radiance-general] sky visibility

Lars O. Grobe grobe at gmx.net
Tue Oct 23 01:40:11 PDT 2012


Hi Ji Zhang!

> vwrays -fd -vf ./view_vta.vf -x 800 -y 800 | rtrace -av 1 1 1 -w -h -fda -opdv ./scene1.oct > ./zzz_vta_pts_P_N_v_1.txt
> vwrays -fd -vf ./view_vta.vf -x 800 -y 800 | rtrace -av 1 1 1 -w -h -fda -opdv ./scene1.oct | rcalc -e '$1=if($7,1,0); $2=1' | total > ./zzz_vta_pts_total_1.txt

The problem here probably is, that your fisheye view -vta produces pixel values outside the circular image you would expect. These get counted in the total number of pixels. So if you are using -vta, you need  way to filter pixels lying outside the circle. Several approaches to do so come to my mind. A generic one is:

1) vwrays -vta into a scene consisting only of a source, corresponding to the hemisphere you want to sample
2) pipe the output to rtrace, check for intersections with the source and get origin and direction vectors
3) pipe that into rtrace again, this time checking for your pixel values as above...

Still, there is a problem with the -vta (equiangular) fisheye not being a equisolid fisheye, so pixels do not represent equal solid angles.... for sky view factors, that is what you would want, but for your definition, you want the ration (solid angle visible sky) / (solid angle sky without obstructions). So either calculate the solid angle of the pixel depending on the distance from view centre, or go with rpict, create a fisheye image (-vta), and use the S and T functions to filter pixels outside the view and to weigh pixels by their solid angle. So in above commands, you would not set the pixel value to 0 or 1, but to 0 or S(n).

Again, I could not try out all this and send a complete example, just trying to point you to some direction.

Cheers, Lars.




More information about the Radiance-general mailing list