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

Donación de Rafael Angel Campos Vargas, en el año 2020, 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 "GRSV.inc" (GorraRecuerdoSapoVenenoso) dibuja una corriente de souvenir. Permite cambiar las texturas fácilmente. La gorra puede arrugarse al redefiner puntos y normales en arreglos matriciales. Es compatible con POV-Ray 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

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 los archivo "GRSV.inc" y "GRSV_STS.inc" en dicho subdirectorio;  únicamente estos dos son necesarios.  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 "GRSV.pov" puede ejecutarse sin ningún proceso de instalación.  Unicamente debería estar ubicado en el mismo folder que "GRSV.inc" y "GRSV_STS.inc".


Instrucciones básicas

Gorra
Muy fácil de usar, tan simple como incluir el archivo y ubicar el objeto.  El siguiente ejemplo ilustra el procedimiento básico.
    #if ( version >= 3.7 )
      #version 3.7;
    #end
    global_settings { assumed_gamma 1.0 }  

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "GRSV.inc"
    
    object     	{ 
      GRSV_Gorra() 
      translate         <-1.88,+1.55,-4.70>    
    }

La macro principal no tiene parámetros.

    #macro GRSV_Gorra()

La siguiente macro permite un mayor control de las características, aunque puede ser algo complicada de utilizar.

    #macro GRSV_GorraRecuerdoSapoVenenoso( AltoGorra, AnchoGorra, FrenteGorra,
              PuntosNormalesFrontal, PuntosNormalesPosterior, PuntosNormalesAla,
              MaterialPrincipal, MaterialFrontal,
              MaterialLateral, MaterialPosterior)
AltoGorra :
Alto referencia para los puntos de la gorra. Todas las coordenadas Y serán escaladas por este factor. Valor por defecto 86*L.
AnchoGorra :
Ancho referencia para los puntos de la gorra. Todas las coordenadas X serán escaladas por este factor. Valor por defecto 128.6*L.
FrenteGorra :
Radio frontal aproximado para el cuerpo principal. Todas las coordenadas Z serán escaladas por este factor. Valor por defecto 85*L.
PuntosNormalesFrontal :
array [9][2], de nuevo puntos de control con sus normales para el frente del cuerpo de la gorra (donde está el sapo). Se sugiere copiar la declaración de GRSV_HomogeneoArregloPuntosNormalesFrontal, cambiarle el nombre y modificar a conveniencia. Las normales no necesitan estar normalizadas. Cada renglón puede ubicarse con los siguientes índices.
Indice Valor Significado
GRSV_Alto 0 Punto superior de la gorra
GRSV_MedioIzquierda 1 Media altura a la izquierda
GRSV_MedioCentral 2 Media altura central
GRSV_MedioDerecha 3 Media altura a la derecha
GRSV_BajoIzquierda 4 Borde inferior a la izquierda
GRSV_BajoCentralIzquierda 5 Intermedio entre 4 y 6
GRSV_BajoCentral 6 Borde inferior central
GRSV_BajoCentralDerecha 7 Intermedio entre 6 y 8
GRSV_BajoDerecha 8 Borde inferior derecha
Valor por defecto GRSV_DefectoArregloPuntosNormalesFrontal.
PuntosNormalesPosterior :
array [11][2], de once puntos de control con sus normales para la zona posterior del cuerpo de la gorra. Se sugiere copiar la declaración de GRSV_HomogeneoArregloPuntosNormalesPosterior, cambiarle el nombre y modificar a conveniencia. Las normales no necesitan estar normalizadas. Cada renglón puede ubicarse con los siguientes índices.
Indice Valor Significado
GRSV_Alto 0 Se ignora (redundante)
GRSV_MedioIzquierda 1 Media altura a la izquierda
GRSV_MedioCentral 2 Media altura central
GRSV_MedioDerecha 3 Media altura a la derecha
GRSV_BajoIzquierda 4 Borde inferior a la izquierda
GRSV_BajoCentralIzquierda 5 Intermedio entre 4 y 6
GRSV_BajoCentral 6 Borde inferior central
GRSV_BajoCentralDerecha 7 Intermedio entre 6 y 8
GRSV_BajoDerecha 8 Borde inferior derecha
GRSV_LateralIzquierda 9 Borde inferior extremo a la izquierda
GRSV_LateralDerecha 10 Borde inferior extremo a la derecha
Valor por defecto GRSV_DefectoArregloPuntosNormalesPosterior.
PuntosNormalesAla :
array [6][2], de seis puntos de control con sus normales para el ala de la gorra. Los puntos deben alejarse un poco del borde de la gorra para evitar efectos antiestéticos. El programa automáticamente rellenará la zona de unión. Se sugiere copiar la declaración de GRSV_HomogeneoArregloPuntosNormalesAla, cambiarle el nombre y modificar a conveniencia. Las normales no necesitan estar normalizadas. Cada renglón puede ubicarse con los siguientes índices.
Indice Valor Significado
GRSV_AlaIzquierda 0 Extremo izquiero del ala
GRSV_AlaCentral 1 Extremo central posterior del ala
GRSV_AlaDerecha 2 Extremo derecho del ala
GRSV_AlaDelanteraIzquierda 3 Punto izquiero delantero del ala
GRSV_AlaDelantera 4 Extremo delantero del ala
GRSV_AlaDelanteraDerecha 5 Punto derecho delantero del ala
Valor por defecto GRSV_DefectoArregloPuntosNormalesAla.
MaterialPrincipal :
Material de costuras, botón superior y ala. Valor por defecto GRSV_MaterialPrincipal.
MaterialFrontal :
Material para el frente de la gorra. Valor por defecto GRSV_MaterialFrontal.
MaterialLateral :
Material para el lateral de la gorra. Valor por defecto GRSV_MaterialLateral.
MaterialPosterior :
Material para la zona posterior de la gorra. Valor por defecto GRSV_MaterialPosterior.

El siguiente ejemplo dibuja el mismo objeto por defecto.

    #if ( version >= 3.7 )
      #version 3.7;
    #end
    global_settings { assumed_gamma 1.0 }  

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "GRSV.inc"
    
    object     	{ 
      GRSV_GorraRecuerdoSapoVenenoso( 0.086, 0.1286, 0.085,
        GRSV_DefectoArregloPuntosNormalesFrontal,  
        GRSV_DefectoArregloPuntosNormalesPosterior, 
        GRSV_DefectoArregloPuntosNormalesAla,
        GRSV_MaterialPrincipal, GRSV_MaterialFrontal,
        GRSV_MaterialLateral, GRSV_MaterialPosterior)
      translate		<-1.88,+1.55,-4.70>    
    }

En el siguiente ejemplo arrugamos la gorra con un factor aleatorio. Intencionalmente colocamos una depresión al centro de la gorra.

    #if ( version >= 3.7 )
      #version 3.7;
    #end
    global_settings { assumed_gamma 1.0 }  

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "GRSV.inc"

    #local CustomPuntosFrontal      = array  [9][2]
    #local CustomPuntosPosterior    = array [11][2]
    
    #local S                        = seed(13233);
    
    #local C                        = 0;
    #while (C < 9)
      #local CustomPuntosFrontal[C][0]              =
        GRSV_HomogeneoArregloPuntosNormalesFrontal[C][0]+
        0.1*<1-2*rand(S),1-2*rand(S),1-2*rand(S)>; 
      #local CustomPuntosFrontal[C][1]              =
        GRSV_HomogeneoArregloPuntosNormalesFrontal[C][1]+
        0.5*<1-2*rand(S),1-2*rand(S),1-2*rand(S)>;         
      #local C                      = C+1;
    #end  //  #while (C < 9)
    
    #local C                        = 0;
    #while (C < 11)
      #local CustomPuntosPosterior[C][0]            =
        GRSV_HomogeneoArregloPuntosNormalesPosterior[C][0]+
        0.1*<1-2*rand(S),1-2*rand(S),1-2*rand(S)>; 
      #local CustomPuntosPosterior[C][1]            =
        GRSV_HomogeneoArregloPuntosNormalesPosterior[C][1]+
        0.5*<1-2*rand(S),1-2*rand(S),1-2*rand(S)>;         
      #local C                      = C+1;
    #end  //  #while (C < 11)
          
    #local CustomPuntosFrontal[GRSV_Alto][0]        = <0,0.75,0>;        
            
    object     	{ 
      GRSV_GorraRecuerdoSapoVenenoso( 0.086, 0.1286, 0.085,
        CustomPuntosFrontal,  
        CustomPuntosPosterior, 
        GRSV_DefectoArregloPuntosNormalesAla,
        GRSV_MaterialPrincipal, GRSV_MaterialFrontal,
        GRSV_MaterialLateral, GRSV_MaterialPosterior)
      translate         <-1.88,+1.55,-4.70>    
    }


Características del objeto

Mis dibujos están en unidades mL o L (Lisa) según el contexto.  1 L equivale a 0.055063 pulgadas definido como 0.001 para POVRAY.  La gorra se encuentra entre las siguientes coordenadas:
    Mínimo          = < -66, -15,-130 >*L
    Máximo          = <  66,  88,  95 >*L

La gorra aparenta descansar sobre el origen de coordenadas. El frente mira hacia Z-, con gravedad en sentido Y-. El ala y algunos laterales sobresalen hacia Y-.

Se generan las siguientes declaraciones que no deberían modificarse.  Para su correcta modificación ver los ejemplos y consulte la sección Modificadores.

GRSV_HomogeneoArregloPuntosNormalesFrontal
array [9][2] de vectores tridimensionales. Posible parámetro (valor por defecto) PuntosNormalesFrontal para el frente del sombrero. Su objetivo es servir de base para modificaciones.
GRSV_DefectoArregloPuntosNormalesFrontal
array [9][2] de vectores tridimensionales. Posible parámetro PuntosNormalesFrontal para el frente del sombrero. Su objetivo es servir de base para modificaciones.
GRSV_HomogenoeArregloPuntosNormalesPosterior
array [9][2] de vectores tridimensionales. Posible parámetro (valor por defecto) PuntosNormalesPosterior para la zona posterior del sombrero. Su objetivo es servir de base para modificaciones.
GRSV_DefectoArregloPuntosNormalesPosterior
array [9][2] de vectores tridimensionales. Posible parámetro PuntosNormalesFrontal para la zona posterior del sombrero. Su objetivo es servir de base para modificaciones.
GRSV_HomogeneoArregloPuntosNormalesAla
array [6][2] de vectores tridimensionales. Posible parámetro (valor por defecto) PuntosNormalesAla para el ala del sombrero. Su objetivo es servir de base para modificaciones.
GRSV_DefectoArregloPuntosNormalesAla
array [6][2] de vectores tridimensionales. Posible parámetro PuntosNormalesAla para el ala del sombrero. Su objetivo es servir de base para modificaciones.
GRSV_DefectoMaterialPrincipal
Material de costuras, botón superior y ala.
GRSV_DefectoMaterialFrontal
Material para el frente de la gorra.
GRSV_DefectoMaterialLateral
Material para el lateral de la gorra.
GRSV_DefectoMaterialPosterior
Material para la zona posterior de la gorra.


Modificadores

La siguiente es la lista de los modificadores permitidos en la unidad. Cuando se indique, será el valor establecido por defecto.

    #declare GRSV_Subdivisions			= 2;
Permite cambiar el grado de subdivisión en la interpolación curva. El total de smooth_triangle generados crece exponencialmente.

    #declare GRSV_MaterialPrincipal		=
		material  { GRSV_DefectoMaterialPrincipal		}
Material principal del hervidor.

    #declare GRSV_MaterialPrincipal		=
		material  { GRSV_DefectoMaterialPrincipal		}
Material de costuras, botón superior ya ala.

    #declare GRSV_MaterialFrontal		=
		material  { GRSV_DefectoMaterialFrontal			}
Material para el frente de la gorra.

    #declare GRSV_MaterialLateral		=
		material  { GRSV_DefectoMaterialLateral			}	
Material para el lateral de la gorra.

    #declare GRSV_MaterialPosterior		=
		material  { GRSV_DefectoMaterialPosterior		}	
Material para la zona posterior de la gorra.

El siguiente ejemplo ilustra el uso de los modificadores:

    #if ( version >= 3.7 )
      #version 3.7;
    #end
    global_settings { assumed_gamma 1.0 }  

    #include "stdinc.inc"
    #include "stdcam.inc" 
    #include "textures.inc"
    #include "GRSV.inc"
                
    #declare GRSV_Subdivisions          = 0;      
    #declare GRSV_MaterialPrincipal     =
      material { texture { PinkAlabaster } }
    #declare GRSV_MaterialFrontal     	=
      material { texture { Gold_Texture } }
    #declare GRSV_MaterialLateral  	=
      material { M_Green_Glass }
    #declare GRSV_MaterialPosterior     =
      material { texture { Yellow_Pine } }
                
    object     	{ 
      GRSV_Gorra()
      rotate                90*y 
      translate         <-1.88,+1.55,-4.70>    
    }


Notas y Advertencias

Se pierde la forma anatómica del original, y la banda para ajustar diferentes medidas de cabeza.

Es dudosa la utilidad de aumentar la subdivisión más de 3 veces, debido a la aparición de sombras y líneas extrañas.

La matria del ala de sombrero se debe generar separada de la gorra, para facilitar su diseño con las herramientas de la unidad GRSV_STS.inc, puesto que no es apropiada para unir curvas con cambio abrupto de normales. Internamente el programa superpone una costura de unión.


Sugerencias de modificación