Primera escena 3D basica con GLScene [OpenGL & Delphi]

Buenas noches a todosOpen-mouthed smile!, espero y hayan tenido unos buenos festejos! Hot smileen estas epocas. Para esta entrada crearemos nuestra primera escena 3D con GLScene, pero para esto es recomendable que hayas leido este post y este(este en especial), para tener GLScene instalado en nuestro Delphi.

GlScene nos facilita mucho al momento de trabajar con OpenGL, una serie de componentes faciles de usar, y a la vez un poco complicado al momento de profundizarseNerd smile!.

Escena basica 3D

Para crear nuestra escena basica 3D, pues necesitamos un lugar donde plazmar nuestros dibujos! y una camara para verlos!, asi estaremos trabajando. Para iniciar agregaremos un GLScene que esta en nuestra pestaña GLScene

1

Al aver agregado nuestro GLScene( que es el que nos maneja todo), crearemos un visor que es el que esta enseguida un GLSceneViewer, simplemente lo seleccionamos y lo arrastramos igual a nuestro form. Este visor lo aliniamos al cliente en la propiedad Align

Y ahora nos faltaria una camara para completar nuestra escena, damos doble click al componente glscene que agregamos y nos aparecera lo siguiente:

2

Este sera nuestro editor de GLscene, aqui podremos agregar las camaras que queramos y los objetos de escena que desiemos. Para comenzar agregaremos una camara, dando clic derecho a Cameras y Add Camera, y para agregar objetos a nuestra escena pues lo haremos en Scene objects dando clic derecho ahi mismo y en add object.

Agregaremos lo siguiente en nuestro editor:

3

Hemos agregado una camara(GLCamera), y en nuestros objetos de escena una luz(GLLightSource),un dummycube y un cubo( en basic geometry). El dummyCube en realidad no es un objeto que veremos al ejecutar nuestro programa, solo sirve como punto de referencia al momento de trabajar con GLScene, el cubo es hijo del dummyCube, esto lo hacemos o arrastrando el Cubo al dummyCube o dando clic derecho al dummyCube y agregando el objeto.

Por ejemplo si el dummyCube lo movemos 10 en Y, todos sus hijos se moveran junto con el, es el objetivo del dummyCube en este caso.

Teniendo todos esos objetos creados ahora tenemos que hacer algunas configuraciones al glscene, primero, en nuestro visor, que camara se vera alli?, entonces damos clic al visor que alinieamos al cliente y en sus propiedades buscamos “Camera”( no se preocupen si se ve raro nuestro form al darle clic al visor)

A nuestra GLCamera1 le modificaremos las siguentes propiedades:

  • TargetObject –> GLDummyCube1
  • Position ->X=4,Y=4,Z=4

Al GLLightSource1 la posicion se la ponemos en (5,5,4), y al GLSceneViewer1, expandimos la propiedad buffer, y en background ponemos el color que queramos

4

Al momento debemos de tener algo como esto!, lo podemos correr y veremos lo mismo, una escena basica 3D.

Creando un poco de animacion

Bueno, ahora lo que haremos, es crear una animacion, para eso necesitamos agregar un cadenciador, que es el que nos dara en su evento, poder crear una animacion, el cadenciador es el GLCadencer y es el cuarto de la misma pestaña de GLScene

Al GLCadencer en la propiedad Scene le asignamos el GLScene1 que tenemos para que este relacionado a nuestra escena, y podremos correrlo y tendremos el cubo girando sobre su propio eje

Lo agregamos a nuestro form y le damos doble clic para asi crear un evento,  y escribir lo siguiente:

GLCube1.TurnAngle:=newTime*45;

TurnAngle, es una propiedad que tienen todos los objetos 3D, que seria el angulo respecto al eje Y por asi decirlo, newTime es una variable que nos proporciona el evento del cadenciador, y la multiplicamos por 45 para darle un poco mas de velocidad.

Al GLCadencer en la propiedad Scene le asignamos el GLScene1 que tenemos para que este relacionado a nuestra escena, y podremos correrlo y tendremos el cubo girando sobre su propio eje

Esto llevamos hasta el momento

Moviendonos alrededor del cubo

Pues para meterle un poco mas de chiste a esta escena, utilizaremos el mouse para movernos alrededor del cubo, esto es realmente sencillo y lo haremos en el evento onMouseMove del GLSceneViewer

Primero declararemos 2 variables enteras “xi” y “yi” globales y en el evento del GLSceneViewer escribimos lo siguiente:

5

Lo que estamos haciendo aqui, es de que si alguna tecla especial (Shift) esta precionada, nos moveremos alrededor del objetivo que esta asignado nuestra camara, osea si precionamos algun clic, o shift izquierdo o control, etc se movera segun se moueva el mouse porque X y Y son las cordenadas de la posicion del mouse y yi  y  xi las usamos para guardar las anteriores y hacer una resta para asi obtener ese efecto.

Hasta que esta entrada, espero y les sea de utilidad, si se fijan hemos hecho algo bueno y con solas pocas lineas de codigo, pueden experimentar usando las demas figuras geometricas basicas y hacerlas girar hasta el momento!.

Saludos y Code4FunOpen-mouthed smile

Anuncios

4 comentarios sobre “Primera escena 3D basica con GLScene [OpenGL & Delphi]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s