POV-Ray: Formas basicas (sphere, box, cone, cylinder, plane, torus)

Ilustracion de la sintaxis de las formas basicas de POV-Ray (sphere, box, cone, cylinder, plane, torus). Como actualmente llevo la materia de Graficacion y en nuestro grupo vamos a usar POV-Ray para modelar todo lo aprendido pues en esta casion quiero mostrar la sintaxis basica de las 6 formas mas basicas de POV-Ray; la esfera, el cubo, el cono, el cilindro, los 3 planos X,Y,Z y el toroide. Tambien muestro un ejemplo de codigo y doy por hecho que ya te has descargado e instalado el software, sino es asi Aqui puedes empezar http://www.povray.org/download/.

Una introduccion rapida: Los programas como POV-Ray (trazadores de rayos) son programas que permiten definir escenas con una camara simulada (camara sintetica), figuras geometricas y fuentes de luz (algo asi como focos de luz del color que nosotros deseemos) para hacer todo esto se utiliza un lenguaje de script para definir toda la escena. Al indicarle al programa que interprete (renderize) el mismo software dibuja y calcula donde inciden los rayos de luz sobre los objetos (ya no digo mas porque se pierde el objetivo de esta entrada de blog). Yo tengo instalada la version 3.6.1 de POV, como se muestra en la siguiente imagen:

Mi version de povray

Mi version de povray

Voi a ir mostrando primeramente la sintaxis de cada figura y a continuacion un ejemplo de codigo en POV-Ray seguido de la imagen que se genera, por pasos, empezamosss…

1.- OBJETO ESFERA (sphere)
Esta figura basicamente se define especificando las coordenadas del centro de la esfera y el tamaño del radio como se observa en la siguiente imagen:

Sintaxis del objeto Esfera

Sintaxis del objeto Esfera

Ejemplo de codigo fuente en POV-Ray:

  1. /*
  2. Descripcion: Posicion de la camara, dibujo de una esfera y creacion de una fuente de luz
  3. Author: Gonzalo Silverio
  4. Archivo: practica1.pov
  5. Tutorial PovRay: 3.1.6 Definiendo una fuente de luz
  6. */
  7. #include «colors.inc»
  8. //Definicion de la camara sintetica
  9. camera {
  10. location <5,2,4>
  11. look_at <0,1,2>
  12. }
  13. // Definicion del objeto esfera
  14. sphere {
  15. <0,1,2>,1.5
  16. texture{
  17. // OTRAs FORMAS DE DEFINIR EL COLOR
  18. //pigment {color Yellow}
  19. //pigment {color red 0.5 green 0.8 blue 0.8}
  20. //pigment { color rgb<0.5,0.8,0.8> }
  21. pigment { rgb<0, 0, 1> }
  22. }
  23. }
  24. //fuente de luz
  25. light_source {<2,4,4> color White }

En el codigo anterior se puede onbservar que en la linea 15 se a definido una esfera en las coordenadas 0 en X, 1 en Y y 2 en Z. La Imagen de la Escena que se genera es esta:

Renderizado de un objeto esfera

Renderizado de un objeto esfera

2.- OBJETO CAJA (box)
Una caja es una especie de cubo. Para definir un box (caja) se hace especificando dos coordenadas; la primera coordenada es la de una esquina de la caja y la otra coordenada es la otra esquina opuesta a la primera, en la siguiente imagen e puesto dos ejemplos para que esto quede mas claro. Se puede utilizar cualquiera esquinas para definir la caja.

Sintaxis del objeto Caja

Sintaxis del objeto Caja

Ejemplo de codigo fuente en POV-Ray:

  1. /*
  2. Instituto Tecnologico de Zacatepec, Mor.
  3. Descripcion: Uso del objeto Box (caja)
  4. Author: Gonzalo Silverio
  5. Archivo: practica2.pov
  6. Tutorial PovRay: 3.2.1 Objeto Caja (Box)
  7. */
  8. #include «colors.inc»
  9. #include «stones.inc»
  10. //posicion de la camara sintetica
  11. camera {
  12. location <8,8,8>
  13. look_at <2,2,2>
  14. }
  15. //Definicion de un objeto caja
  16. box {
  17. <0,0,0>,
  18. <4,4,4>
  19. texture{
  20. T_Stone25
  21. //Escalar la textura
  22. scale 19
  23. }
  24. //rotate <0,20,0> //Rotar 20 grados respecto a eje Y
  25. //El sentido de los giros se hacen usando la regla de la mano izquierda
  26. rotate y*-15 //-15 grados en y
  27. rotate z*30 //30 grados en z
  28. }
  29. // fuente de luz
  30. light_source {
  31. <6,6,8> color rgb <0.5,1,0.8>
  32. }

Como se ve en el codigo de POV-Ray he definido una caja con una esquina en el origen del sistema de coordenadas 3D (0,0,0, linea 17) y la otra esquina con 4 unidades en X, 4 en Y, y 4 unidades positivas en Z (linea 18). Ademas, le e asigando una textura estilo tipo roca (stone, linea 20), dicha textura la e escalado 19 unidades (linea 22) y por tambien e rotado la caja en Y y en Z (linea 26 y 27). La Imagen de la Escena que se genera es esta:

Renderizado de un objeto Caja

Renderizado de un objeto Caja

3.- OBJETO CONO (cone)
Un objeto cono se define en POV-Ray especificando las coordenadas del centro de sus dos extremos y sus respectivos radios como lo e indicado en la siguiente imagen. La palabra ‘open’ en gris se puede omitir; si esta palabra no esta el cono TIENE tapas, si esta palabra se pone entonces el cono NO TIENE tapas en sus extremos (esta abierto).

Sintaxis del objeto Cono

v

Si deseamos que alguno de los extremos termine en pico, entonces en uno de sus extremos indicamos un R=0 depende de donde deseamos el pico; como se observa en la siguiente imagen:

Sintaxis del objeto Cono, con extremos en pico

Sintaxis del objeto Cono, con extremos en pico

Ejemplo de codigo fuente en POV-Ray con un cono al cual se le quitan las tapas (open):

  1. /*
  2. Instituto Tecnologico de Zacatepec, Mor.
  3. Descripcion: Uso del objeto cone (cono)
  4. Author: Gonzalo Silverio
  5. Archivo: practica3.pov
  6. Tutorial PovRay: 3.2.2 Objeto Cono
  7. */
  8. #include «colors.inc»
  9. #include «stones.inc»
  10. //Posicion de la camara sintetica
  11. camera {
  12. location <8,8,8>
  13. look_at <0,0,2>
  14. }
  15. // Definicion del objeto cono
  16. cone {
  17. <4,0,0>,1
  18. <4,5,3>,1.2
  19. open //quitar tapas (abierto)
  20. texture {
  21. pigment { color rgb <0.6,0.4,1> }
  22. }
  23. }
  24. //posicion de fuente de luz 1
  25. light_source {<4,5,6> color White }
  26. //otra fuente de luz 2
  27. light_source {<8,5,6> color White }

Como se observa en el codigo he definido un cono con extremo en las coordenadas 4 unidades en X, o en Y y 0 en Z; el tamaño del radio es de una unidad. El otro extremo esta igual 4 unidades en X, 5 unidades arriba en Y y -3 unidades en Z. Recordemos que la unidades positivas en X ‘entran’ en el plano 3D y las coordenas negativas ‘salen’ del plano; es por esto que el cono se ve como se estuviera inclinado hacia nosotros en el plano. En realidad tambien podemos definir un cilindro con el objeto cone; basta con definir el mismo radio en ambos extremos. La Imagen de la Escena que se genera es esta:

Renderizado de un objeto Cono

Renderizado de un objeto Cono

4.- OBJETO CILINDRO (cylinder)
La sintaxis del objeto cilindro es casi identica a la del objeto cono con la diferencia de que solamente se especifica un radio debido a que un cilindro tiene el mismo radio en ambos extremos (si fueran diferentes pasaria a ser un cono, jejejejj). A continuacion una imagen que aclara todo:

Sintaxis del objeto Cilindro

Sintaxis del objeto Cilindro

Nuevamente la palabra clave ‘open’ quita las tapas del cilindro.
Ejemplo de codigo fuente en POV-Ray que muestra un cilindro color gris:

  1. /*
  2. Instituto Tecnologico de Zacatepec, Mor.
  3. Descripcion: Uso del objeto cylinder (cilindro) para dibujar los ejes X,Y,Z
  4. Author: Gonzalo Silverio
  5. Archivo: practica4.pov
  6. Tutorial PovRay: 3.2.3 Objeto Cilindro
  7. */
  8. #include «colors.inc»
  9. //Posicion de la camara sintetica
  10. camera {
  11. location <10,10,10>
  12. look_at <0,5,0>
  13. }
  14. //Definicion del objeto cilindro
  15. cylinder {
  16. <6,0,3>,
  17. <5,4,3>,
  18. 0.5
  19. pigment { color rgb<1,1,1> }
  20. }
  21. //A CONTINUACION SE VAN A DIBUJAR LOS 3 EJES TRIDIMENSIONALES
  22. //Dibujar el eje X
  23. cylinder {
  24. <0,0,0>,
  25. <20,0,0>,
  26. 0.1
  27. pigment { color Green}
  28. }
  29. //Dibujar el eje Y
  30. cylinder {
  31. <0,0,0>,
  32. <0,20,0>,
  33. 0.1
  34. pigment { color Green }
  35. }
  36. //Dibujar el eje Z
  37. cylinder {
  38. <0,0,0>,
  39. <0,0,20>,
  40. 0.1
  41. pigment {color Green }
  42. }
  43. // fuente de luz
  44. light_source { <8,6,6> color White }

Como se observa en el codigo e puesto la camara sintetica 10 unidades lejos del origen y he definido 3 cilindros de 20 unidades de largo en cada eje y un radio muy pequeño. Si alejaramos la camara por ejemplo a 30 unidades lejos del origen se veria donde terminan los cilindros pero la e puesto cerca para que esto de la impresion de los ejes X,Y y Z. La Imagen de la Escena que se genera es esta:

Renderizado de un objeto Cilindro

Renderizado de un objeto Cilindro

5.- OBJETO PLANO (plane)
Un plano en POV-Ray yo lo veo como un piso o techo (plano y) o como una pared (plano X y Z). Como se observa en la siguiente imagen hay dos maneras de especificar un plano; uno es con la sintaxis de vectores < , , >; mas claro para definir el plano X se hace con el vector <1,0,0>, para definir el plano Y se hace con el vector <0,1,0> o para definir el plano Z se hace con el vector <0,0,1>. Para abreviar esto; los desarrolladores de POV-Ray crearon un identificador para cada vector de tal modo que hay 3 identificadores llamados x,y y z. Ademas de especificar el plano se debe especificar un desplazamiento del plano en sistema de coordenadas, para el caso del plano X el desplazamiento es hacia la derecha (+) o a la izquierda (-), para el caso del plano Y el desplamiento es hacia arriba (+) o hacia abajo (-) y por ultimo para el caso del plano Z el desplamiento es hacia adentro (+) o hacia afuera (-). Una imagen dice mas que 1000 palabras:

Sintaxis del objeto Plano

Sintaxis del objeto Plano

Ejemplo de codigo fuente en POV-Ray que muestra el plano Y (agredrezado):

  1. /*
  2. Instituto Tecnologico de Zacatepec, Mor.
  3. Descripcion: Uso del objeto plane (plano)
  4. Author: Gonzalo Silverio
  5. Archivo: practica5.pov
  6. Tutorial PovRay: 3.2.4 Objeto Plano
  7. */
  8. #include «colors.inc»
  9. //Posicion de la camara sintetica
  10. camera {
  11. location <12,12,12>
  12. look_at <0,0,0>
  13. }
  14. //Mostrar el plano de X
  15. /*
  16. plane {
  17. <1,0,0>,-1
  18. //x,-1 Otra forma de definir este plano
  19. pigment {
  20. //checker color Red, color Blue
  21. color White
  22. }
  23. }
  24. */
  25. //Mostrar el plano de Y
  26. plane {
  27. y,1
  28. //<0,1,0>,-1 Otra forma de definir este plano
  29. pigment {
  30. checker color Red, color Yellow
  31. }
  32. }
  33. //Mostrar el plano de Z
  34. /*
  35. plane {
  36. <0,0,1>,1
  37. //z,1 Otra forma de definir este plano
  38. pigment {
  39. checker color Red, color White
  40. }
  41. }
  42. */
  43. //A CONTINUACION SE VAN A DIBUJAR LOS 3 EJES TRIDIMENSIONALES
  44. //Dibujar el eje X
  45. cylinder {
  46. <0,0,0>
  47. <20,0,0>
  48. 0.1
  49. pigment { color Green }
  50. }
  51. //Dibujar el eje Y
  52. cylinder {
  53. <0,0,0>
  54. <0,20,0>
  55. 0.1
  56. texture
  57. {
  58. pigment { color Green }
  59. }
  60. }
  61. //Dibujar el eje Z
  62. cylinder {
  63. <0,0,0>
  64. <0,0,20>
  65. 0.1
  66. texture
  67. {
  68. pigment { color Green }
  69. }
  70. }
  71. //fuente de luz
  72. light_source {
  73. <4,4,6> color White
  74. }
  75. //otra fuente de luz
  76. light_source {
  77. <0,3,3> color White
  78. }

Como ves; con agredrezado me refiero a que el plano esta formado por dos colores que se repiten en forma de cuadros dando la impresion de lejania o cercania. La Imagen de la Escena que se genera es esta si se ve como un piso ¿o no?:

Renderizado de un plano agedrezado (eje y)

Renderizado de un plano agedrezado (eje y)

…Si descomentamos las lineas 19-26 para mostrar el plano X y el codigo que muestra el plano del eje Z (lineas 39-46), el codigo se veria asi:

  1. /*
  2. Instituto Tecnologico de Zacatepec, Mor.
  3. Descripcion: Uso del objeto plane (plano)
  4. Author: Gonzalo Silverio
  5. Archivo: practica5.pov
  6. Tutorial PovRay: 3.2.4 Objeto Plano
  7. */
  8. #include «colors.inc»
  9. //Posicion de la camara sintetica
  10. camera {
  11. location <12,12,12>
  12. look_at <0,0,0>
  13. }
  14. //Mostrar el plano de X
  15. plane {
  16. <1,0,0>,1
  17. //x,-1 Otra forma de definir este plano
  18. pigment {
  19. //checker color Red, color Blue
  20. color White
  21. }
  22. }
  23. //Mostrar el plano de Y
  24. plane {
  25. y,1
  26. //<0,1,0>,-1 Otra forma de definir este plano
  27. pigment {
  28. checker color Red, color Yellow
  29. }
  30. }
  31. //Mostrar el plano de Z
  32. plane {
  33. <0,0,1>,1
  34. //z,1 Otra forma de definir este plano
  35. pigment {
  36. checker color Red, color White
  37. }
  38. }
  39. //A CONTINUACION SE VAN A DIBUJAR LOS 3 EJES TRIDIMENSIONALES
  40. //Dibujar el eje X
  41. cylinder {
  42. <0,0,0>
  43. <20,0,0>
  44. 0.1
  45. pigment { color Green }
  46. }
  47. //Dibujar el eje Y
  48. cylinder {
  49. <0,0,0>
  50. <0,20,0>
  51. 0.1
  52. texture
  53. {
  54. pigment { color Green }
  55. }
  56. }
  57. //Dibujar el eje Z
  58. cylinder {
  59. <0,0,0>
  60. <0,0,20>
  61. 0.1
  62. texture
  63. {
  64. pigment { color Green }
  65. }
  66. }
  67. //fuente de luz
  68. light_source {
  69. <4,4,6> color White
  70. }
  71. //otra fuente de luz
  72. light_source {
  73. <0,3,3> color White
  74. }

Y la Imagen de la Escena que se genera es esta:

Renderizado de los 3 planos 2 de ellos agedrezados (eje z y eje y). El eje x en color solido

Renderizado de los 3 planos 2 de ellos agedrezados (eje z y eje y). El eje x en color solido

6.- OBJETO TOROIDE (torus)
Y ya por ultimo la forma basica de POV-Ray que quiero mostrar es esta. El Toroide es una figura muy parecida a una rosquilla o ‘donita’. Creo que es la que tiene la sintaxis mas facil de todas las demas; pues solo se define especificando su radio externo y un espesor o grosor como lo he indicado en la siguiente imagen:

Sintaxis del objeto Toroide

Sintaxis del objeto Toroide

Ejemplo de codigo fuente en POV-Ray que muestra un toroide con centro en el origen y desplazado 2 unidades arriba en el je Y:

  1. /*
  2. Instituto Tecnologico de Zacatepec, Mor.
  3. Descripcion: Uso del objeto torus (toroide)
  4. Author: Gonzalo Silverio
  5. Archivo: practica6.pov
  6. Tutorial PovRay: 3.2.5 Objeto Toroide
  7. */
  8. #include «colors.inc»
  9. camera {
  10. location <12,12,12>
  11. look_at <0,0,0>
  12. }
  13. torus { 4, 1 // radio externo y grosor del toro
  14. translate 2*y //Trasladar 2 unidades en eje Y
  15. pigment { Blue }
  16. }
  17. //A CONTINUACION SE VAN A DIBUJAR LOS 3 EJES TRIDIMENSIONALES
  18. //Dibujar el eje X
  19. cylinder {
  20. <0,0,0>
  21. <20,0,0>
  22. 0.1
  23. pigment { color Green }
  24. }
  25. //Dibujar el eje Y
  26. cylinder {
  27. <0,0,0>
  28. <0,20,0>
  29. 0.1
  30. texture
  31. {
  32. pigment { color Green }
  33. }
  34. }
  35. //Dibujar el eje Z
  36. cylinder {
  37. <0,0,0>
  38. <0,0,20>
  39. 0.1
  40. texture
  41. {
  42. pigment { color Green }
  43. }
  44. }
  45. light_source {
  46. <6,6,6> color White
  47. }

La Imagen de la Escena que se genera es esta:

Renderizado de un objeto Toroide

Renderizado de un objeto Toroide

Uff al fin acabe, sinceramente si me tarde en acabar esta entrada del blog y ps espero que a alguien le sirva. Como siempre; si estas interesado en el codigo fuente basta con dejar tu e-mail para que te lo envie. Suerte !!