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

Donación de Rafael Angel Campos Vargas, en enero 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 "WHFT.inc" crea un ventanal de terraza.  Es compatible con PovRay 3.1.  La macro base permite modificar el número de hileras y columnas; así como las características de textura individuales de cada ventana.

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 "WHFT.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 "WHFT.pov" puede ejecutarse sin ningún proceso de instalación.  Unicamente debería estar ubicado en el mismo folder que "WHFT.inc".


Instrucciones básicas

Ventana
Muy fácil de usar, tan simple como incluir el archivo y ubicar el objeto.  Se definen dos versiones principales default.  Se incluye además;  una macro extra, que permite modificar fácilmente varias de sus características básicas.

El siguiente ejemplo recurre a las macros principales, colocando al objeto en posición base.

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "WHFT.inc"
    
    object      {
      WHFT_VentanaTerraza( 0.5, true )	 			
      //  WHFT_VentanaGrande( 0.5, 0.5, 0.4, true )
      translate < -1.375, 0.625,-2.5   >
    }
La primera macro dibuja un ventana de 2*2 vidrios.
    WHFT_VentanaTerraza( FraccionVidrio, BanderaReja )
FraccionVidrio :
Varía de 0.0 a 1.0, cerrado... hasta 90 grados.  Se aplica a la ventana inferior derecha.
BanderaReja :
on dibuja la reja
off no la dibuja

Una versión de mayores dimensiones de un objeto similar, se consigue con la siguiente macro.

    WHFT_VentanaFrande
	( FraccionVidrio1, FraccionVidrio2, FraccionVidrio3, BanderaReja )
FraccionVidrio1 :
Varía de 0.0 a 1.0, cerrado... hasta 90 grados.  Se aplica a la ventana inferior central.
FraccionVidrio2 :
Varía de 0.0 a 1.0, cerrado... hasta 90 grados.  Se aplica a la ventana superior izquierda.
FraccionVidrio3 :
Varía de 0.0 a 1.0, cerrado... hasta 90 grados.  Se aplica a la ventana superior derecha.
BanderaReja :
on dibuja la reja
off no la dibuja

La siguiente macro, dibuja una ventana similar;  con mayor flexibilidad.

    #macro WHFT_WindowHouseFrontTerrace
        ( AltoNivel, AltoNivelExtra, AnchoNivel, ProfundidadNivel,
          GruesoNivel, NivelesFila, NivelesColumna,
          BarrasHorizontales, BarrasVerticales,
          ArregloFraccion, ArregloTextura, BanderaReja )
AltoNivel :
Alto del primer nivel de ventanas.
AltoNivelExtra :
Alto de la siguiente fila de ventanas.
AnchoNivel :
Frente de una columna de vidrios.
ProfundidadNivel :
Ancho de la madera de soporte de los vidrio, generalmente menor al grueso verdadero de la pared.
GruesoNivel :
Grueso de la madera divisoria.
NivelesFila :
Total de filas horizontales de ventanas.
NivelesColumna :
Total de columnas verticales de vidrios.
BarrasHorizontales :
Total de barras horizontales del enrejado, sin contar el borde.
BarrasVerticales :
Total de barras verticales del enrejado, sin contar el borde.
ArregloFraccion :
Necesita un array [ NivelesFila*NivelesColumna ], con una lista de numeros reales.  Ingrese un valor de -2, para un vidrio liso.  Caso contrario, una fraccion de 0.0 a 1.0, cerrado, hasta... 90 grados.  Orden de izquierda a derecha, para luego ascender por fila.
ArregloTextura :
Necesita un array [ NivelesFila*NivelesColumna ], con una lista de texturas, que se aplicará en cada vidrio.  Orden de izquerda a derecha, para luego ascender por fila.
BanderaReja :
on dibuja la reja
off no la dibuja

Cada vez que se llama a la macro se genera una variable WHFT_ContainerDifferenceWHFT.  Es un objeto que ocupa el mismo lugar que la ventana.  Por default, no tiene textura y ocupa el doble de profundidad.  Su objetivo es facilitar la perforación de paredes.

El siguiente ejemplo, recurre a la macro larga y al objeto WHFT_ContainerDifferenceWHFT.

    #include "stdinc.inc"
    #include "stdcam.inc" 
    #include "WHFT.inc"
    
    #declare MyVentanal  = array [2] { -2, 0.5 } 
    #declare MyTextura   = array [2] { WHFT_TexturaVidrioVentana,
                              WHFT_TexturaVidrioRectangular }
                              
    union       {
      object       {
        WHFT_WindowHouseFrontTerrace
          ( 0.532, 0.343, 0.511, 0.035, 0.075,
            1, 2, 9, 5, MyVentanal, MyTextura, false )
      }
      difference        {                        
        box             {
          <-10,-10,-0.03>, <10,10,0.03>
        }
        object          {
          WHFT_ContainerDifferenceWHFT
        }  
        pigment         {
          Cyan  
        }
      }
      translate < -1.375, 0.625,-2.5   >
    }


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.  Los objetos default tienen las siguientes características:
      WHFT_VentanaGrande
    Mínimo		: <  -774,      0,  -35 >*L
    Máximo		: <   774,   1233,  106 >*L
      WHFT_VentanaGrande sin reja	
    Mínimo 		: <  -774,      0,  -35 >*L
    Máximo 		: <   774,   1233,   35 >*L
     WHFT_VentanaTerraza
    Mínimo 		: <  -519,      0,  -35 >*L
    Máximo 		: <   519,    890,  106 >*L
     WHFT_VentanaTerraza sin reja
    Mínimo 		: <  -519,      0,  -35 >*L
    Máximo 		: <   519,    890,   35 >*L
Todos los objetos se dibujan inicialmente sobre el plano XY, la base del marco centrada en el origen alineado en el eje X.  El frente con reja hacia Z-.

Se define la variable WHFT_ContainerDifferenceWHFT, con cada llamado a la macro.  Se recomienda por ello, definir la pared después de la creación de la ventana para facilitar la perforación de la misma.  Consultar la sección Modificadores, en el caso que convenga aumentar el grosor de la perforación o aplicar una textura por diferencia.


Modificadores

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

    #declare WHFT_FactorContainerDifference       = 1.0;
Permite aumentar la profundidad en pared de WHFT_ContainerDifferenceWHFT para paredes de mayor grosor.  El valor default produce el doble del marco.

    #declare WHFT_TexturaDifferenceContainer   = texture { ... }
Cuando se define esta variable, se aplica textura por diferencia a WHFT_ContainerDifferenceWHFT.  Puede ser útil para pintar el interior de paredes, de color diferente que el exterior.

    #declare WHFT_TexturaMarcoVentana	       = texture { ... }      
Textura a aplicar en el marco.

    #declare WHFT_TexturaVidrioVentana	       = texture { ... }
Textura a aplicar a la mayoría de los vidrios.

    #declare WHFT_TexturaVidrioRectangular     = texture { ... }
Se aplica al vidrio superior central de la ventana grande.

    #declare WHFT_TexturaSujetaVidrio          = texture { ... }
Se aplica en el soporte de las láminas rectangulares, directamente a ambos lados de los vidrio.

    #declare WHFT_TexturaSujetaSujetaVidrio    = texture { ... }
Soporte metálico en ambas laterales de los vidrios rectangulares.

    #declare WHFT_TexturaRejaMetalica          = texture { ... }
Textura para la reja.

    #declare WHFT_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"

    #declare WHFT_FactorContainerDifference    = 2.0;     
    #declare WHFT_TexturaContainerDifference   = texture       {
      pigment	{ color Cyan } 
    } 
    #declare WHFT_TexturaMarcoVentana          = texture       {
      pigment   { color Cyan }
    }
    #declare WHFT_TexturaVidrioVentana         = texture       {
      pigment   { rgbt <1,1,1,0.5> }
    }
    #declare WHFT_TexturaVidrioRectangular     = texture       { 
      pigment   { rgbt <1,1,1,0.5>}
    } 
    #declare WHFT_TexturaSujetaVidrio          = texture       {  
      pigment   { color Red   }
    }       
    #declare WHFT_TexturaSujetaSujetaVidrio    = texture       { 
      pigment   { color Red   }
    }
    #declare WHFT_TexturaRejaMetalica          = texture       {
      pigment   { color Cyan }
    }

    #include "WHFT.inc"

    union    {	
     object { 
        WHFT_VentanaTerraza( 0.5, true )
      }  
      difference	{
	box		{
	  < -3, -1, +0.120 >,
	  <  3,  4, -0.120 >	
          pigment	{ color Blue }
	}
	object		{
	  WHFT_ContainerDifferenceWHFT
	}
      }
      translate <-1,0.5,-2>
    } 


Notas y Advertencias

La textura actual, produce un reflejo muy bien definido de las barras.  Esto puede resultar desagradable en algunas ocasiones.  Modifique en tal caso la textura de los vidrios, disminuyendo su reflectividad.

Los vidrios, en ciertos patrones y ángulos producen rayas negras.  La mayoría de las veces, esto podrá corregirse con un buen acomodo de las luces.


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...(26/diciembre/2011), 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