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

Donación de Rafael Angel Campos Vargas, en el año 2018, 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 "BDCP.inc" (BlurayDvdCdPlayer) dibuja un reproductor de video para discos en formato Bluray. Puede cambiar la hora, abrir y cerrar el compartimento para discos, y otras modificaciones menores. 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
  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 los archivos "BDCP.inc" y "BDCP_AU1.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 "BDCP.pov" puede ejecutarse sin ningún proceso de instalación.  Unicamente debería estar ubicado en el mismo folder que "BDCP.inc" y "BDCP_AU1.inc".


Instrucciones básicas

Reproductor Blu-ray
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 "BDCP.inc"
    
    object      {
      BDCP_Bluray( 1.0, 10, 20, 1 )
      translate         <-1.925,+1.575,-4.700>    
    }

La macro principal tiene solo cuatro parámetros.

    #macro BDCP_Bluray( FraccionAbrir, Hora, Minuto, ModoIndicador )
FraccionAbrir :
Fracción para cerrar "0.0" o abrir "1.0" el compartimento de discos.
Hora :
Hora del reloj.
Minuto :
Minutos del reloj.
ModoIndicador :
"1" lucesita verde para encendido, "2" lucesita roja de apagado, "0" inactivo.

La siguiente macro permite mucha mayor flexibilidad.

    #macro BDCP_BlurayDvdCdPlayer( FraccionAbrir, Hora, Minuto, ModoIndicador, 
            	FrenteBluray, FraccionFrontal, FraccionInferior,
            	AltoBluray, PatasBluray, ProfundidadBluray,
            	AltoBandeja, RadioCD, GruesoCD, 
            	GruesoPlastico, BocaUSB, GruesoUSB,
            	ArregloMateriales, ArregloTexturasLED )
FraccionAbrir :
Fracción para cerrar "0.0" o abrir "1.0" el compartimento de discos.
Hora :
Hora del reloj.
Minuto :
Minutos del reloj.
ModoIndicador :
"1" lucesita verde para encendido, "2" lucesita roja de apagado, "0" inactivo.
FrenteBluray :
Frente del aparato de video. Valor por defecto 308*L.
FraccionFrontal :
Fracción que divide la textura frontal de la zona posterior. Valor por defecto 0.15.
FraccionInferior :
Fracción que ubica la cuña decorativa frontal. Valor por defecto 0.40.
AltoBluray :
Alto del aparato de video. Valor por defecto 43.6*L.
PatasBluray :
Alto total de las patillas soporte. Valor por defecto 4.5*L.
ProfundidadBluray :
Profundidad en Z del aparato de video. Valor por defecto 154.4*L.
CurvaturaBluray :
Radio curvatura para extremos en la decoración exterior. Valor por defecto 2*L.
AltoBandeja :
Alto de la bandeja soporte para CD. Valor por defecto 13*L.
RadioCD :
Radio de un disco CD. Valor por defecto 42.7*L.
GruesoCD :
Grueso de un disco CD. Valor por defecto 0.5*L.
GruesoPlastico :
Grueso de plástico para soportes interiores. Valor por defecto 1*L.
BocaUSB :
Frente de la boquilla de un conector USB. Valor por defecto 8.2*L.
GruesoUSB :
Alto de la boquilla de un conector USB. Valor por defecto 2.7*L.
ArregloMateriales :
Lista de los materiales principales array [6] = { MaterialPrincipal, MaterialFrontal, MaterialBandeja, MaterialFrenteBandeja, MaterialLetras, MaterialMetalico }. Valor por defecto similar a BDCP_DefaultArregloMateriales.
MaterialPrincipal Material del cuerpo principal
MaterialFrontal Material para el frente
MaterialBandeja Material para el interior de la bandeja
MaterialFrenteBandeja Material para el frente de la bandeja
MaterialLetras Material para letras y logo en el frente de la bandeja
MaterialMetalico Material para elementos metálicos
ArregloTexturasLED :
Lista de las texturas para el reloj array [4] = { TexturaLabelLED, TexturaTransparente, TexturaLED, TexturaFondoLED }. Valor por defecto similar a BDCP_DefaultArregloTexturasLED.
TexturaLabelLED Textura del cuerpo soporte del reloj
TexturaTransparente Textura de capa protectora del LED
TexturaLED Textura de dígitos
TexturaFondoLED Textura de fondo del reloj

Para facilitar el dibujo de objetos emparentados, agregamos una macro que permite dibujar la bandeja para discos en forma separada.

    #macro BDCP_BandejaInterior( FrenteBandeja, AltoBandeja,
                ProfundidadDelantera, RadioCD, RadioMini,
                RadioAire, GruesoPlastico, CurvaturaPlastico, GruesoCD,
                MaterialBandeja, MaterialFrenteBandeja,
                MaterialLetras )    
FrenteBandeja :
Frente exterior de la bandeja. Valor por defecto 94.5*L.
AltoBandeja :
Alto de la bandeja soporte para CD. Valor por defecto 13*L.
ProfundidadDelantera :
Profundidad Z hasta el centro para ubicar el CD. Valor por defecto 51*L.
RadioCD :
Radio de un disco CD. Valor por defecto 42.7*L.
RadioMini :
Radio de un mini disco CD. Valor por defecto 42.7*L.
RadioAire :
Radio libre o vacío al interior del soporte para discos. Valor por defecto 20*L.
GruesoPlastico :
Grueso de plástico para soportes interiores. Valor por defecto 1*L.
GruesoCD :
Grueso de un disco CD. Valor por defecto 0.5*L.
CurvaturaPlastico :
Radio de curvatura para decorar extremos y bordes. Valor por defecto 1*L.
MaterialBandeja :
Material para el interior de la bandeja. Valor por defecto BDCP_DefaultMaterialBandeja.
MaterialFrenteBandeja :
Material para el frente de la bandeja. Valor por defecto BDCP_DefaultMaterialFrenteBandeja.
MaterialLetras :
Material para letras y logo. Valor por defecto BDCP_DefaultMaterialLetras.

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 "BDCP.inc"
    
    object      {
      BDCP_BlurayDvdCdPlayer( 1.0, 10, 20, 1,
        0.308, 0.15, 0.4, 0.0436, 0.0045, 0.1544,  
        0.013, 0.0427, 0.0005, 0.001, 0.0082, 0.0027,
        BDCP_DefaultArregloMateriales, BDCP_DefaultArregloTexturasLED )
      translate         <-1.925,+1.575,-4.700>    
    }

En el siguiente macro dibujamos solo la bandeja.

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

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "BDCP.inc"
    
    object      {
      BDCP_BandejaInterior( 0.0945, 0.013, 0.051, 0.0427, 0.028, 0.020,
                0.001, 0.001, 0.0005, BDCP_DefaultMaterialBandeja,
                BDCP_DefaultMaterialFrenteBandeja, BDCP_DefaultMaterialLetras )
      translate         <-1.925,+1.575,-4.700>    
    }


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 silla desplegada tiene las siguientes dimensiones:
    Mínimo      	= < -154,    0,  -80 >*L
    Máximo      	= < +154,  +44,  +80 >*L

El objeto se encuentra por completo en el hemisferio Y+, y las patas se encuentran directamente sobre el plano XZ.

La macro genera internamente la variable BDCP_InferiorCD, que da la posición virtual inferior de un hipotético CD, en su centro matemático.

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

BDCP_DefaultMaterialPrincipal
Material principal del aparato.
BDCP_DefaultMaterialFrontal
Material del frente del reproductor de discos de video.
BDCP_DefaultMaterialMetalico
Textura para elementos metálicos.
BDCP_DefaultMaterialBandeja
Material para la bandeja.
BDCP_DefaultMaterialFrenteBandeja
Material para el frente de la bandeja.
BDCP_DefaultMaterialLetras
Material para letras y logo.
BDCP_DefaultTexturaSoporteLED
Textura para el soporte de LED.
BDCP_DefaultTexturaTransparente
Textura transparente sobre LED.
BDCP_DefaultTexturaLED
Textura para LED del reloj.
BDCP_DefaultTexturaFondoLED
Textura para el fondo de los LED.
BDCP_DefaultArregloMateriales
Arreglo que sirve como parámetro para los materiales por defecto en las macros.
BDCP_DefaultArregloTexturasLED
Arreglo que sirve como parametro para las texturas por defecto utilizados por el reloj.

En el siguiente ejemplo ubicamos un false "CD", en el aparato Bluray.

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

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "BDCP.inc"
    
    union                   {
      object                {
        BDCP_Bluray( 1.0, 10, 20, 1 )
      }
      cylinder              {  
        0, 0.0005*y, 0.0427
        pigment { onion frequency 200 
          pigment_map { [ 0.0 color White ] [ 1.0 color Red ] } }
        translate BDCP_InferiorCD
      }  
      translate         <-1.925,+1.575,-4.700>    
    }


Modificadores

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

    #declare BDCP_StringLogo			= "Pov-ray"
Mensaje para el logo de marca.

    #declare BDCP_StringCompatible		= "CGS-BLOB"
Mensaje para compatibilidad.

    #declare BDCP_Logo				= object { Povray_Logo } 
Para cambiar el logo de marca si se desea.

    #declare BDCP_MaterialPrincipal		=	 
		material { BDCP_DefaultMaterialPrincipal	}
Material principal del aparato.

    #declare BDCP_MaterialFrontal		=	 
		material { BDCP_DefaultMaterialFrontal		}
Material del frente del reproductor de discos de video.

    #declare BDCP_MaterialMetalico		=	 
		material { BDCP_DefaultMaterialMetalico		}
Material para elementos metálicos.

    #declare BDCP_MaterialBandeja		=	 
		material { BDCP_DefaultMaterialBandeja		}
Material para la bandeja.

    #declare BDCP_MaterialFrenteBandeja		=	 
		material { BDCP_DefaultMaterialFrenteBandeja	}
Material para el frente de la bandeja.

    #declare BDCP_MaterialLetras		=	 
		material { BDCP_DefaultMaterialLetras		}
Material para letras y logo.

    #declare BDCP_TexturaLabelLED		=	 
		material { BDCP_DefaultTexturaLabelLED		}
Textura para el soporte de LED.

    #declare BDCP_TexturaTransparente		=	 
		material { BDCP_DefaultTexturaTransparente	}
Textura transparente sobre LED.

    #declare BDCP_TexturaLED			=	 
		material { BDCP_DefaultTexturaLED		}
Textura para LED del reloj.

    #declare BDCP_TexturaFondoLED		=	 
		material { BDCP_DefaultTexturaFondoLED		}
Textura para el fondo de los LED.

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 "BDCP.inc"
    #include "textures.inc" 
    
    #declare BDCP_StringLogo            = "Blu-ray" 
    #declare BDCP_StringCompatible      = "HDMI/USB"
    #declare BDCP_Logo                  = 
      union { torus { 0.5, 0.05 } torus { 0.25, 0.05 } rotate 90*x }  
    #declare BDCP_MaterialPrincipal                  = 
            material { texture { PinkAlabaster } } 
    #declare BDCP_MaterialFrontal                    =
            material { texture { Sandalwood }} 
    #declare BDCP_MaterialMetalico                   = material { M_Glass }
    #declare BDCP_MaterialBandeja                    = material { M_Ruby_Glass }
    #declare BDCP_MaterialFrenteBandeja              = material { M_Yellow_Glass }
    #declare BDCP_MaterialLetras                     = material { texture { Cork } }
    #declare BDCP_TexturaLabelLED                    = texture  { pigment { Red } }
    #declare BDCP_TexturaTransparente                = texture  { pigment { Clear } }
    #declare BDCP_TexturaLED                         = texture  { pigment { White } }
    #declare BDCP_TexturaFondoLED                    = texture  { pigment { Black } }
    
    object                              {
      BDCP_Bluray( 1.0, 10, 20, 1 )                                                         
      translate         <-1.925,+1.575,-4.700>    
    }


Notas y Advertencias

Utilice la variable BDCP_InferiorCD para ubicar el CD dentro de la bandeja. Considere que la ubica al centro inferior de un disco paralelo al plano XZ.

Se ha observado que no conviene modificar los valores de los siguientes parámetros: GruesoPlastico, BocaUSB y GruesoUSB. Considere aumentar o disminuir el tamano de variables generales si requiere modificarlos.

Si dibuja la bandeja en forma separada, la posición base del CD en su capa inferior es el origen.


Sugerencias de modificación


Sobre LibreN3D

Algo hace falta En la actualidad dedico casi unas dos horas todos los días, para desarrollar mis proyectos de animación con el compilador FreePascal para FreeDOS.  Mi propuesta original fue filmar 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 dentro de algunos años 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...(10/abril/2018), 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.
Logo FreeDOS...
Descarga sistema operativo FreeDOS
Logo FreePascal...
Descarga compilador FreePascal