[Radiance-general] Generating alpha channels using vwrays and rtrace

Jack de Valpine jedev at visarc.com
Sat Feb 25 06:23:33 PST 2012


Hi Iebele,

I understand about the tmeshes... I also concur with Andy (and my second 
suggestion) which is in line with what you are doing.  I think what 
would be nice to figure out is if this could all be done using native 
radiance tools (eg NOT sed/awk) by including a call to rcalc. It has 
been too long so I just do not remember if there is a way to get rcalc 
to do any type of string comparison. If there is not this could be a 
nice feature as this would allow great flexibility processing other 
scene data. Note my desire for doing it all natively in radiance is more 
from elegance than anything else.

Another neat feature would be if there was a way to generate an "alpha" 
file in process of the rendering, where each pixel location also 
includes the material name. This would be sort of like the option to 
include z-buffer data per pixel. I suppose this starts to generate huge 
files though. And may only have utility for a small subset of users.

Regards,

-Jack

On 2/25/2012 5:41 AM, Iebele Abel wrote:
> Well, thanks a lot folks, for your comments on this. Jacks suggestion 
> has been used over years, but recently we started using tmeshes, and 
> because of that parts of the octree is frozen. So we had to find some 
> other solution, without messing around with multiple material files 
> for each tmesh. I've tried both Gregs and Andys suggestions and they 
> both work really smooth. When running the command in a bash script I 
> found awk performing about 25-30% faster as sed. See below how the 
> commands are put in bash (not checking argument values etc.) and their 
> timed outputs pasted thereafter.
>
> There remain some issues in the script when rendering non-square 
> images (like 1920x1080 HD), but that will be worked out. All together 
> this has all been very helpful,
>
> Cheers,
> Iebele
>
>
> --- ralpha script  ---
>
> #!/bin/bash
>
> if ( ! getopts ":v:m:x:y:o:" opt ); then
>         echo "Usage: `basename $0` -v viewfile -m modifier -x xres -y 
> yres -o octree" >&2
>         exit
> fi
>
> while getopts "v:m:x:y:o:" opt; do
>         case $opt in
>         v)      viewfile=$OPTARG
>                 ;;
>         m)      modifier=$OPTARG
>                 ;;
>         x)      xres=$OPTARG
>                 ;;
>         y)      yres=$OPTARG
>                 ;;
>         o)      octree=$OPTARG
>                 ;;
>         esac
> done
>
>
> echo "using awk" >&2
> time vwrays -ff -vf $viewfile -x $xres -y $yres | \
>         rtrace `vwrays -d -vf $viewfile -x $xres -y $yres`  -ffa -om 
> $octree  | \
>         awk -v v1=$modifier '{if( $1 == v1 ) print 1.0; else print 
> 0.0;}'  | \
>         pvalue +x $xres -y $yres -h -da -b -r
>
> echo "using sed" >&2
> time vwrays -ff -vf $viewfile  -pa 0 -x $xres -y $yres | \
>         rtrace -h -x $xres -y $yres  -ffa -om $octree  | \
>         sed -e "s/^$modifier/1/" -e "s/^[^1].*$/0/" | \
>         pvalue -h -r -b -d -x $xres -y $yres
>
>
> --- output --
>
> ./ralpha -v hermitage_brug01.vp -m water -x 16000 -y 16000 -o 
> export.oct > /dev/null
>
> using awk
> real    5m21.743s
> user    8m51.873s
> sys     0m7.116s
>
> using sed
> real    7m55.060s
> user    13m41.563s
> sys     0m5.199s
>
>
>
>
>
>
> 2012/2/25 Andy McNeil <amcneil at lbl.gov <mailto:amcneil at lbl.gov>>
>
>     Oops! The resolution I gave to pvalue doesn't match the resolution
>     in vwrays and rtrace.  I was testing a higher resolution so I
>     could see detail in the image, but forgot to change it back to 100
>     after pasting into the email.  Here's the correct command:
>
>     vwrays -ff -vf test.vp -x 100 -y 100 | \
>     rtrace `vwrays -d -vf test.vp -x 100 -y 100`  -ffa -om test.oct  | \
>     awk '{if($1=="window") print 1.0; else print 0.0;}'  | \
>     pvalue +x 100 -y 100 -h -da -b -r | \
>     ra_tiff - alpha.tif
>
>     Also, you might be able to use rcalc in place of awk.  It depends
>     on whether rcalc can compare strings in an if statement.  I don't
>     know enough about rcalc to know if it's possible.
>
>     Andy
>
>
>     On Feb 24, 2012, at 2:25 PM, Andy McNeil wrote:
>
>>     I kinda like Iebele's method approach better than using black and
>>     white materials.  Using rtrace -om you can create alpha channels
>>     using the same octree that you use for a rendering.  And you can
>>     also create many alpha images for different materials with the
>>     same model.  It just seems less work than fussing with material
>>     files.
>>
>>     Iebele, the main thing you're missing is pvalue to convert the
>>     data stream to image format.  I also used awk for the if
>>     statement.  Here's a complete command:
>>
>>     vwrays -ff -vf test.vp -x 100 -y 100 | \
>>     rtrace `vwrays -d -vf test.vp -x 100 -y 100`  -ffa -om test.oct  | \
>>     *awk '{if($1=="window") print 1.0; else print 0.0;}' *| \
>>     *pvalue +x 500 -y 500 -h -da -b -r *| \
>>     ra_tiff - alpha.tif
>>
>>     Andy
>>
>>
>>
>>     On Feb 24, 2012, at 1:29 PM, giulio antonutto wrote:
>>
>>>     yes, this was :-)
>>>     (sorry missed your reply)
>>>     G
>>>
>>>     On 24 Feb 2012, at 19:45, Jack de Valpine wrote:
>>>
>>>>     Hi Iebele,
>>>>
>>>>     I have done a few different things to achieve this over the
>>>>     years. The one that come most readily to mind is to prep an
>>>>     alternate material file with a black (0 0 0) and white (1 1 1)
>>>>     material assigned as needed. This is one reason the "alias"
>>>>     material option can be quite handy when assigning materials to
>>>>     geometry! With the correct black/white materials this can be
>>>>     rendered out very quickly with -ab 0 and -av 1 1 1.
>>>>
>>>>     I have also done something where (with scripting) you can
>>>>     specify a material name that then get white and everything else
>>>>     gets black. It has been a while so I do not quite remember off
>>>>     hand, but I think that this can also be setup as a big pipe in
>>>>     radiance and using radiance's functional language.
>>>>
>>>>     The first way is pretty easy and if you need to do lots of it
>>>>     then it is possible to script the switching of material
>>>>     assignments. One challenge though is that if you use instances
>>>>     (frozen octrees) you need to remember to assign a material
>>>>     accordingly. Another challenge is thinking about transparencies
>>>>     that might need to be captured in the process...
>>>>
>>>>     Regards,
>>>>
>>>>     -Jack
>>>>     -- 
>>>>     # Jack de Valpine
>>>>     # president
>>>>     #
>>>>     # visarc incorporated
>>>>     #http://www.visarc.com  <http://www.visarc.com/>
>>>>     #
>>>>     # channeling technology for superior design and construction
>>>>
>>>>     On 2/24/2012 2:24 PM, Iebele Abel wrote:
>>>>>     Hi group,
>>>>>
>>>>>     Whilst finding a method to create alpha channels for my
>>>>>     rendered image, I'm playing with vwrays and rtrace. What I
>>>>>     intend is to create an image in which
>>>>>     geometry modified by a particular modifier  is rendered white,
>>>>>     whilst the geometry modified otherwise is rendered black. The
>>>>>     command below comes close to this, it has as output the
>>>>>     modifiers for each surface hit:
>>>>>
>>>>>     vwrays -ff -vf test.vp -x 100 -y 100 | rtrace `vwrays -d -vf
>>>>>     test.vp -x 100 -y 100`  -ffa -om test.oct  | more
>>>>>
>>>>>     Output of this command is like:
>>>>>     ...
>>>>>     floor
>>>>>     floor
>>>>>     floor
>>>>>     window
>>>>>     window
>>>>>     etc...
>>>>>
>>>>>     Now I want that, for example, each occurrence of "window"
>>>>>     sends 3 "bright" RGBE primaries to stdout, and every other
>>>>>     string sends 3 "dark" RGBE primaries to stdout. I can do this
>>>>>     by writing a small program (instead of piping to 'more' as in
>>>>>     the example above), but I wondered if there is a method using
>>>>>     native Radiance tools to do it.
>>>>>
>>>>>     In pseudo code (bold) I think about something like this (where
>>>>>     1 represents a value considered as white in the output, and 0
>>>>>     represents black) :
>>>>>
>>>>>     vwrays -ff -vf test.vp -x 100 -y 100 | rtrace `vwrays -d -vf
>>>>>     test.vp -x 100 -y 100`  -ffa -om test.oct  | *if (stdin ==
>>>>>     "window") fprintf(stdout, "1 1 1" ); else fprintf ( stdout,
>>>>>     "0,0,0"); *| ra_tiff - alpha.tif
>>>>>
>>>>>     So my questions are:
>>>>>     1. how do I format the output of stdout as Radiance RGBE?
>>>>>     2. can I do this using native Radiance tools?
>>>>>
>>>>>     Thanks for any hints.
>>>>>
>>>>>     -Iebele
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>     _______________________________________________
>>>>>     Radiance-general mailing list
>>>>>     Radiance-general at radiance-online.org  <mailto:Radiance-general at radiance-online.org>
>>>>>     http://www.radiance-online.org/mailman/listinfo/radiance-general
>>>>     _______________________________________________
>>>>     Radiance-general mailing list
>>>>     Radiance-general at radiance-online.org
>>>>     <mailto:Radiance-general at radiance-online.org>
>>>>     http://www.radiance-online.org/mailman/listinfo/radiance-general
>>>
>>>     _______________________________________________
>>>     Radiance-general mailing list
>>>     Radiance-general at radiance-online.org
>>>     <mailto:Radiance-general at radiance-online.org>
>>>     http://www.radiance-online.org/mailman/listinfo/radiance-general
>>
>
>
>     _______________________________________________
>     Radiance-general mailing list
>     Radiance-general at radiance-online.org
>     <mailto:Radiance-general at radiance-online.org>
>     http://www.radiance-online.org/mailman/listinfo/radiance-general
>
>
>
>
> _______________________________________________
> Radiance-general mailing list
> Radiance-general at radiance-online.org
> http://www.radiance-online.org/mailman/listinfo/radiance-general
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.radiance-online.org/pipermail/radiance-general/attachments/20120225/44b4f797/attachment-0001.html>


More information about the Radiance-general mailing list