|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Simon Adameit" <gom### [at] gmxde> wrote in news:3d9abfa1@news.povray.org
> If you have such problems you should perhaps think about changing the way
> you write your scenes and not about changing POV-Ray. One way would for
> example be to declare your big objects in include files.
This is a good idea, and I do it already.
But, You have such big objct, (already in .inc file) like :
union { // my space ship - part of BIG scene
difference {
merge { // 30 lines... hull // }
union {
union { // 10 lines - hole for missiles }
union {
// 30 lines - hole for gun
}
union {
// 30 lines - random spheres - damage from bullets
}
}
}
object { #include "my_gun.inc" }
}
and You want fastly check how ship would like without random spheres
damage.
This future isn't something realy important, it's just to have more
comfortable syntax :) And it's look quite easy to code. Currently i'm happy
with this ignore macro, but maybe keyword would be better ?
I.e. it is needed with infinite objects.
--
#macro g(U,V)(.4*abs(sin(9*sqrt(pow(x-U,2)+pow(y-V,2))))*pow(1-min(1,(sqrt(
pow(x-U,2)+pow(y-V,2))*.3)),2)+.9)#end#macro p(c)#if(c>1)#local l=mod(c,100
);g(2*div(l,10)-8,2*mod(l,10)-8)*p(div(c,100))#else 1#end#end light_source{
y 2}sphere{z*20 9pigment{function{p(26252423)*p(36455644)*p(66656463)}}}//M
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Simon Adameit" <gom### [at] gmxde> wrote in news:3d9ac09e@news.povray.org
> I dont like this suggestion because it makes the code less readable.
same as using variables named 'a' 'd' 'asd' instead of shipSize, gunRadius
etc... :) it's up to user how he would use tool.
> You cant tell from finish{finWater1} if it is a declared finish or a
> macro.
macro is for users that use already finWater1() to have shorten syntax then
finish{finWater1}. It realy matter if scene have i.e. 100 objects placed
manualy (without loops / editors / etc)
--
#macro g(U,V)(.4*abs(sin(9*sqrt(pow(x-U,2)+pow(y-V,2))))*pow(1-min(1,(sqrt(
pow(x-U,2)+pow(y-V,2))*.3)),2)+.9)#end#macro p(c)#if(c>1)#local l=mod(c,100
);g(2*div(l,10)-8,2*mod(l,10)-8)*p(div(c,100))#else 1#end#end light_source{
y 2}sphere{z*20 9pigment{function{p(26252423)*p(36455644)*p(66656463)}}}//M
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Rafal 'Raf256' Maj" <raf### [at] raf256com> wrote in
news:Xns### [at] 204213191226
>> You cant tell from finish{finWater1} if it is a declared finish or a
>> macro.
> macro is for users that use already finWater1() to have shorten syntax
> then finish{finWater1}. It realy matter if scene have i.e. 100 objects
> placed manualy (without loops / editors / etc)
best exaple - if each of objects have realy complex textures - with many
layers, and some layers use material maps, or color maps
color_map {
[0.0 colEye]
[0.1 colEye]
[0.11 colSkin]
[0.5 colSkin]
[1.0 colBlood]
}
// -----------
color_map {
[0.0 color rgbft colEye]
[0.1 color rgbft colEye]
[0.11 color rgbft colSkin]
[0.5 color rgbft colSkin]
[1.0 color rgbft colBlood]
}
--
#macro g(U,V)(.4*abs(sin(9*sqrt(pow(x-U,2)+pow(y-V,2))))*pow(1-min(1,(sqrt(
pow(x-U,2)+pow(y-V,2))*.3)),2)+.9)#end#macro p(c)#if(c>1)#local l=mod(c,100
);g(2*div(l,10)-8,2*mod(l,10)-8)*p(div(c,100))#else 1#end#end light_source{
y 2}sphere{z*20 9pigment{function{p(26252423)*p(36455644)*p(66656463)}}}//M
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Rafal 'Raf256' Maj" wrote:
> This future isn't something realy important, it's just to have more
> comfortable syntax :) And it's look quite easy to code. Currently i'm
happy
> with this ignore macro, but maybe keyword would be better ?
> I.e. it is needed with infinite objects.
>
For infinite objects you could make macro like this:
#macro _()
#declare _a213_9xyio0_23sd_f=
#end
It would be used this way:
_()object{....100 lines of csg}
But I prefer to write my scenes in a way so that such problems dont occur.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Rafal 'Raf256' Maj" wrote:
> best exaple - if each of objects have realy complex textures - with many
> layers, and some layers use material maps, or color maps
>
> color_map {
> [0.0 colEye]
> [0.1 colEye]
> [0.11 colSkin]
> [0.5 colSkin]
> [1.0 colBlood]
> }
I dont see why one would want to use macros anyway in such a case.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Simon Adameit" <gom### [at] gmxde> wrote in news:3d9ac7db@news.povray.org
> For infinite objects you could make macro like this:
> #macro _()
> #declare _a213_9xyio0_23sd_f=
> #end
> _()object{....100 lines of csg}
thanks :)
> But I prefer to write my scenes in a way so that such problems dont
> occur.
it's not a problem - ofcourse it is only needed in writting state, final
version doesn't need it
--
#macro g(U,V)(.4*abs(sin(9*sqrt(pow(x-U,2)+pow(y-V,2))))*pow(1-min(1,(sqrt(
pow(x-U,2)+pow(y-V,2))*.3)),2)+.9)#end#macro p(c)#if(c>1)#local l=mod(c,100
);g(2*div(l,10)-8,2*mod(l,10)-8)*p(div(c,100))#else 1#end#end light_source{
y 2}sphere{z*20 9pigment{function{p(26252423)*p(36455644)*p(66656463)}}}//M
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Rafal 'Raf256' Maj" <raf### [at] raf256com> wrote in message
news:Xns### [at] 204213191226...
>
> union { // my space ship - part of BIG scene
> union {
> // 30 lines - random spheres - damage from bullets
> }
> and You want fastly check how ship would like without random spheres
> damage.
>
I'd have something like:
difference{
#declare numbull=100;
#declare n=0;
#while(n<numbull)
sphere {RANDOM_LOCATION, SIZE }
#declare n=n+1;
#end
}
Then test various values of numbull
You could even but your numbull declaration at the top of the code to make
it easier to find.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Rafal 'Raf256' Maj" <raf### [at] raf256com> wrote in message
news:Xns### [at] 204213191226...
> Would it be a big problem to allow syntax :
>
> #macro finWater1 reflection { .01 .2 } #end
> finish { finWater1 }
>
> instead of finish { finWater1() }
>
I don't see the point. Usually macros are used to pass new variables into
repeated code i.e,
#macro finWater1 (minref,maxref)
reflection { minref,maxref }
#end
finish { finWater1(.01,.2) }
Since you are not passing variables you should just use a #declare,
#declare finWater1= finish{reflection { .01 .2 }}
finish{finWater1}
-tgq
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
There are some cases where you cant use #declare for example in a blob but
you are right that in the examples he gave #declare would have been better.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Simon Adameit" <gom### [at] gmxde> wrote in news:3d9af521@news.povray.org
> There are some cases where you cant use #declare for example in a blob
> but you are right that in the examples he gave #declare would have
> been better.
example that I give here is in fact quite poor, I thought about this
macro's when creating i.e. textures.
compare :
pigment { marble cmapGray } // imho bets - now impossible
pigment { marble cmapGray() } // almost best
pigment { marble color_map {cmapGray } }// typical
pigment { marble color_map{[0 color rgb 0][color rgb 1]}// worst
or even better - example with creating long color_maps example - above
another example - 1 block with 2 definitions, like
finish { finWater finGlow }
where finWater is reflection,specular,etc
and finGlow is ambient / diffuse settings
--
#macro g(U,V)(.4*abs(sin(9*sqrt(pow(x-U,2)+pow(y-V,2))))*pow(1-min(1,(sqrt(
pow(x-U,2)+pow(y-V,2))*.3)),2)+.9)#end#macro p(c)#if(c>1)#local l=mod(c,100
);g(2*div(l,10)-8,2*mod(l,10)-8)*p(div(c,100))#else 1#end#end light_source{
y 2}sphere{z*20 9pigment{function{p(26252423)*p(36455644)*p(66656463)}}}//M
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|