int object3d=0; // Código del objeto 3d


Esta variable predefinida es PUBLIC, lo que significa que cada proceso tendrá su propio valor en su variable object3d.

Normalmente, la mayoría de procesos se corresponden con un objeto 3D gráfico visualizado en pantalla que se situará en las coordenadas indicadas en las variables locales x, y, z. Se debe definir qué gráfico es el correspondiente a dicho proceso asignando un código de objeto a la variable local object3d.

Por defecto, esta variable valdrá 0 lo que implica que no se visualizará ningún objeto para este proceso.

Nota: Un mismo objeto 3D puede ser utilizado por muchos procesos a la vez en un programa.

Normalmente se utiliza una variable global para guardar este código de objeto 3D y después se asigna ésta a la variable object3d.

Ejemplo de utilización de object3d:


int objeto3d;

MAIN_PROGRAM_CDIV
PRIVATE
 int fichero;
 
BEGIN_PROGRAM 

    // Definimos el modo gráfico
    set_gfx(GFX_AUTODETECT_WINDOWED);
    
    set_depth(16);
    
    // Definimos la resolución
    set_mode(m640x480);
    
    // Subimos la altura de la camara
    x = 0;
    y = -100;
    z = -1000;
    
    write(0,0, 0,0, "Pulse 'up' o 'down' para avanzar o retroceder");
    write(0,0,10,0, "Pulse 'left' o 'right' gira la camara izquierda o derecha");
    
    fichero = load_fpg("../help.fpg");
    
    objeto3d = create_bitmap_3d( fichero, 10 );
    
    object3d = objeto3d;
    
    start_3d(0, fichero, 9, 10000, 10000, 0, this);
    
    m3d[0].distance.z = 500;
    
    // Nos movemos en el espacio 3D
    LOOP{
     if( key(_left) )
      angle3d.y += 5000;
      
     if( key(_right))
      angle3d.y -= 5000;
      
     if( key(_up))
      advance3d(5);
      
     if( key(_down))
      advance3d(-5);
      
     if( key(_enter))
      stop_3d(0);
     
     FRAME;
    }

END_PROGRAM

Si bien en el ejemplo anterior se podría haber prescindido de la variable global objecto3d y haber asignado directamente el código devuelto por la función create_bitmap_3d() a la variable object3d con la siguiente sentencia:

  object3d = create_bitmap_3d( fichero, 10 );

el código de objeto3d que devuelve esta función son simplemente números enteros a partir de 1.


Existen más variables locales relacionadas con el objeto3d de un proceso, las principales son las siguientes:

   object3d - Código del objeto 3D
  x, y, z - Coordenadas del objeto 3D     
  angle3d - Ángulo del objeto 3D
  size   - Tamaño del objeto 3D
  flags  - Transparencias y Fundidos
  region - Ventana de visualización

Ver: Datos locales