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

Donación de Rafael Angel Campos Vargas, en enero del 2011, a la Biblioteca de objetos de POV-Ray v1.0.  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 "EHEV.inc" es muy simple de utilizar.  Crea cuatro diferentes esquineros para decorar los hogares, con instrucciones que facilitan operar pequeñas modificaciones.  Define objetos tipo default, permite la modificación vía macros o mediante redefiniciones de textura.  Posee modificador de compatibilidad para utilizar POVRay 3.1.

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 "EHEV.inc" en dicho subdirectorio; únicamente éste es necesario.  Opcionalmente podría colocar la documentación y demás 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 "EsquineroHEV.pov" puede ejecutarse sin ningún proceso de instalación.  Unicamente debería estar ubicado en el mismo folder que "EHEV.inc".


Instrucciones básicas

AsientoTerrazaPlasticoDomestico
Muy fácil de usar, tan simple como incluir el archivo, y ubicar el objeto.  Se definen los objetos default con macros.  A estos se les aplicará texturas y otras características predefinidas.   Tres de las cuatro macros default no tienen ningún parámetro.

    EHEV_EsquineroMetalTriple()
Trípode de metal, formando tres pisos cuadrantales de vidrio.

    EHEV_EsquineroPlasticoTriple()
Tres pisos circulares de plástico.

    EHEV_EsquineroVidrioPisoSimple()
Un solo piso cuadrangular bastante curvo en los vértices.

    EHEV_EsquineroVidrioDobleAlto( BanderaAlto )
Esquinero económico de vidrio, para clavar en las paredes mediante soportes de madera.

Nota:  Las variables fueron definidas para el archivo "stdcam.inc" de la versión POV-Ray 3.6.1, que viene en la distribución.  Podría no funcionar en versiones posteriores.  De cualquier forma, el archivo de prueba "EsquineroHEV.pov" da mejores resultados.

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "EHEV.inc"

    object { 
      EHEV_EsquineroMetalTriple()
    //  EHEV_EsquineroPlasticoTriple()
    //  EHEV_EsquineroVidrioPisoSimple()
    //  EHEV_EsquineroVidrioDobleAlto( false )
      rotate            45*y
      translate         < -1.687, 0.75, -3.75 >   
    }
Se pueden accesar y modificar mediante una macro que tiene el siguiente formato:
    EHEV_EsquineroHojarEspacioVacio
	( Estilo, Param1, Param2, Textura1, Textura2, Material1 )
La variable principal es Estilo.  Los siguientes son los valores reconocidos:

EHEV_MetalTriple
para referirse al modelo metálico de tres pisos.
  • Param1 :
    radio del esquinero, default es 215*L.
  • Param2 :
    pisos adicionales a los tres básicos, default es 0.
  • Textura1 :
    se aplica a los soportes metálicos del vidrio, default es EHEV_TexturaMetalTriple.
  • Textura2 :
    se aplica texture a las figuras "S" decorativas y a la barra, default es EHEV_TexturaSMetalTriple.
  • Material1 :
    se aplica material al vidrio, default es EHEV_VidrioMetalTriple.

EHEV_PlasticoTriple
para referirse al modelo plástico circular de tres pisos.
  • Param1 :
    diámetro plano del esquinero, default es 260*L.
  • Param2 :
    total de niveles, default es 3.
  • Textura1 :
    se aplica texture al soporte que rodea al círculo central, default es EHEV_TexturaPlasticoTriple.
  • Textura2 :
    se aplica texture a las patas, incluye el exceso final hacia y+, default es EHEV_TexturaPatasPlasticoTriple.
  • Material1 :
    se aplica material al circulo central, default es EHEV_MaterialPlasticoTriple.

EHEV_VidrioPisoSimple
para referirse al modelo de un piso, con soporte cuadrangular curvo de vidrio.
  • Param1 :
    permite colocar "mal" el vidrio, agregando un rotate Param1*y luego se aplica Param2;  default es 0.
  • Param2 :
    permite colocar "mal" el vidrio, agregando translate Param2*<1,0,1>.   Note que se ignora el valor en y, default es <0,0,0>.

  • Textura1 :
    se aplica texture a las partes doradas de la base, default es EHEV_TexturaDoradaVidrioPisoSimple.
  • Textura2 :
    se aplica texture a las patas en zona negra, default es EHEV_TexturaNegraVidrioPisoSimple.
  • Material1 :
    se aplica material al vidrio, default es EHEV_MaterialVidrioPisoSimple.

EHEV_VidrioDobleAlto
consiste en cuadrantes de vidrios simples, sostenido con reglas de madera a la pared.
Nota:  esta macro no aplica el translate 875*L*y, de la macro EHEV_EsquineroVidrioDobleAlto( true ).
  • Param1 :
    grosor del soporte de madera, default es 32*L.
  • Param2 :
    total de pisos, default es 2.
  • Textura1 :
    se aplica texture al soporte que rodea al vidrio, default es EHEV_TexturaVidrioDobleAlto.
  • Textura2 :
    se aplica texture a la esfera que finaliza los soportes, default es EHEV_TexturaEsferaVidrioDobleAlto
  • Material1 :
    se aplica material al vidrio, default es EHEV_MaterialVidrioDobleAlto.

Un ejemplo sencillo para utilizar la macro, sería el siguiente:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "EHEV.inc"

    object { 
      EHEV_EsquineroHogarEspacioVacio( 
 	EHEV_VidrioDobleAlto, 0.032, 2, texture{ T_Wood9 }, 
	texture{ T_Wood9 }, material{ texture { T_Wood9 } } )
      rotate            45*y
      translate         < -1.687, 0.75, -3.75 >   
    }      

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 diferentes objetos default tienen las siguientes características:
    EsquineroMetalTriple
      RadioPlano      		= 215*L
      Radio                	= 217*L
      Alto                 	= 890*L
      PrimerNivel          	= 112*L
      SegundoNivel         	= 441*L
      TercerNivel          	= 777*L
      CadaNivelAdicional   	= 336*L  
        El objeto se ubica orientado hacia x+ z-, <1,0,-1>
        el origen en la parte inferior, al vértice del cuadrante
    EsquineroPlasticoTriple
      RadioPlano           	= 130*L
      Radio                	= 148*L
      Alto                 	= 552*L
      PrimerNivel          	= 108.5*L
      SegundoNivel         	= 322.5*L
      TercerNivel          	= 536.5*L
      CadaNivelAdicional   	= 214*L  
        El origen en la parte inferior centrada
        las patas alineadas en paralelo a los ejes x y z
    EsquineroVidrioPisoSimple
      Radio           		= 160*L
      RadioLibre                = 113*L
      Alto                 	= 362.5*L
        El origen en la parte inferior centrada
        los laterales orientados paralelos a los ejes x y z
    EsquineroVidrioDobleAlto
      RadioPlano           	= 360*L
      Radio                	= 377*L
      Alto                 	= 32*L
      PrimerNivel          	= 17*L
      SegundoNivel         	= 317*L
      CadaNivelAdicional   	= 300*L
      Altura Recomendada   	= 875*L 
	(translate 875*L*y Ver macro 
 		EHEV_EsquineroVidrioDobleAlto( true ) )
        El objeto se ubica orientado hacia x+ z-, <1,0,-1>
        el origen en la parte inferior, al vértice del cuadrante
        mas 875*L*y optativo
Además todas las macros generan las siguentes variables automáticamente.  Si se utilizan, hay que tener en cuenta que se redefinen con cada llamada a la macro.

    #declare EHEV_TotalPisos
Indica el número total de niveles del esquinero.
    #declare EHEV_AlturaPisos		= array [ TotalPisos ]
El arreglo indica la altura correspondiente a cada piso, la numeración comienza en 0.
    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "EHEV.inc"

    union       {
      object { 
        EHEV_EsquineroVidrioPisoSimple() 
        rotate            45*y
      }
      cylinder    { 
        0, 0.1*y, 0.1 
        translate EHEV_AlturaPisos[ 0 ]*y
        pigment { Red }  
      }  
      translate         < -1.687, 0.75, -3.75 >   
    }

Modificadores

La siguiente es la lista de los modificadores permitidos en la unidad (cuando se indica, son valores default).  Comenzaremos con el modelo EsquineroMetalTriple.

    #declare EHEV_POV3_1                        = off;
Si se activa realiza simplificaciones de diseño, para asegurar compatibilidad con POVRay 3.1.  En algunas versiones de POVRay podría activarse automáticamente.
    #declare EHEV_TexturaMetalTriple            = texture      { ... }
Se aplica al soporte que rodea y sostiene al vidrio del esquinero modelo EHEV_MetalTriple.
    #declare EHEV_TexturaSMetalTriple           = texture      { ... }
Se aplica a las "S" decorativas y la barra en el modelo EHEV_MetalTriple.
    #declare EHEV_VidrioMetalTriple             = material     { ... }
Se aplica al vidrio en el modelo EHEV_MetalTriple.

A manera de ejemplo:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "EHEV.inc"

    #declare EHEV_TexturaMetalTriple	= texture	{
       pigment	{ Cyan }	
    }

    #declare EHEV_TexturaSMetalTriple	= texture	{
       pigment 	{ Gold }
    }    	

    #declare EHEV_VidrioMetalTriple	= material	{
       M_Water
    } 

    object { 
      EHEV_EsquineroMetalTriple()
      rotate            45*y
      translate         < -1.687, 0.75, -3.75 >   
    }
Ahora el modelo EsquineroPlasticoTriple:
    #declare EHEV_TexturaPlasticoTriple         = texture      { ... }
Se aplica al soporte de forma toroidal que rodea el centro plano en el modelo EHEV_PlasticoTriple.
    #declare EHEV_TexturaPatasPlasticoTriple    = texture      { ... }
Se aplica a las patas y final de patas en modelo EHEV_PlasticoTriple.
    #declare EHEV_MaterialPlasticoTriple        = material     { ... }
Se aplica al centro plano de los soportes en el modelo EHEV_PlasticoTriple.

A manera de ejemplo:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "EHEV.inc"

    #declare EHEV_TexturaPlasticoTriple		= texture	{
      PinkAlabaster
    }

    #declare EHEV_TexturaPatasPlasticoTriple	= texture	{
      PinkAlabaster	
    }

    #declare EHEV_MaterialPlasticoTriple	= material	{
      M_Glass 		
    }

    object { 
      EHEV_EsquineroPlasticoTriple()
      rotate            45*y
      translate         < -1.687, 0.75, -3.75 >   
    }
Ahora el modelo EsquineroVidrioPisoSimple:
    #declare EHEV_TexturaDoradaVidrioPisoSimple = texture      { ... }
Se aplica a la zona dorada del modelo EHEV_VidrioPisoSimple.
    #declare EHEV_TexturaNegraVidrioPisoSimple  = texture      { ... }
Se aplica a la zona negra del modelo EHEV_VidrioPisoSimple.
    #declare EHEV_MaterialVidrioPisoSimple      = material     { ... }
Se aplica al vidrio del modelo EHEV_VidrioPisoSimple.

A manera de ejemplo:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "EHEV.inc"

    #declare EHEV_TexturaDoradaVidrioPisoSimple	= texture	{
      pigment	{ Brown }
    }

    #declare EHEV_TexturaNegraVidrioPisoSimple	= texture       {
      pigment	{ Brown }
    }	

    #declare EHEV_MaterialVidrioPisoSimple	= material	{
      M_Orange_Glass
    }

    object { 
      EHEV_EsquineroVidrioPisoSimple()
      rotate            45*y
      translate         < -1.687, 0.75, -3.75 >   
    }
Ahora el modelo VidrioDobleAlto:
    #declare EHEV_ColorMaderaVidrioDobleAlto    = White;
Para cambiar el color y a la vez mantener la textura del soporte en el tipo EHEV_VidrioPisoSimple.  Util si no se redefine EHEV_TexturaSoporteVidrioDobleAlto.  Debe declararse antes de la instruccion #include correspondiente.
    #include "stdinc.inc"
    #include "stdcam.inc"
    #declare EHEV_ColorMaderaVidrioDobleAlto	= Red;
        // note que se declara antes del archivo include	
    #include "EHEV.inc"

    object { 
      EHEV_EsquineroVidrioDobleAlto( false )
      rotate            45*y
      translate         < -1.687, 0.75, -3.75 >   
    }
    #declare EHEV_TexturaSoporteVidrioDobleAlto = texture      { ... }
Para aplicar a los soportes en el modelo EHEV_VidrioDobleAlto.  Si solo se quiere cambiar el color (por ejemplo pared Blue), se recomienda usar EHEV_ColorMaderaVidrioDobleAlto (más fácil).
    #declare EHEV_TexturaEsferaVidrioDobleAlto  = texture      { ... }
Para aplicar a la esfera final del soporte de madera en el modelo EHEV_VidrioDobleAlto.
    #declare EHEV_MaterialVidrioDobleAlto       = material     { ... }
Para aplicar al vidrio en el modelo EHEV_VidrioDobleAlto.

A manera de ejemplo:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "EHEV.inc"

    #declare EHEV_TexturaSoporteVidrioDobleAlto	= texture	{
      T_Wood9
    }

    #declare EHEV_TexturaEsferaVidrioDobleAlto	= texture 	{
      T_Wood9
    }

    #declare EHEV_MaterialVidrioDobleAlto	= material	{
      texture	{
        T_Wood9
      }
    }

    object { 
      EHEV_EsquineroVidrioDobleAlto( false )
      rotate            45*y
      translate         < -1.687, 0.75, -3.75 >   
    }

Notas y Advertencias

El modelo EsquineroMetalTriple utiliza la variable local AnguloCorreccion con un valor de 11 grados para estimar la posición de la "S" que sigue la curva del círculo (las que no son paralelas a los ejes).  Esta estimación resultará incorrecta en el caso general.  Sin embargo funcionará bien en las cercanías de Param1 ~ 215*L.  En caso de problemas, se sugiere sustituir la variable local por una fórmula.  En mi opinión una fórmula razonable está al alcance del profesor de matemática del colegio más cercano.

Las variables EHEV_TotalPisos y EHEV_AlturaPisos se redefinen con cada llamado a la macro.  Además, no están disponibles antes del llamado;  ni darán valores correctos en caso de escalamiento o similar.

Si se va a modificar la variable EHEV_ColorMaderaVidrioDobleAlto, debería realizar esto antes de la declaración "#include".


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 en unos diez años poder 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...(3/enero/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