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

Donación de Rafael Angel Campos Vargas, en el año 2013, 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 "ILFD.inc" (InstrumentalLaboratorioFantasiaDomestico) dibuja un laboratorio imaginario, los aparatos y diseños son ficticios.  Lamentablemente esta versión es muy poco versátil, no obstante, permite modificar las texturas con facilidad.  No es compatible con PovRay 3.1. 

A parte de su valiosa y suficiente importancia pedagógica y académica.  ¿Para qué sirven las funciones #include "functions.inc" en videos 3D?.  Con esta pregunta en mente me propuse el siguiente "juego".  Con su calculadora y la tecla "random", elija sin reemplazo cuatro figuras del archivo "funcions.inc" al azar y diseñe un aparato para un laboratorio del universo imaginario.  Se permite agregar algunos cilindros, esferas y cajas sin abusar.  El resultado fue decepcionante;  pero decidí que en vez de distribuir feas figuras individualmente debería acomodarlas como un conjunto... y este archivo fue lo que resultó.

Incorporé además funciones del subdirectorio objects\quartic\*.pov de las distribución POV-Ray 3.5. cuyo autor fue Alexander Enzmann.  Se puede considerar que son copia casi textual y yuxtapuesta de los ejemplos.

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 el archivo "ILFD.inc" en dicho subdirectorio;  únicamente éste es necesario.  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 "ILFD.pov" puede ejecutarse sin ningún proceso de instalación.  Unicamente debería estar ubicado en el mismo folder que "ILFD.inc".


Instrucciones básicas

Laboratorio
Muy fácil de usar, tan simple como incluir el archivo y ubicar el objeto.  El siguiente ejemplo ilustra el procedimiento básico.

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "ILFD.inc"
    
    object      {
      ILFD_Laboratory(200) 
      translate         <-1.21875,0.34375,-3.375>
    }

La macro tiene un parámetro únicamente:

    #macro ILFD_Laboratory( Semilla )
Semilla :
Para inicializar el generador de números aleatorios, mismo valor genera el mismo dibujo.


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:
    Alto total              	:  1425*L
    Fondo                   	:   500*L aprox
    Frente                  	: -1220*L..1000*L
Se dibuja casi centrado en Z sobre el plano XZ.  El frente sobresale en dirección Z-, con gravedad Y-.

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

ILFD_TexturaCrisol
Textura del crisol de porcelada.
ILFD_TexturaPistilo
Textura del pistilo del crisol de porcelana.
ILFD_TexturaContacto
Textura para la zona de contacto crisol y pistilo.
ILFD_TexturaMadera
Textura para las repisas del laboratorio.
ILFD_TexturaSoporteDestiladores
Textura para la base del destilador.
ILFD_TexturaTapa
Textura de las tapas del horno magnético.
ILFD_MaterialEspiral
Material de la espiral del horno magnético.
ILFD_MaterialCilindro
Material del vidrio del horno magnético y de los perfiles de vidrio libres.
ILFD_MaterialDestilador
Material principal del destilador.
ILFD_MaterialCuelloDestilador
Material del colector del destilador.
ILFD_TexturaAgarre
Textura de agarre de la espiral del horno magnético.
ILFD_MaterialMagneto
Material del magneto del horno.
ILFD_MaterialSuperior6
Material del descanso superior del colector distribuidor de flujo.
ILFD_MaterialSoporte6
Material de la capa del colector distribuidor de flujo.
ILFD_MaterialExtractor6
Material del generador de vacío.
ILFD_MaterialPata6
Material de los colectores del colector distribuidor de flujo.


Modificadores

La siguiente es la lista de los modificadores permitidos en la unidad.

    #declare ILFD_DefaultTexturaCrisol      	= texture { ... }      
Textura a aplicar al crisol de porcelana.

    #declare ILFD_DefaultTexturaPistilo         = texture { ... }
Textura del pistilo para el crisol de porcelana.

    #declare ILFD_DefaultTexturaContacto     	= texture { ... }
Textura para la zona de contacto crisol y pistilo.

    #declare ILFD_DefaultTexturaMadera     	= texture { ... }
Textura para las repisas del laboratorio.

    #declare ILFD_DefaultTexturaSoporteDestiladores		= texture { ... }      
Textura para la base del destilador.

    #declare ILFD_DefaultTexturaTapa     	= texture { ... }
Textura de tapas del horno magnético.

    #declare ILFD_DefaultMaterialEspiral     	= material { ... }
Material de espiral del horno magnético.

    #declare ILFD_DefaultMaterialCilindro     	= material { ... }
Material del vidrio del horno magnético, y de los perfiles de vidrio libres.

    #declare ILFD_DefaultMaterialDestilador    	= material { ... }
Material principal del destilador.

    #declare ILFD_DefaultMaterialCuelloDestilador     		= material { ... }
Material del colector del destilador.

    #declare ILFD_DefaultTexturaAgarre     	= texture { ... }
Textura de agarre de la espiral del horno magnético.

    #declare ILFD_DefaultMaterialMagneto     	= material { ... }
Material del magneto del horno.

    #declare ILFD_DefaultMaterialSuperior6    	= material { ... }
Material del descanso superior del colector distribuidor de flujo.

    #declare ILFD_DefaultMaterialSoporte6    	= material { ... }
Material de la capa del colector distribuidor de flujo.

    #declare ILFD_DefaultMaterialExtractor6    	= material { ... }
Material del generador de vacío.

    #declare ILFD_DefaultMaterialPata6    	= material { ... }
Material de los colectores del colector distribuidor de flujo.

    #declare ILFD_BanderaTexto     		= on;
Valor "on" visualiza el texto, "off" no lo dibuja.

    #declare ILFD_Texto     			= "f(x)"
Texto decorativo del estante de laboratorio.

    #declare ILFD_FactorXTexto            	= 1.0;
Valor fraccionario para variar proporcionalmente el largo de la barrita horizontal de soporte del texto.

    #declare ILFD_TranslateTexto		= <0,0,0>;
Para corregir la posición del texto con un translate adicional.

A manera de ejemplo del uso de los modificadores:

    #include "stdinc.inc"
    #include "stdcam.inc" 
    #include "textures.inc"
    #include "ILFD.inc" 
    #declare ILFD_BanderaTexto                  = off;
    #declare ILFD_DefaultTexturaCrisol          = 
                     texture  { pigment { Blue } }
    #declare ILFD_DefaultTexturaPistilo         = 
                     texture  { pigment { Cyan } }
    #declare ILFD_DefaultTexturaContacto        = 
                     texture  { pigment { Yellow } }
    #declare ILFD_DefaultTexturaMadera          = 
                     texture  {  
                       average
                       texture_map      {
                         [ 0.5 ILFD_TexturaMadera ]
                         [ 0.5 Rust               ]
                       }
                     }  
    #declare ILFD_DefaultTexturaSoporteDestiladores      = 
                     texture  { pigment { Blue } } 
    #declare ILFD_DefaultTexturaTapa                     = 
                     texture  { pigment { Red } }
    #declare ILFD_DefaultMaterialEspiral                 = 
                     material { texture { pigment { Yellow } } }
    #declare ILFD_DefaultMaterialCilindro                = 
                     material { texture { pigment { Yellow transmit 0.80 } } }     
    #declare ILFD_DefaultMaterialDestilador              = 
                     material { texture { pigment { Yellow } } }
    #declare ILFD_DefaultMaterialCuelloDestilador        = 
                     material { texture { pigment { Red } } }
    #declare ILFD_DefaultTexturaAgarre                   = 
                     texture  { pigment { Red } }
    #declare ILFD_DefaultMaterialMagneto                 = 
                     material { texture { pigment { Green } } }
    #declare ILFD_DefaultMaterialSuperior6               = 
                     material { texture { pigment { Cyan } } }  
    #declare ILFD_DefaultMaterialSoporte6                = 
                     material { texture { pigment { Gray50 } } }
    #declare ILFD_DefaultMaterialExtractor6              = 
                     material { texture { pigment { Blue } } } 
    #declare ILFD_DefaultMaterialPata6                   = 
                     material { texture { pigment { Gold } } } 
    
    object      {
      ILFD_Laboratory(200) 
      translate         <-1.21875,0.34375,-3.375>
    }      

Y otro ejemplo más:

    #include "stdinc.inc"
    #include "stdcam.inc" 
    #include "ILFD.inc" 
    #declare ILFD_BanderaTexto                  = on;  
    #declare ILFD_Texto                         = "POV-Ray";
    #declare ILFD_FactorXTexto                  = 8.5;
    #declare ILFD_TranslateTexto                = -0.2*y;
    
    object      {
      ILFD_Laboratory(200) 
      translate         <-1.21875,0.34375,-3.375>
    }      


Notas y Advertencias

Se produce superposición de objetos con frecuencia.  Podría ser útil probar varios valores semilla para disminuir el efecto.

El objeto inferior no es conexo.  El efecto se refuerza según el ángulo.

Es probable que el texto quede flotando cuando lo modifique, utilice los modificadores ILFD_TranslateTexto y ILFD_FactorXTexto para corregir esto.


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...(12/marzo/2013), 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