Logo POVRay...
Instrucciones para "MCRE.inc" v1.0

Donación de Rafael Angel Campos Vargas, en marzo del 2012, a la Biblioteca de objetos de POV-Ray.  Este proyecto se encuentra actualmente inscrito con la patente LGPL;  para libre uso comercial y no comercial del software.

CC-GNU LGPL
The primary purpose of this collection is to make items publicly available under a common license that permits use, modification and re-distribution. To support this contributions are donated to the collection with consent for their use under the terms of the Creative Commons - Lesser General Purpose License (CC-GNU LGPL).
Chris Bartlett 2007

La versión actual v1.0 de "MCRE.inc" dibuja un mapa de Costa Rica para salón de clase colegial con decorado en relieve y marco de madera.  Es compatible con PovRay 3.1.  Contiene una macro para cuadros planos simples, y otra macro para modificación de texturas.

Indice de página:

  1. Instalación de Archivos
  2. Instrucciones básicas
  3. Características del objeto
  4. Modificadores
  5. Notas y Advertencias
  6. Sugerencias de modificación
  7. Sobre LibreN3D

Instalación de Archivos

El procedimiento siguiente es completamente optativo, corresponde simplemente al estándard de la Biblioteca de objetos POV-Ray.
  1. Cree el subdirectorio "ObjectCollections".  Se sugiere un subdirectorio del folder POV-Ray, creado por el instalador en algunas versiones en la sección de documentos o bien en la de código.
  2. Copie los archivo "MCRE.inc", "MCRE_IM1.GIF", "MCRE_IM2.GIF" y "MCRE_IM3.GIF" en dicho subdirectorio;  únicamente éstos tres son necesarios.  En cuanto a la documentación y demás puede colocarla si desea en el mismo subdirectorio, el estándar ha sido diseñado para evitar problemas de compatibilidad.
  3. Actualice los archivos buscados por POV-Ray, en algún archivo ini pertinente.  Por ejemplo "POVRay.ini";  agregue el comando Library_Path="C:\FDOS\POVRAY31\ObjectCollections"; o el que corresponda a su sistema operativo.  POV-Ray ofrece muchas formas de realizar esto.  Si no sabe cómo, probablemente convenga leer el manual de referencia en la sección "Command-line options".   Cada sistema operativo presenta sus propias variantes.
Nota:  El archivo de prueba "MCRE.pov" puede ejecutarse sin ningún proceso de instalación.  Unicamente debería estar ubicado en el mismo folder que "MCRE.inc", "MCRE_IM1.GIF", "MCRE_IM2.GIF" y "MCRE_IM3.GIF".


Instrucciones básicas

Mapa Costa Rica
Muy fácil de usar, tan simple como incluir el archivo y ubicar el objeto.  El siguiente ejemplo recurre a la macro default, colocando al objeto en posición base.

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "MCRE.inc"
    
    object      {
      MCRE_MapaCostaRicaExtendido(on,off,on)
      translate <-1.75, 1.3 ,-4   >
    }

Los parámetros de la macro principal serían los siguientes:

    #macro MCRE_MapaCostaRicaExtendido
                  ( BanderaRelieve, BanderaGif, BanderaVidrio )
BanderaRelieve :
Valor "on" dibuja un mapa con relieve, valor "off" lo dibuja plano.
BanderaGif :
Valor "on" dibuja una imagen superpuesta, valor "off" utiliza un mapeo de texturas de ocho índices.  Aplica únicamente si BanderaRelieve se encuentra activa.
BanderaVidrio :
Valor "on" dibuja un vidrio sobre el mapa, valor "off" no lo dibuja.

La siguiente macro permite dibujar el marco únicamente, con mayor control sobre sus características.  Se puede ver el fondo de corcho "TexturaFondo".

    #macro MCRE_Marco( LargoFundamental, AnchoFundamental,
                ProfundidadFundamental,
                AnchoMarco, FraccionCorcho,
                BanderaVidrio, TexturaMarco, TexturaFondo, MaterialVidrio )
LargoFundamental :
Largo en X del dibujo.  Default es 800*L.
AnchoFundamental :
Largo en Y del dibujo.  Default es 600*L.
ProfundidadFundamental :
Dimensión básica en Z.  Default es 50*L.
AnchoMarco :
Ancho del marco.  Default es 100*L.
FraccionCorcho :
Grueso del corcho posterior equivalente a FraccionCorcho*ProfundidadFundamental.  Valor default es 1/20.
BanderaVidrio :
Valor "on" dibuja un vidrio sobre el mapa, valor "off" no lo dibuja.
TexturaMarco :
Textura a aplicar al marco.  Valor default es MCRE_DefaultTexturaMadera.
TexturaFondo :
Textura a aplicar al fondo de corcho.  Valor default es MCRE_DefaultTexturaCorcho.
MaterialVidrio :
Material a aplicar al vidrio.  Valor default es MCRE_MaterialVidrio.

Puede utilizarse la siguiente macro para dibujar marcos con cuadros planos a gusto.

    #macro MCRE_CuadroCorriente
          ( LargoFundamental, AnchoFundamental, ProfundidadFundamental,
            AnchoMarco, ImagenFundamental, BanderaVidrio )
LargoFundamental :
Largo en X del dibujo.  Default es 800*L.
AnchoFundamental :
Largo en Y del dibujo.  Default es 600*L.
ProfundidadFundamental :
Dimensión básica en Z.  Default es 50*L.
AnchoMarco :
Ancho del marco.  Default es 100*L.
ImagenFundamental :
Imagen a colocar en el cuadro.  Default es "MCRE_IM2.GIF".
BanderaVidrio :
Valor "on" dibuja un vidrio sobre el mapa, valor "off" no lo dibuja.

En el siguiente ejemplo, procedemos a dibujar el mismo marco sin el relieve:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "MCRE.inc"
    
    object      {
      MCRE_Marco
	( 0.8, 0.6, 0.05, 0.1, 1/20, on, 
 	   MCRE_DefaultTexturaMadera, MCRE_DefaultTexturaCorcho,
	   MCRE_DefaultMaterialVidrio )
      translate <-1.75, 1.3 ,-4   >
    }

En este otro siguiente ejemplo, procedemos a dibujar el mismo objeto default en su versión plana:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "MCRE.inc"
    
    object      {
      MCRE_CuadroCorriente
	( 0.8, 0.6, 0.05, 0.1, "MCRE_IM2.GIF", on )
      translate <-1.75, 1.3 ,-4   >
    }


Características del objeto

Mis dibujos están en unidades L (Lisa).  1 L equivale a 0.055063 pulgadas definido como 0.001 para POVRAY.  El objeto default tiene las siguientes características:
    Largo del marco         	: 1000*L
    Largo sin marco           	:  800*L
    Ancho del marco         	:  800*L
    Ancho sin marco         	:  600*L
    Profundidad Z total     	:   58*L
    Grueso corcho           	:    5*L
El cuadro descansa centrado sobre el plano XY con frente hacia Z-, el marco se levanta 5*L sobre el plano debido al corcho posterior.

Se generan las siguientes declaraciones que no deberían modificarse.  Para su correcta modificación consultar la sección Modificadores.

MCRE_TexturaMadera
Textura a aplicar al marco.
MCRE_TexturaCorcho
Textura a aplicar al fondo de corcho.
MCRE_MaterialVidrio
Textura a aplicar al vidrio.


Modificadores

La siguiente es la lista de los modificadores permitidos en la unidad.  Cuando se indica, es su valor default.

    #declare MCRE_DefaultTexturaMadera      	= texture { ... }      
Textura default a aplicar al marco de madera.

    #declare MCRE_DefaultTexturaCorcho          = texture { ... }
Textura default a aplicar al fondo de corcho.

    #declare MCRE_DefaultMaterialVidrio     	= texture { ... }
Material default a aplicar al vidrio.

    #declare MCRE_CurvasNivelGIF           	= "MCRE_IM1.GIF"
Dibujo GIF para height_field del relieve en escala de grises, útil cuando se requiera cambiar de modelo.  Se recomienda utilizar también MCRE_DibujoGIF y un valor "on" al parámetro BanderaGif.  El dibujo actual utiliza la siguiente clave, pero es innecesario utilizarla.
7 mar abierto.
9 plataforma continental.
10 nivel del mar.
254 altitud del Cerro Chirripó.

    #declare MCRE_DibujoGIF           		= "MCRE_IM2.GIF"
Dibujo GIF del mapa.  Se aplica cuando el parámetro BanderaGif tiene un valor "on".  Util cuando el usuario quiera incorporar su propio mapa de Costa Rica.

    #declare MCRE_GifPattern     		= "MCRE_IM3.GIF"
Para el caso BanderaGif "off".  Utiliza una clave de ocho texturas con índice.  No se recomienda su uso;  pues es algo complicado, y quizá los resultados actuales no lo compensen.  Yo utilicé el programa XNView.EXE para GIF de ocho colores;  aunque es probable que tenga que asignar los índices por prueba y error en los colores.
0 plataforma continental.
1 segunda zona altitudinal.
2 primera mitad de primera zona altitudinal.
3 agua profunda.
4 segunda mitad de primera zona altitudinal.
5 cuarta zona altitudinal.
6 tercera zona altitudinal.
7 lagos interiores.

    #declare MCRE_ArregloCubic     		= on;
El marco se dibuja con un prisma que utiliza interpolación cúbica "on", o lineal "off".

    #declare MCRE_ArregloMarco                  = array[10]
El arreglo contiene los puntos XZ de interpolación de un prisma base para el marco.  El prisma se ubica entre <0,0> y <1,1>;  el fondo se ubica entre <0,0> a <1,0>, y el vidrio toca el marco en el punto <0,1>.  El tamaño del arreglo no importa, con las condiciones típicas del objeto prism.

    #declare MCRE_HeightFieldSmooth       	= on;
Su función es decidir aplicar la instrucción "smooth" al hieght_field o no.  Suaviza las aristas del mapa con "on", lo ignora si "off". 

    #declare MCRE_POV3_1			= off;
Si se activa con "on" produce simplificaciones que permiten su ejecución en la versión POVRay 3.1.  En algunas versiones de POVRay se activa automáticamente.  En esta versión no cumple ninguna función.

A manera de ejemplo del uso de los modificadores:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "textures.inc"
    #include "MCRE.inc"
    
    #declare MCRE_ArregloCubic      = off;
    #declare MCRE_ArregloMarco      = array [4] 
                {<0,0>,<0,1>,<1,0>,<0.5,0.2>} 
    #declare MCRE_DefaultTexturaCorcho          = 
        texture         {
          average
          texture_map   {
            [ 0.8 MCRE_TexturaCorcho ]
            [ 0.2 Rust ]
          }
        }
    
    #declare MCRE_DefaultTexturaMadera          = 
        texture         {
          average
          texture_map   {
            [ 0.8 MCRE_TexturaMadera ]
            [ 0.2 Rust ]
          }
        }
    
    object      {
      MCRE_MapaCostaRicaExtendido(on,off,on)
      rotate            180*y
      translate <-1.75, 1.3 ,-4   >
    }

Otro ejemplo más:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "MCRE.inc"
    #include "glass.inc"
    
    #declare MCRE_DefaultMaterialVidrio = 
    material    {
      texture           { T_Glass2 }
      interior          { I_Glass  }
    } 
    
    #declare MCRE_CurvasNivelGif        = "MCRE_IM4.GIF"
    #declare MCRE_DibujoGif             = "MCRE_IM5.GIF"
    #declare MCRE_GifPattern            = "MCRE_IM6.GIF"
    #declare MCRE_HeightFieldSmooth     = off;
    
    object      {
      MCRE_MapaCostaRicaExtendido(on,off,on)
      translate <-1.75, 1.3 ,-4   >
    }

Y finalmente, el último ejemplo:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "MCRE.inc"
    
    #declare MCRE_CurvasNivelGif        = "MCRE_IM4.GIF"
    #declare MCRE_DibujoGif             = "MCRE_IM5.GIF"
    #declare MCRE_GifPattern            = "MCRE_IM6.GIF"
    
    #declare MCRE_ArregloCubic      = off;
    #declare MCRE_ArregloMarco      = array [4] 
                {<0,0>,<0,1>,<1,0>,<0.5,0.2>} 

    object      {
      MCRE_MapaCostaRicaExtendido(on,on,off)
      translate <-1.75, 1.3 ,-4   >
    }


Notas y Advertencias

Considere utilizar MCRE_HeightFieldSmooth en su valor "off" para acelerar el procesamiento previo en escenas algo lentas.

El dibujo del vidrio es poco convincente.  Puede arreglar el problema con MCRE_DefaultMaterialVidrio.

Si se decide a utilizar la variable MCRE_GifPattern, es probable que tenga dificultades al asignar los índices correctos.  La variación continua no funcionará bien.

Las curvas de nivel son ficticias en las zonas de Panamá y Nicaragua;  y en Costa Rica el detalle fino es ficticio.


Sugerencias de modificación


Sobre LibreN3D

Algo hace falta En la actualidad dedico casi unas dos horas todos los días, para desarrollar el programa de animación LibreN3D con el compilador FreePascal para FreeDOS.  El objetivo era en un origen, realizar animaciones de "baja" calidad, con progreso lento y paulatino. Desconocía en ese entonces del programa POV-Ray.  Creo que con ayuda de dicho proyecto, podría lograr mucho mejores resultados desde un principio.  Confío que para el 2020 pueda lograr animaciones completas de aceptable calidad.   En la actualidad, intento agregarle características elásticas a los objetos.  He tenido numerosos retrasos, así que todavía no funciona.  Lo siento...(10/abril/2012), pero me siento muy seguro de que pronto lo lograré.  De momento, no tiene interface con el usuario, pero se encuentra en desarrollo como intérprete de renglón al estilo DOS.

Me sería de muchísima ayuda, que el grupo POV-Ray siguiera desarrollando la versión para DOS.   Los siguientes son enlaces que podrían ser de utilidad para el interesado en los proyectos FreePascal y FreeDOS.   Lamentablemente en la actualidad son altamente inestables, debido probablemente a dificultades con la adaptación al modo de 64 bits.
Logo FreeDOS...
Descarga sistema operativo FreeDOS
Logo FreePascal...
Descarga compilador FreePascal