|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
This is what I'm trying to get:
object { MyGrass1 translate <-42.5,0,46.9> }
object { MyGrass2 translate <-37.5,0,46.9> }
object { MyGrass1 translate <-32.5,0,46.9> }
object { MyGrass2 translate <-27.5,0,46.9> }
object { MyGrass1 translate <-22.5,0,46.9> }
object { MyGrass2 translate <-17.5,0,46.9> }
object { MyGrass1 translate <-12.5,0,46.9> }
object { MyGrass2 translate <12.5,0,46.9> }
object { MyGrass1 translate <17.5,0,46.9> }
object { MyGrass2 translate <22.5,0,46.9> }
object { MyGrass1 translate <27.5,0,46.9> }
object { MyGrass2 translate <32.5,0,46.9> }
object { MyGrass1 translate <37.5,0,46.9> }
object { MyGrass2 translate <42.5,0,46.9> }
object { MyGrass2 translate <-42.5,0,51.9> }
object { MyGrass1 translate <-37.5,0,51.9> }
object { MyGrass2 translate <-32.5,0,51.9> }
object { MyGrass1 translate <-27.5,0,51.9> }
object { MyGrass2 translate <-22.5,0,51.9> }
object { MyGrass1 translate <-17.5,0,51.9> }
object { MyGrass2 translate <-12.5,0,51.9> }
object { MyGrass1 translate <12.5,0,51.9> }
object { MyGrass2 translate <17.5,0,51.9> }
object { MyGrass1 translate <22.5,0,51.9> }
object { MyGrass2 translate <27.5,0,51.9> }
object { MyGrass1 translate <32.5,0,51.9> }
object { MyGrass2 translate <37.5,0,51.9> }
object { MyGrass1 translate <42.5,0,51.9> }
Except I can't figure out how to get the stupid while loops to create a
checkerboard shape :-/ This is what I've gotten so far (the MyGrass
Objects are both 5x5 shapes):
#declare X = 0;
#while (X <= 5)
#declare Z = 0;
#while(Z <= 6)
object { MyGrass1 translate <-12.5-(X*5),0,1.9+(Z*5)> }
object { MyGrass1 translate <12.5+(X*10),0,1.9+(Z*5)> }
#declare Z = Z + 2;
#end
#declare X = X + 2;
#end
Any help would be GREATLY appreciated :-/
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Wasn't it Brent G who wrote:
> I can't figure out how to get the stupid while loops to create a
>checkerboard shape :-/ This is what I've gotten so far (the MyGrass
>Objects are both 5x5 shapes):
>
>#declare X = 0;
>#while (X <= 5)
>
> #declare Z = 0;
> #while(Z <= 6)
>
> object { MyGrass1 translate <-12.5-(X*5),0,1.9+(Z*5)> }
> object { MyGrass1 translate <12.5+(X*10),0,1.9+(Z*5)> }
>
> #declare Z = Z + 2;
> #end
>
> #declare X = X + 2;
>#end
You might consider doing something like this:
#declare Chequer = union {
object {MyGrass1}
object {MyGrass2 translate <5,0,0>}
object {MyGrass1 translate <5,0,5>}
object {MyGrass2 translate <0,0,5>}
}
#declare X = 0;
#while (X <= 5)
#declare Z = 0;
#while(Z <= 6)
object { Chequer translate <-12.5-(X*5),0,1.9+(Z*5)> }
object { Chequer translate <12.5+(X*5),0,1.9+(Z*5)> }
#declare Z = Z + 2;
#end
#declare X = X + 2;
#end
--
Mike Williams
Gentleman of Leisure
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
// Hi Brent,
//
// as usual there are many solutions, for example the following one:
// (simply copy this *whole* post to POV-Ray and render it)
#declare MyGrass1 =
sphere { 0, 2.5
pigment { color rgb <0, 1, 0> }
finish { ambient 1 }
}
#declare MyGrass2 =
sphere { 0, 2.5
pigment { color rgb <1, 1, 0> }
finish { ambient 1 }
}
camera { location <1, 3, -2>*50 look_at 0 translate 60*z angle 30 }
#declare X = 0;
#while (X <= 5)
#declare Z = 0;
#while(Z <= 6)
#if (mod(X+Z,2)=0) // also try "X*Z" instead of "X+Z"!
object { MyGrass1 translate <-12.5-X*5, 0, 51.9+Z*5> }
object { MyGrass2 translate < 12.5+X*5, 0, 51.9+Z*5> }
#else
object { MyGrass2 translate <-12.5-X*5, 0, 51.9+Z*5> }
object { MyGrass1 translate < 12.5+X*5, 0, 51.9+Z*5> }
#end
#declare Z = Z + 1;
#end
#declare X = X + 1;
#end
// A different solution is to prefix this code with the line
//
// #declare GrassType = 1;
//
// and replace the #if-line by the two lines
//
// #declare GrassType = 3-GrassType; // 1 --> 2; 2 --> 1
// #if (GrassType = 1)
//
// or even (with a third grass):
//
// #switch (GrassType)
//
// #case (1)
// object { MyGrass1 ... }
// object { MyGrass2 ... }
// #declare GrassType = 2;
// #break
//
// #case (2)
// object { MyGrass2 ... }
// object { MyGrass3 ... }
// #declare GrassType = 3;
// #break
//
// #case (3)
// object { MyGrass3 ... }
// object { MyGrass1 ... }
// #declare GrassType = 1;
//
// #end
//
//
// If the number of grass objects isn't too large you can also
// read their type from a string (or from an array of strings,
// one for each row.) If the MyGrasses are stored in an array
// MyGrass, the following lines would look up the type of grass
// and put the corresponding piece of grass into the scene:
//
// #declare Index = X*7+Z; // first row: 0...6, then 7...13, etc.
// #declare TypeCharacter = substr(GrassTypeString,Index+1,1)
// #declare TypeNumber = val(TypeCharacter);
// object { MyGrass[TypeNumber] translate ... }
//
// or in one line:
//
// object { MyGrass[val(substr(GrassTypeString,X*7+Z+1,1))] translate ... }
//
// where GrassTypeString begins like "121212121212" or
// (with more grass types) "12345432123454321" etc.
// In a similar way you could even encode rotations of
// the patches of grass: rotate val(...)*90*y
//
// This collection of ideas should solve more POV-problems
// than you had (until now ... :)
// Happy POVing!
//
// Sputnik
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Brent G <pov### [at] bc-hqcom> wrote in message
news:3f91fee5$1@news.povray.org...
> Except I can't figure out how to get the stupid while loops to create a
> checkerboard shape :-/ This is what I've gotten so far (the MyGrass
> Objects are both 5x5 shapes):
>
How about this, minimal changes to what you already have...
#declare My_Grass = array[2] { MyGrass1, MyGrass2 }
#declare OddEven = 0;
#declare X = 0;
#while (X <= 5)
#declare Z = 0;
#while(Z <= 6)
#declare OddEven = ( ! OddEven );
object { My_Grass[OddEven] translate
<-12.5-(X*5),0,1.9+(Z*5)> }
object { My_Grass[OddEven] translate
<12.5+(X*5),0,1.9+(Z*5)> }
#declare Z = Z + 1;
#end
#declare X = X + 1;
#end
RG
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Thank for all the great help everybody!
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> // If the number of grass objects isn't too large you can also
> // read their type from a string (or from an array of strings,
> // one for each row.) If the MyGrasses are stored in an array
> // MyGrass, the following lines would look up the type of grass
> // and put the corresponding piece of grass into the scene:
Do you mean how many different types are not too large? Or how large
each type is? Since each MyGrass is actually a mesh of a rather large
number of triangles :)
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|