|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
For instance, I.ve got two files "wet.bmp" and "dry.bmp", and the third
file's name is "factor.bmp". All of them are of the same resolution,
256*128 for example.
Now, I want to use them to generate a new pigment. I've got the following:
#declare Wetting=function{ pigment {image_map{sys "wet.bmp"} }}
#declare Drying=function{ pigment {image_map{sys "dry.bmp"} }}
#declare Factor=function{ pigment {image_map{sys "factor.bmp"} }}
plane{z,-0.00001
pigment {
image_map {
function 256 128 { pigment {
color (1-Factor(x,y,z).gray)*Wetting(x,y,z) +
Drying(x,y,z)*Factor(x,y,z).gray (*)
}}
}
}
}
But when parsing, error message appears at line (*):
Parse Error: Float expected but vector or color expression found.
It seems that (x,y,z), I use to locate the pixel, does not work. Maybe i am
still not familiar enough with the syntex of how to use
user-defined-fuction, and maybe there is an other way to implement what i
want to do.
So any advice will be deeply appreciated!
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"lien0n" <nomail@nomail> wrote:
> It seems that (x,y,z), I use to locate the pixel, does not work. Maybe i am
> still not familiar enough with the syntex of how to use
> user-defined-fuction, and maybe there is an other way to implement what i
> want to do.
>
> So any advice will be deeply appreciated!
If I'm not mistaken, x,y, and z are reserved for the POV-Ray coordinate
system only. Try using (X,Y,Z) for your functions.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Mienai" <Mienai> wrote:
> "lien0n" <nomail@nomail> wrote:
> > It seems that (x,y,z), I use to locate the pixel, does not work. Maybe i am
> > still not familiar enough with the syntex of how to use
> > user-defined-fuction, and maybe there is an other way to implement what i
> > want to do.
> >
> > So any advice will be deeply appreciated!
>
> If I'm not mistaken, x,y, and z are reserved for the POV-Ray coordinate
> system only. Try using (X,Y,Z) for your functions.
Another error:
undeclared identifier X found instead.
Thx anyway!
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"lien0n" <nomail@nomail> wrote:
> "Mienai" <Mienai> wrote:
> > "lien0n" <nomail@nomail> wrote:
> > > It seems that (x,y,z), I use to locate the pixel, does not work. Maybe i am
> > > still not familiar enough with the syntex of how to use
> > > user-defined-fuction, and maybe there is an other way to implement what i
> > > want to do.
> > >
> > > So any advice will be deeply appreciated!
> >
> > If I'm not mistaken, x,y, and z are reserved for the POV-Ray coordinate
> > system only. Try using (X,Y,Z) for your functions.
>
> Another error:
> undeclared identifier X found instead.
>
> Thx anyway!
of course,if i add something like this:
#local X=0;
#local Y=0;
#local Z=0;
then Factor(X,Y,Z) would not to iterate inside the whole bmp, it just
extract the value at pixel (0,0,0).
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Wasn't it lien0n who wrote:
>For instance, I.ve got two files "wet.bmp" and "dry.bmp", and the third
>file's name is "factor.bmp". All of them are of the same resolution,
>256*128 for example.
>
>Now, I want to use them to generate a new pigment. I've got the following:
>
>#declare Wetting=function{ pigment {image_map{sys "wet.bmp"} }}
>#declare Drying=function{ pigment {image_map{sys "dry.bmp"} }}
>#declare Factor=function{ pigment {image_map{sys "factor.bmp"} }}
>
>plane{z,-0.00001
> pigment {
> image_map {
> function 256 128 { pigment {
> color (1-Factor(x,y,z).gray)*Wetting(x,y,z) +
>Drying(x,y,z)*Factor(x,y,z).gray (*)
> }}
> }
> }
>}
>
>But when parsing, error message appears at line (*):
> Parse Error: Float expected but vector or color expression found.
>It seems that (x,y,z), I use to locate the pixel, does not work. Maybe i am
>still not familiar enough with the syntex of how to use
>user-defined-fuction, and maybe there is an other way to implement what i
>want to do.
>
>So any advice will be deeply appreciated!
Although POV defines colour functions, I'm pretty sure that you can't
use them as render-time colours.
At parse time you can pick individual colours from individual points of
a colour function, like
#declare My_Colour = Wetting(1,2,3) * (1-Factor(1,2,3).gray);
You can use a render-time float function as PATTERN of a pigment, but
you can't use render-time colour functions as the COLOUR of a pigment.
So what you can do is to declare Wetting and Drying as simple pigments,
not functions, use the float function "Factor(x,y,z).gray" as a pattern,
and then use that pattern as a pigment_map to map two image_mapped
pigments, like this:
#declare Wetting = pigment {image_map{sys "wet.bmp"} }
#declare Drying = pigment {image_map{sys "dry.bmp"} }
#declare Factor = function {pigment {image_map{sys "factor.bmp"} }}
plane{z,-0.00001
pigment {
function{Factor(x,y,z).gray}
pigment_map {
[0.0 Wetting]
[1.0 Drying]
}
}
}
I believe that gives you the particular effect that you were trying to
achieve. It's a lot less flexible than render type colour functions
would be, but you don't need that flexibility in this particular case.
--
Mike Williams
Gentleman of Leisure
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
In article <web.42300839aa72325b598059850@news.povray.org>,
"lien0n" <nomail@nomail> wrote:
> plane{z,-0.00001
> pigment {
> image_map {
> function 256 128 { pigment {
> color (1-Factor(x,y,z).gray)*Wetting(x,y,z) +
> Drying(x,y,z)*Factor(x,y,z).gray (*)
> }}
> }
> }
> }
Break the pigment out to see what's going wrong:
pigment {
color (1-Factor(x,y,z).gray)*Wetting(x,y,z) +
Drying(x,y,z)*Factor(x,y,z).gray
}
Put simply...you can't do this. There's no mechanism in standard POV-Ray
for taking a color function and using it directly as a pigment color. If
there were (and if this were corrected to extract gray values from
Wetting() and Drying()), this would still give a grayscale result.
It is possible, though...just a bit tricky. You have to average 3
separate pigments, with the colors multiplied by 3 to counter the divide
in the average so you can get a straight add.
pigment {average
pigment_map {
[1
function {(1-Factor(x,y,z).red)*Wetting(x,y,z).red +
Drying(x,y,z).red*Factor(x,y,z).red}
color_map {[0 rgb 0] [1 red 3]}
]
[1
function {(1-Factor(x,y,z).green)*Wetting(x,y,z).green +
Drying(x,y,z).green*Factor(x,y,z).green}
color_map {[0 rgb 0] [1 green 3]}
]
[1
function {(1-Factor(x,y,z).blue)*Wetting(x,y,z).blue +
Drying(x,y,z).blue*Factor(x,y,z).blue}
color_map {[0 rgb 0] [1 blue 3]}
]
}
}
Oh, and for the sake of your disk space, bandwidth, and everyone else,
please don't use BMPs. PNGs let you do everything they do and more, are
compressed, and are lossless.
--
Christopher James Huff <cja### [at] gmailcom>
POV-Ray TAG: <chr### [at] tagpovrayorg>
http://tag.povray.org/
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Mike Williams <nos### [at] econymdemoncouk> wrote:
> Although POV defines colour functions, I'm pretty sure that you can't
> use them as render-time colours.
>
> At parse time you can pick individual colours from individual points of
> a colour function, like
>
> #declare My_Colour = Wetting(1,2,3) * (1-Factor(1,2,3).gray);
>
> You can use a render-time float function as PATTERN of a pigment, but
> you can't use render-time colour functions as the COLOUR of a pigment.
>
> So what you can do is to declare Wetting and Drying as simple pigments,
> not functions, use the float function "Factor(x,y,z).gray" as a pattern,
> and then use that pattern as a pigment_map to map two image_mapped
> pigments, like this:
>
> #declare Wetting = pigment {image_map{sys "wet.bmp"} }
> #declare Drying = pigment {image_map{sys "dry.bmp"} }
> #declare Factor = function {pigment {image_map{sys "factor.bmp"} }}
>
> plane{z,-0.00001
> pigment {
> function{Factor(x,y,z).gray}
> pigment_map {
> [0.0 Wetting]
> [1.0 Drying]
> }
> }
> }
>
> I believe that gives you the particular effect that you were trying to
> achieve. It's a lot less flexible than render type colour functions
> would be, but you don't need that flexibility in this particular case.
>
> --
> Mike Williams
> Gentleman of Leisure
wow~~,it works, firstly thks so much!
But will you pls to say something about how to use flexible colour functions
at render-time?
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Christopher James Huff <cja### [at] gmailcom> wrote:
> In article <web.42300839aa72325b598059850@news.povray.org>,
> "lien0n" <nomail@nomail> wrote:
>
> > plane{z,-0.00001
> > pigment {
> > image_map {
> > function 256 128 { pigment {
> > color (1-Factor(x,y,z).gray)*Wetting(x,y,z) +
> > Drying(x,y,z)*Factor(x,y,z).gray (*)
> > }}
> > }
> > }
> > }
>
> Break the pigment out to see what's going wrong:
> pigment {
> color (1-Factor(x,y,z).gray)*Wetting(x,y,z) +
> Drying(x,y,z)*Factor(x,y,z).gray
> }
>
> Put simply...you can't do this. There's no mechanism in standard POV-Ray
> for taking a color function and using it directly as a pigment color. If
> there were (and if this were corrected to extract gray values from
> Wetting() and Drying()), this would still give a grayscale result.
>
> It is possible, though...just a bit tricky. You have to average 3
> separate pigments, with the colors multiplied by 3 to counter the divide
> in the average so you can get a straight add.
>
> pigment {average
> pigment_map {
> [1
> function {(1-Factor(x,y,z).red)*Wetting(x,y,z).red +
> Drying(x,y,z).red*Factor(x,y,z).red}
> color_map {[0 rgb 0] [1 red 3]}
> ]
> [1
> function {(1-Factor(x,y,z).green)*Wetting(x,y,z).green +
> Drying(x,y,z).green*Factor(x,y,z).green}
> color_map {[0 rgb 0] [1 green 3]}
> ]
> [1
> function {(1-Factor(x,y,z).blue)*Wetting(x,y,z).blue +
> Drying(x,y,z).blue*Factor(x,y,z).blue}
> color_map {[0 rgb 0] [1 blue 3]}
> ]
> }
> }
>
> Oh, and for the sake of your disk space, bandwidth, and everyone else,
> please don't use BMPs. PNGs let you do everything they do and more, are
> compressed, and are lossless.
>
> --
> Christopher James Huff <cja### [at] gmailcom>
> POV-Ray TAG: <chr### [at] tagpovrayorg>
> http://tag.povray.org/
Yes, i tried and it works, many thks!
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|