Hi Claus.
Interesting problem you have here.
With a lot of inspiration from Thomas Bleicher’s tutorial
(http://sites.google.com/site/tbleicher/radiance/stencil) which he pointed
me to back in August (yes, it took me a while to gather the courage to go
down that path) I have managed to devise a small script (or rather a command
line) which allows me to render the irradiances received at any point in a
scene with all glow materials (the standard –i irradiance option for rpict
does not work for glow materials).
[...]
My question is simply: how to reduce the significant amount of rendering
noise for the (near) vertical surfaces? The irradiance on those surfaces is
dominated by energy coming from the horizontal ground plane, which is a
single box object (genbox).
When I look at your images I see the following:
1) The vertical surfaces receive far more energy at the top than
the ground (strong white dots vs. green and yellow shades).
I think this indicates that the higher you get the more the
ground contributes to the energy. I'm not sure that's logical.
2) The density is much better at the top than at the bottom.
Therefore the lower you get the more zero contributions you
get.
I feel I have tried “everything” with the render options (see my setting
below) but have seen no improvement in render noise … hope to get some
pointers/ideas from the list.
When I look at your render options below I see that you have an
'-ab' of 0 which limits your (final) rtrace calculation to the direct
component only. However, glow surfaces are considered direct
contributors in Radiance. If you want to use this setting you should
change all the definitions of 'glow' in your materials to 'light'. And
then you probably have to subdivide large polygons like the ground.
I use the following command line command to render the irradiance:
vwrays -ff -x $XRES -y $YRES -vf $NAME.vp \
>rtrace -ffa -opN $NAME.oct \
>sed '1,8d' \
Instead of sed you can just add "-h" to rtrace to suppress the
header information. No sed required. You should also add a "-w"
to avoid any warning messages.
>rcalc -ia6 -of \
-e '$1=$1 + 0.001*$4;$2=$2 + 0.001*$5;$3=$3 + 0.001*$6' \
-e 'out(v)=if(sqrt($4*$4 + $5*$5 + $6*$6) - 0.9,v,-1)' \
-e '$4=out($4);$5=out($5);$6=out($6)' \
>rtrace -ffc -x $XRES -y $YRES -I -ab 0 -aw 1 -ad 4096 -ar 4096 -dt 0.0 -dp
8192 -ds 0.01 -dj 0.9 $NAME.oct > $NAME.irradiance.hdr
Regards,
Thomas
···
2010/12/29 Claus Brøndgaard Madsen <cbm@create.aau.dk>:
Hi Claus,
I am also a little puzzled by your results. As Thomas mentioned, glow surfaces are included in the indirect calculation, so unless you specified a positive radius value for your glow materials, they should not light your scene at all with -ab 0. The complexities of your command line are mostly unnecessary. You should be able to simplify it to:
vwrays -ff -x $XRES -y $YRES -vf $NAME.vp \
rtrace -h -fff -opN $NAME.oct \
rtrace -ffc -x $XRES -y $YRES -I -ab 1 -aa 0.1 -ad 4096 -ar 0 $NAME.oct > $NAME.irradiance.hdr
Rays with zero normals will be evaluated as (0 0 0) by the second rtrace, and an epsilon is always added to the origin in the direction of the normal when using the -I option, so your rcalc command, while clever, is unnecessary. I changed your -ab to 1 and got rid of the other unnecessary options. I set -ar to 0, since you seem to want a very high resolution result. I added -aa 0.1 for the same reason.
If you are still getting this peculiar noise pattern after these changes, please post your scene description and I'll have a look at it.
Best,
-Greg
P.S. Regarding mailing list policy on attachments. In general, I prefer that people not attach large files to e-mails, and people have been very good about this, posting larger images on websites, instead. Small JPEGs (less than 100K or so) are acceptable; likewise small text attachments are OK.
···
From: Claus Brøndgaard Madsen <cbm@create.aau.dk>
Date: December 29, 2010 1:59:30 PM PST
Dear list,
With a lot of inspiration from Thomas Bleicher’s tutorial (http://sites.google.com/site/tbleicher/radiance/stencil) which he pointed me to back in August (yes, it took me a while to gather the courage to go down that path) I have managed to devise a small script (or rather a command line) which allows me to render the irradiances received at any point in a scene with all glow materials (the standard –i irradiance option for rpict does not work for glow materials).
I attach (not so sure about list rules regarding attachments) the scene rendered where pixel values represent the outgoing radiance of the glow materials (radiance.jpg) and the scene rendered such that every pixel represents the incident irradiance in the same scene (irradiance.jpg). There are no other light sources than the glow materials.
My question is simply: how to reduce the significant amount of rendering noise for the (near) vertical surfaces? The irradiance on those surfaces is dominated by energy coming from the horizontal ground plane, which is a single box object (genbox).
I feel I have tried “everything” with the render options (see my setting below) but have seen no improvement in render noise … hope to get some pointers/ideas from the list.
I use the following command line command to render the irradiance:
vwrays -ff -x $XRES -y $YRES -vf $NAME.vp \
>rtrace -ffa -opN $NAME.oct \
>sed '1,8d' \
>rcalc -ia6 -of \
-e '$1=$1 + 0.001*$4;$2=$2 + 0.001*$5;$3=$3 + 0.001*$6' \
-e 'out(v)=if(sqrt($4*$4 + $5*$5 + $6*$6) - 0.9,v,-1)' \
-e '$4=out($4);$5=out($5);$6=out($6)' \
>rtrace -ffc -x $XRES -y $YRES -I -ab 0 -aw 1 -ad 4096 -ar 4096 -dt 0.0 -dp 8192 -ds 0.01 -dj 0.9 $NAME.oct > $NAME.irradiance.hdr
In short: use vwrays to generate the primary rays needed to render the scene, pipe into rtrace to get intersection points and normals, pipe into sed to get rid of header generated by rtrace and leave only lines with intersection point and normal, pipe through rcalc to “lift” intersection points 1/1000 of a unit in the direction of the normal (to avoid surface self-intersection problems later when using intersection point and normal as the start point for an incident irradiance computation) … and rcalc also sets a (-1, -1, -1) direction vector if the original surface normal from rtrace is close to zero length, finally pipe through rtrace, this time with –I option to gather incident irradiance at the “lifted” surface point.
Best,
Claus