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

Donación de Rafael Angel Campos Vargas, en el año 2015, a la Biblioteca de objetos de POV-Ray.  Este proyecto se encuentra actualmente suscrito a 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 "JVPA.inc" (JaulaVespertinaPericoAve) dibuja una jaula para aves.  Modelos similares son utilizados en Costa Rica para la exhibición de estos animales.  Ofrece una macro que permite cambiar las características principales y texturas.  Es compatible con 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 "JVPA.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 "JVPA.pov" puede ejecutarse sin ningún proceso de instalación.  Unicamente debería estar ubicado en el mismo folder que "JVPA.inc".


Instrucciones básicas

Jaula
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 "JVPA.inc"
    
    object      {
      JVPA_Jaula( 0 ) 
      translate        <-1.875,1.425,-4.5>
    }

La macro fundamental tiene sólo un parámetro.

    #macro JVPA_Jaula( AnguloColumpio )        
AnguloColumpio :
Angulo para girar el columpio en una y otra dirección.

La siguiente variante de la macro fundamental, permite abrir las ventanas.

    #macro JVPA_JaulaAbierta( AnguloColumpio, BanderaBandeja,
                         PuertaIzquierda, PuertaCentral, PuertaDerecha )
AnguloColumpio :
Angulo para girar el columpio en una u otra dirección.
BanderaBandeja :
Valor "on" dibuja la bandeja inferior, valor "off" no la dibuja.
PuertaIzquierda :
Fracción para abrir la puertecilla izquierda.  Utilice 0.0 para cerrado y 1.0 para totalmente abierto.
PuertaCentral :
Fracción para abrir la puertecilla central.  Utilice 0.0 para cerrado y 1.0 para totalmente abierto.
PuertaDerecha :
Fracción para abrir la puertecilla derecha.  Utilice 0.0 para cerrado y 1.0 para totalmente abierto.

La siguiente macro dibuja el objeto con mayor control sobre las características.

    #macro JVPA_JaulaVespertinaPericoAve( AnguloColumpio, 
        BanderaBandeja, AbrirPuertas, Frente, Profundidad,
        AltoBase, AltoPiso, PaseBandeja, LateralTechoPlano,
        ExcesoTecho, AltoColumpio,
        TotalAlambresFrente, TotalAlambresProfundidad, ArregloVentanas,
        ArregloPalitos, GruesoAlambrito, GruesoAlambre, CurvaDecorativa,
        ArregloTexturas )
AnguloColumpio :
Angulo para girar el columpio en una u otra dirección.
BanderaBandeja :
Valor "on" dibuja la bandeja inferior, valor "off" no la dibuja.
AbrirPuertas :
Variable array de reales, dimensión igual al total de ventanas.  Son fracciones para abrir las ventanas definidas.  Utilice 0.0 para cerrado y 1.0 para totalmente abierto. Default es { 0.0, 0.0, 0.0 }, equivalente a la variable JVPA_TresVentanasCerradas.
Frente :
Referencia para el frente X de la jaula.  Default es 316*L.
Profundidad :
Referencia para la profundidad Z de la jaula.  Default es 172*L.
AltoBase :
Referencia para el alto Y de la jaula.  Default es 197*L.
AltoPiso :
Alto de ventana.  Default es 75*L.
PaseBandeja :
Alto de abertura para la bandeja.  Default es 11*L.
LateralTechoPlano :
Sección plana lateral del techo.  Considerar que aplica a derecha e izquierda.  Default es 86*L.
ExcesoTecho :
Referencia para las salientes en exceso del techo.  Default es 32*L.
AltoColumpio :
Alto del columpio.  Default es 110*L.
TotalAlambresFrente :
Total de alambres al frente.  Default es 36.
TotalAlambresProfundidad :
Total de alambres a lo profundo.  Default es 20.
ArregloVentanas :
Arreglo de vectores 3D, que describen las ventas.  < Piso, AlambreIzquierdo, AlambreDerecho >.  Default es JVPA_ArregloVentanas. 
Piso A partir de 1, que representa el primer nivel accesible para ventanas luego de una separación razonable de la bandeja.  En muchas jaulas será el único valor posible.
AlambreIzquierdo Número de alambre a la izquierda para soportar la ventana (sí se dibuja).
AlambreDerecho Número de alambre a la derecha para soportar la ventana (sí se dibuja).  Importante que AlambreDerecho > AlambreIzquierdo.
ArregloPalitos :
Arreglo de vectores 2D, para palitos de madera sin contar el columpio.  < Piso, AlambreIzquierdo >.  Default es JVPA_ArregloPalitos. 
Piso A partir de 1, que representa el primer nivel accesible para ventanas luego de una separación razonable de la bandeja.  En muchas jaulas será el único valor posible.
AlambreIzquierdo Número de alambre a la izquierda para soportar el palito.
GruesoAlambrito :
Grueso principal de alambre de la jaula.  Default es 1.5*L.
GruesoAlambre :
Grueso de alambre para dar firmeza.  Default es 1.8*L.
CurvaDecorativa :
Radio de ciertas curvas de la jaula.  Default es 7¨L.
ArregloTexturas :
Arreglo de cinco texturas para decorar la jaula { TexturaJaula, TexturaTecho, TexturaVentana, TexturaMadera, TexturaBandeja }. Valor por defecto JVPA_DefaultArregloTexturas.
TexturaJaula Textura principal de la jaula.  Default es JVPA_TexturaJaula.
TexturaTecho Textura del techo.  Default es JVPA_TexturaTecho.
TexturaVentana Textura de las ventanas.  Default es JVPA_TexturaVentana.
TexturaMadera Textura de los palitos de madera.  Default es JVPA_TexturaMadera.
TexturaBandeja Textura de la bandeja.  Default es JVPA_TexturaBandeja.

Si no dibuja la bandeja, puede ubicarla con la siguiente macro.

    #macro JVPA_BandejaJaula( FrenteJaula, ProfundidadJaula, PaseBandeja,
                GruesoAlambre, TexturaBandeja )
FrenteJaula :
Referencia para el frente X de la jaula.  Default es 316*L.
ProfundidadJaula :
Referencia para la profundidad Z de la jaula.  Default es 172*L.
PaseBandeja :
Alto de abertura para la bandeja.  Default es 11*L.
GruesoAlambre :
Grueso de alambre para dar firmeza.  Default es 1.8*L.
TexturaBandeja :
Textura de la bandeja.  Default es JVPA_TexturaBandeja.

En el siguiente ejemplo dibujamos la jaula con la puerta central abierta:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "JVPA.inc"
    
    object      {
      JVPA_JaulaAbierta( 0, on, 0, 1.0, 0 ) 
      translate        <-1.875,1.425,-4.5>
    }

En el siguiente ejemplo ilustramos el uso de la macro detallada para dibujar el mismo objeto original.

Textura principal de la jaula. 
Default es JVPA_TexturaJaula.

En el siguiente ejemplo repetimos el mismo dibujo anterior, pero la bandeja se dibuja con una macro independiente.

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "JVPA.inc"
    
    union        {    
      object                    {
        JVPA_JaulaVespertinaPericoAve( o, off, JVPA_TresVentanasCerradas, 
           0.316, 0.172, 0.197, 0.075, 0.011, 0.086, 0.032, 0.110, 36, 20,  
           JVPA_ArregloVentanas, JVPA_ArregloPalitos, 0.0015, 0.0018, 0.007,   
           JVPA_DefaultArregloTexturas )   
      }
      object                    {
        JVPA_BandejaJaula( 0.316, 0.172, 0.011, 0.018, JVPA_TexturaBandeja )
        translate          JVPA_PosicionBandeja
      }
      translate        <-1.875,1.425,-4.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.  El objeto tiene las siguientes características:
    Alto                            = 275*L
    Frente en X         	    = 380*L 
    Profundidad en Z                = -93*L..90*L  
La jaula descansa semicentrada sobre el plano XZ.  Frente hacia Z-, gravedad Y-.  Cuando hablamos de derecha de jaula, nos referimos a la derecha de un observador desde Z- hacia el origen.

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

JVPA_ArregloVentanas
Sirve como parámetro ArregloVentanas en la macro detallada.  Incluye descripciones para las ventanas default.
JVPA_ArregloPalitos
Sirve como parámetro ArregloPalitos en la macro detallada.  Incluye descripciones para los palitos default.
JVPA_TresVentanasCerradas
Sirve como parámetro AbrirPuertas en la macro detallada.  Representa tres ventanas cerradas como en el objeto default.
JVPA_PosicionBandeja
Se genera al llamar a las macros que generan la jaula.  Puede servir para ubicar la bandeja mediante un translate apropiado, cuando asigne "off" al parámetro BanderaBandeja.
JVPA_DefaultArregloTexturas
Sirve como parámetro ArregloTexturas en la macro detallada. Su valor es { JVPA_TexturaJaula, JVPA_TexturaTecho, JVPA_TexturaVentana, JVPA_TexturaMadera, JVPA_TexturaBandeja }.
JVPA_DefaultTexturaJaula
Textura principal de la jaula.
JVPA_DefaultTexturaTecho
Textura del techo.
JVPA_DefaultTexturaVentana
Textura de las ventanas.
JVPA_DefaultTexturaMadera
Textura de los palitos de madera.
JVPA_DefaultTexturaBandeja
Textura de la bandeja.


Modificadores

La siguiente es la lista de los modificadores permitidos en la unidad.
    #declare JVPA_TexturaJaula			= texture { ... }
Textura principal de la jaula.

    #declare JVPA_TexturaTecho			= texture { ... }
Textura del techo.

    #declare JVPA_TexturaVentana		= texture { ... }
Textura de las ventanas.

    #declare JVPA_TexturaMadera			= texture { ... }
Textura de los palitos de madera.

    #declare JVPA_TexturaBandeja		= texture { ... }
Textura de la bandeja.

    #declare JVPA_POV3_1			= off;
Para activar modo de compatibilidad con POVRay 3.1.  En algunas versiones se activará 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 "JVPA.inc"  
    #include "textures.inc"
    
    #declare JVPA_TexturaJaula  = 
      texture                   { 
        average
        texture_map             {  
          [ 0.5 JVPA_DefaultTexturaJaula ]
          [ 0.5 Rust                     ]
        }
      } 
    
    #declare JVPA_TexturaTecho          = Cork
    
    #declare JVPA_TexturaVentana        = Brass_Valley
    
    #declare JVPA_TexturaMadera         = Aluminum
    
    #declare JVPA_TexturaBandeja        = Yellow_Pine
    
    object                      {
      JVPA_Jaula( 0 )    
      translate        <-1.875,1.425,-4.5>
    }


Notas y Advertencias

Las ventanas laterales de la jaula no pueden abrirse en su totalidad por un error de diseño.  Es de esperar frecuentes problemas similares al modificar la jaula.

Cuide que el parámetro AltoPiso sea lo suficientemente pequeño para permitir al menos un nivel de ventanas.

Debe variar en forma consistente los parámetros, pues la macro tiene poco control de errores.


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...(21/octubre/2014), 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