Primero descarga este archivo paestopovray, rar el cual contiene lo siguiente:
-Pasto_pov_main, ini.
- Pasto_pov_geom, inc.
- Pasto_pov_mat, inc.
En este último puedes cambiar el material del pasto, los pones en el mismo directorio de tu archivo pov con el que quieres trabajar, el único que tienes que incluir en tu escena es pasto_pov_geom, inc.
Con esto archivo creamos una área de pasto como la de la figura.
en base a esto lo que creamos un arreglo, matriz, de varias áreas de este objeto, usamos las siguientes variables para definir la matriz de áreas con sus dimensiones (o repeticiones) en el eje X y el eje Z m_x=16; 16 objetos en x.
M_z=16; 16 en z.
Y con el código siguiente puedes obtener una imagen como esta.
Usamos Rand para que el pasto no se muestre uniforme.
La escena Pov-Ray puedes hacerla como esta:
/************* inicio de archivo ****************************-.
#include colors, inc.
#include textures, inc.
#include pasto_pov_geom, inc //archivo con la geometría del pasto global_settings { //ajustes de gama y trazado.
Assumed_gamma 1
Max_trace_level 10
}.
//cámara.
Camera{ location<3,2,-12>
Lok_at <3,0,1>
} light_source{<500,500,-500> color RGB 1}.
//background.
Background { color RGB<0.9254902,0.9137255,0.8470588> }.
//un plano para el ejemplo.
Plane{y,0 pigment{rgb <.8.2.2>}}.
//ahora lo que hago es declarar variables para manejar semillas para Rand.
#declare r1 = sed(0),
#declare r2 = sed(2),
#declare r3 = sed(3),
#declare r4 = sed(3),//escalado en y.
//estas son las dimensiones de un área de pasto.
#declare m_x=16; //número de áreas a poner a lo largo del eje x.
#declare m_z=16; //número de áreas a poner a lo largo del eje Z.
//aquí hago la unión de varias áreas y hago uso de Rand para que el pasto no sea uniforme.
Union{
#declare count_x=0; //declaro un contador de áreas en x.
#while (count_x<=m_x) //mientras count_x sea menor que el número de áreas que quiero en x.
#declare count_z=0; //declaro un contador de áreas en z.
#while (count_z<=m_z) //mientras count_x sea menor que el número de áreas que quiero en y.
Object{ //llamo al objeto pasto.
Pasto_ //llamo al objeto pasto_
Scale 15 //lo escalo.
Rotate y*(Rand(r3)*180) //le doy una rotación aleatoria en el eje Y.
Scale y*(1+Rand(r4)*.5) //lo escalo aleatoriamente en el eje Y.
Translate<count_x+(-.35+Rand(r1)*.7),0, count_z+(-.35+Rand(r1)*.7)>
// esto último es para posicionarlo aleatoriamente trasladándolo en cada paso //en +/-.35 como máximo.
}
#declare count_z=count_z+1; //incremento count_z.
#end //fin del while interno.
#declare count_x=count_x+1; //incremeto count_x.
#end // fin de while externo.
Translate x*-8 //y bueno este traslado lo puedes pasar por alto, lo puse para centrar el pasto.
// con respecto a x.
}.
/****************** fin de archivo ******************/.
Alejandro Omar chocano Vásquez.
Http://alexvaqp, googlepagescom.
Omarchv56@hotmail. Saludos.
|Agradecer cuando alguien te ayuda es de ser agradecido|