|
![](/i/fill.gif) |
FlyerX <fly### [at] yahoo com> wrote:
> Thanks for the code. I think it should work but when I try to use in
> POV-Ray 3.6.1 (Win32) the FRed declaration stops with "Expected operand,
> colour identifier found instead". After reading about the function on
> the documentation I could not see what was wrong. I though that maybe
> POV-Ray though it was a color instead of a float so I enclosed the
> PIMAGE().red and Mult.red in parenthesis but that did not work.
>
> FlyerX
Oops, didn't test before I posted. A couple of errors. First I missed a
bracket on the function declaration. Second, I guess Mult can't be passed
as a colour and extract the colour channels like that. Instead you can
predetermine them:
#declare PIMAGE = function {pigment{image_map {jpeg "body_01.jpg"
interpolate 2}}}
#declare Mult=rgb <1,1,1>; //multiplier colour
#declare MR=Mult.red;
#declare MG=Mult.green;
#declare MB=Mult.blue;
//r,g,b components need to be calculated individually as functions can't
carry vectors:
#declare FRed=function (x,y,z) {PIMAGE(x,y,z).red*MR}
#declare FGrn=function (x,y,z) {PIMAGE(x,y,z).green*MG}
#declare FBlu=function (x,y,z) {PIMAGE(x,y,z).blue*MB}
//assemble using average: (colours multiplied by 3 so they average to 1)
#declare Pig=
pigment{average
pigment_map{
[function{FRed(x,y,z)*3} color_map{[0 rgb 0][1 rgb <1,0,0>]}]
[function{FGrn(x,y,z)*3} color_map{[0 rgb 0][1 rgb <0,1,0>]}]
[function{FBlu(x,y,z)*3} color_map{[0 rgb 0][1 rgb <0,0,1>]}]
}
}
-tgq
Post a reply to this message
|
![](/i/fill.gif) |