Donación de Rafael Angel Campos Vargas, en junio del 2011, 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.
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).Este objeto fue creado originalmente mediante el programa "Blob Sculptor 2.0b". Lamentablemente la última versión fue en 1994. Aún así es completamente compatible con FreeDOS y WindowsXP.
Chris Bartlett 2007
Si le interesa obtener una copia del programa, puede buscarla en los siguientes enlaces:
www.rocketjam.com/povmod.html
www.personal.uni-jena.de/~p6sepa/software.htm
La versión actual v1.0 de "LRAV.inc" crea una lagartija de metabolas. Sin embargo, es algo complicada de utilizar. El movimiento se logra declarando una matriz de giros de tamaño variable. Además, se permite la modificación de texturas, mediante redefinición previa al llamado a la macro. En alguna de sus variantes es compatible con POV-Ray 3.1.Indice de página:
- Instalación de Archivos
- Instrucciones básicas
- Características del objeto
- Modificadores
- Notas y Advertencias
- Sugerencias de modificación
- Sobre LibreN3D
Instalación de Archivos
El procedimiento siguiente es completamente optativo, corresponde simplemente al estándard de la Biblioteca de objetos POV-Ray.Nota: El archivo de prueba "LRAV.pov" puede ejecutarse sin ningún proceso de instalación. Unicamente debería estar ubicado en el mismo folder que "LRAV.inc".
- 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.
- Copie el archivo "LRAV.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.
- 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.
Instrucciones básicas
Muy fácil de usar, tan simple como incluir el archivo y ubicar el objeto. Se define una versión del objeto en posición basal, mediante macro default. O bien se permite simular el movimiento, mediante declaración previa de una matriz de giros.
![]()
El siguiente ejemplo recurre a la macro default, colocando a la lagartija en posición base.
#include "stdinc.inc" #include "stdcam.inc" #include "LRAV.inc" object { LRAV_LagartijaReptilAnimalVivo() translate <-1.937,1.6375,-4.75> }La macro principal recibe únicamente un parametro.#macro LRAV_Lagartija( MyArreglo )MyArreglo es simplemente un tipo ARRAY bidimensional. La primera dimensión es variable, y corresponde al total de giros a declarar. La segunda dimensión contiene entre 4 o cinco campos.#declare MyArreglo = ARRAY [ GirosSolicitados ][ 4/5 ] { { IdentificadorGiro0, RotarX0, RotarY0, RotarZ0 [, on/off] }, { IdentificadorGiro1, RotarX1, RotarY1, RotarZ1 [, on/off] }, { IdentificadorGiro2, RotarX2, RotarY2, RotarZ2 [, on/off] }, ... }La siguiente es la lista de los identificadores de giro posible.
- GirosSolicitados :
- Indica el total de giros a solicitar. El número es libre con un valor máximo de 55, es decir existen 55 puntos de control.
- IdentificadorGiro :
- Numero o etiqueta clave que identifica el giro. Buscar más adelante los giros admisibles.
- RotarX :
- Indica la rotacion en grados respecto eje X*, este es el mismo eje X luego de aplicar rotación en otros puntos de control. Las rotaciones se acumulan a partir de la posicion base.
- RotarY :
- Indica rotacion acumulada respecto eje Y*, este es el eje Y luego de aplicar RotarX.
- RotarZ :
- Indica rotacion acumulada respecto eje Z*, este es el eje Z luego de aplicar RotarX y RotarY.
- [, on/off] :
- Parámetro optativo, útil en diseño y animación. Cuando se indique off, se desactiva el giro.
- Ejes de control del tronco
- LRAV_EjeCentral
- Ubicado en el centro del tronco.
- LRAV_EjeCentralI01
- Ubicado atrás de LRAV_EjeCentral.
- LRAV_EjeCentralI02
- Ubicado atrás de LRAV_EjeCentralI01.
- LRAV_EjeCentralI03
- Ubicado atrás de LRAV_EjeCentralI02.
- LRAV_EjeCentralI04
- Ubicado atrás de LRAV_EjeCentralI03.
- LRAV_EjeCentralI05
- Ubicado atrás de LRAV_EjeCentralI04.
- LRAV_EjeCentralI06
- Ubicado atrás de LRAV_EjeCentralI05.
- LRAV_EjeCentralI07
- Ubicado atrás de LRAV_EjeCentralI06.
- LRAV_EjeCentralD01
- Ubicado delante de LRAV_EjeCentral.
- LRAV_EjeCentralD02
- Ubicado delante de LRAV_EjeCentralD01.
- LRAV_EjeCentralD03
- Ubicado delante de LRAV_EjeCentralD02.
- LRAV_EjeCentralD04
- Ubicado delante de LRAV_EjeCentralD03.
- LRAV_EjeCentralD05
- Ubicado delante de LRAV_EjeCentralD04.
- LRAV_EjeCentralD06
- Ubicado delante de LRAV_EjeCentralD05.
- LRAV_EjeCentralD07
- Ubicado delante de LRAV_EjeCentralD06.
- Ejes de control de la cola
- LRAV_EjeCola01
- Ubicado atrás del tronco.
- LRAV_EjeCola02
- Ubicado atrás de LRAV_EjeCola01.
- LRAV_EjeCola03
- Ubicado atrás de LRAV_EjeCola02.
- LRAV_EjeCola04
- Ubicado atrás de LRAV_EjeCola03.
- LRAV_EjeCola05
- Ubicado atrás de LRAV_EjeCola04.
- LRAV_EjeCola06
- Ubicado atrás de LRAV_EjeCola05.
- LRAV_EjeCola07
- Ubicado atrás de LRAV_EjeCola06.
- LRAV_EjeCola08
- Ubicado atrás de LRAV_EjeCola07.
- LRAV_EjeCola09
- Ubicado atrás de LRAV_EjeCola08.
- LRAV_EjeCola10
- Ubicado atrás de LRAV_EjeCola09.
- Ejes de control de la cabeza
- LRAV_EjeCabeza01
- Ubicado en el cuello.
- LRAV_EjeCabeza02
- Ubicado delante de LRAV_EjeCabeza01.
- Ejes de pata delantera izquierda (z+,x+)
- LRAV_EjeAntePataDI
- Ubicado a la salida de la pierna en tronco.
- LRAV_EjePataDI
- Ubicado en la union pierna antepierna.
- LRAV_EjeDedoExteriorDI
- Ubicado en punto de union del dedo exterior.
- LRAV_EjeDedoInteriorDI
- Ubicado en punto de union del dedo interior.
- LRAV_EjeDedoCentroExteriorDI
- Ubicado en punto de union del dedo a la par exterior del dedo central.
- LRAV_EjeDedoCentroInteriorDI
- Ubicado en punto de union del dedo a la par interior del dedo central.
- LRAV_EjeDedoMedioDI
- Ubicado en punto de union del dedo medio.
- Ejes de pata delantera derecha (z+,x-)
- LRAV_EjeAntePataDD
- Ubicado a la salida de la pierna en tronco.
- LRAV_EjePataDD
- Ubicado en la union pierna antepierna.
- LRAV_EjeDedoExteriorDD
- Ubicado en punto de union del dedo exterior.
- LRAV_EjeDedoInteriorDD
- Ubicado en punto de union del dedo interior.
- LRAV_EjeDedoCentroExteriorDD
- Ubicado en punto de union del dedo a la par exterior del dedo central.
- LRAV_EjeDedoCentroInteriorDD
- Ubicado en punto de union del dedo a la par interior del dedo central.
- LRAV_EjeDedoMedioDD
- Ubicado en punto de union del dedo medio.
- Ejes de pata trasera izquierda (z-,x+)
- LRAV_EjeAntePataTI
- Ubicado a la salida de la pierna en tronco.
- LRAV_EjePataTI
- Ubicado en la union pierna antepierna.
- LRAV_EjeDedoExteriorTI
- Ubicado en punto de union del dedo exterior.
- LRAV_EjeDedoInteriorTI
- Ubicado en punto de union del dedo interior.
- LRAV_EjeDedoCentroExteriorTI
- Ubicado en punto de union del dedo a la par exterior del dedo central.
- LRAV_EjeDedoCentroInteriorTI
- Ubicado en punto de union del dedo a la par interior del dedo central.
- LRAV_EjeDedoMedioTI
- Ubicado en punto de union del dedo medio.
- Ejes de pata trasera derecha (z-,x-)
- LRAV_EjeAntePataTD
- Ubicado a la salida de la pierna en tronco.
- LRAV_EjePataTD
- Ubicado en la union pierna antepierna.
- LRAV_EjeDedoExteriorTD
- Ubicado en punto de union del dedo exterior.
- LRAV_EjeDedoInteriorTD
- Ubicado en punto de union del dedo interior.
- LRAV_EjeDedoCentroExteriorTD
- Ubicado en punto de union del dedo a la par exterior del dedo central.
- LRAV_EjeDedoCentroInteriorTD
- Ubicado en punto de union del dedo a la par interior del dedo central.
- LRAV_EjeDedoMedioTD
- Ubicado en punto de union del dedo medio.
Un ejemplo sencillo para utilizar la matriz de giro, sería el siguiente:
#include "stdinc.inc" #include "stdcam.inc" #include "LRAV.inc" #declare MyArreglo = array [ 2 ][ 5 ] { { LRAV_EjeCentral, 0, 10, 0, on }, { LRAV_EjeCola01 , 0,-10, 0, on } } object { LRAV_Lagartija( MyArreglo ) translate <-1.937,1.6375,-4.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. La lagartija default tienen las siguientes características:LargoTotal = 1350*L (+400*L -950*L)*z ProfundidadTotal = 180*L (+ 90*L - 90*L)*y Ancho Sin Patas = 240*L Ancho Con Patas = 550*LLa macro LRAV_LagartijaReptilAnimalVivo() crea el dibujo de una lagartija en estilo 3D, con el centro del tronco en el origen y la cabeza orientada hacia z+.Se definen las siguientes texturas base, que no deberían modificarse. Para su correcta modificación consultar la sección Modificadores.
- LRAV_TexturaDedo
- Define la textura a aplicar en los dedos.
- LRAV_TexturaOjo
- Define la textura a aplicar en los ojos.
- LRAV_TexturaCabeza
- Define la textura a aplicar en la cabeza.
- LRAV_TexturaTronco
- Define la textura a aplicar en el tronco.
- LRAV_TexturaCola
- Define la textura a aplicar en la cola.
- LRAV_TexturaPata
- Define la textura a aplicar en la pata.
- LRAV_TexturaAntePata
- Define la textura a aplicar en la antepierna.
Modificadores
La siguiente es la lista de los modificadores permitidos en la unidad (cuando se indica, son valores default).
#declare LRAV_Textura2 = off;Si se activa con "on" produce otra variante de textura. Debería declararse antes del #include "LRAV.inc". El dibujo dado de ejemplo utiliza esta variante de textura.
#declare LRAV_BanderaBoca = on;Si se desactiva con "off", no dibuja la boca. La boca default es sumamente sencilla e inexpresiva. Este modificador facilitaría su eventual reemplazo.
#declare LRAV_ColorBoca = DarkGreen;Permite modificar el color default de la boca.
#declare LRAV_DefaultTexturaDedo = texture { LRAV_TexturaDedo }Define la textura default a aplicar en los dedos.
#declare LRAV_DefaultTexturaOjo = texture { LRAV_TexturaOjo }Define la textura default a aplicar en los ojos.
#declare LRAV_DefaultTexturaCabeza = texture { LRAV_TexturaCabeza }Define la textura default a aplicar en la cabeza.
#declare LRAV_DefaultTexturaTronco = texture { LRAV_TexturaTronco }Define la textura default a aplicar en el tronco.
#declare LRAV_DefaultTexturaCola = texture { LRAV_TexturaCola }Define la textura default a aplicar en la cola.
#declare LRAV_DefaultTexturaPata = texture { LRAV_TexturaPata }Define la textura default a aplicar en la pata.
#declare LRAV_DefaultTexturaAntePata = texture { LRAV_TexturaAntePata }Define la textura default a aplicar en la antepierna.
#declare LRAV_POV3_1 = off;Si se activa con "on" produce simplificaciones que permiten su ejecución en la version POVRay 3.1. En algunas versiones de POVRay se activa automáticamente.A manera de ejemplo del uso de los modificadores:
#include "stdinc.inc" #include "stdcam.inc" #declare LRAV_Textura2 = on; #include "LRAV.inc" #include "textures.inc" #declare LRAV_DefaultTexturaDedo = texture { average texture_map { [ 0.5 Rust ] [ 0.5 LRAV_TexturaDedo ] } } #declare MyArreglo = array [ 2 ][ 4 ] { { LRAV_EjeCentral, 0, 10, 0 }, { LRAV_EjeCola01 , 0,-10, 0 } } object { LRAV_Lagartija( MyArreglo ) translate <-1.937,1.6375,-4.75> }
Notas y Advertencias
Se recomienda que en el tronco y la cola se subdivida los giros grandes en varios subgiros pequeños. Precisamente para ello son "tantos" puntos de control; pues aumenta la naturalidad del movimiento.El movimiento de las patas resulta poco realista a corta distancia. Disminuya el giro de la Pata y aproveche la unión Pata-AntiPata.
Aparte del giro de bloque, la textura del tronco y de la cola no giran solidariamente con la matriz de giros. Una solución provisional sería agregar un poco de aleatoriedad para confundir la vista. Por ejemplo, LRAV_DefaultTexturaTronco = texture { LRAV_TexturaTronco rotate 5*rand( S ) }.
Sugerencias de modificación
- Lograr el movimiento solidario de la textura con las metabolas.
- Aumentar la expresividad de la cabeza.
- Mejorar la unión Pata-Tronco.
Sobre LibreN3D
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...(23/junio/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.
Descarga sistema operativo FreeDOS
Descarga compilador FreePascal