Animación 3D: MultiEyeS

La siguiente animación la hice en una asignatura que tuve hace 2 años (técnicas gráficas). Hace poco, haciendo limpia y copias de seguridad lo encontré y lo grabé por demanda de algunos de mis compañeros de clase.



La animación está hecha con OpenGL sobre C#. Para poder usar OpenGL, incluí en el proyecto TAO Framework que es un conjunto de clases para .NET y Mono con OpenGL, OpenAL, FreeGlut entre otros.

Cómo se hizo

La aplicación está escrita en C# usando la plataforma .NET.
La idea es muy sencilla.
  • Un rectángulo donde se proyecta la imagen de fondo. En el método timer, lo que se hace es ir variando poco a poco el color del material. 
  • Una esfera, donde se le ha incorporado la imagen del ojo modificada para que no quede la imagen desplazada. En el método timer se va incrementando el ángulo de rotación.
  • El conjunto de esferas más pequeñas (20) que salen del ojo. Las esferas se van insertando una encima de la otra (trasladando la coordenada de las íes en una distancia igual a la mitad del diámetro). 
Por ejemplo, el bucle donde se van apilando las esferas es el siguiente:
______________________________________________________________________
                      for (int i = 0; i < 20; i++)
                      {
                          Gl.glTranslated(0, 0.65, 0);
                          Gl.glRotated(-yrot, 1, 1, 1);
                          //DrawSphere2();
                          Gl.glCallList(3);
                      }
      
      ______________________________________________________________________

      Donde el método Gl.glCallList(3) es la lista de presentación 3 englobada en el método DrawSphere2. 
      ______________________________________________________________________

              private void ListDrawSphere2()
              {
                  Gl.glNewList(3, Gl.GL_COMPILE);
                  DrawSphere2();
                  Gl.glEndList();
              }
      
              private void DrawSphere2()
              {
                  Gl.glPushMatrix();
      
                  Gl.glEnable(Gl.GL_TEXTURE_2D);
                  Gl.glTexEnvi(Gl.GL_TEXTURE_2D
                  Gl.GL_TEXTURE_ENV_MODE, (int)Gl.GL_DECAL);
                  //Se usa la textura que el usuario selecciona en el combo
                  Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[7]);
                  Gl.glFrontFace(Gl.GL_CCW);
      
                  Glu.GLUquadric p = Glu.gluNewQuadric();
                  Glu.gluQuadricDrawStyle(p, Glu.GLU_FILL);
                  Glu.gluQuadricNormals(p, Glu.GLU_SMOOTH);
                  Glu.gluQuadricTexture(p, Gl.GL_TRUE);
                  Glu.gluSphere(p, 1.5, 30, 30); 
                  Gl.glPopMatrix();
              }
      

      ______________________________________________________________________


      Música y Foto
      • La música es un fragmento de la canción de Tool (Intension) del álbum Vicarious (2006). Aunque se ha modificado ligeramente con el Audacity.
      • La foto del ojo se ha modificado con el Photoshop (aquella época en la que lo usaba), aunque con el GIMP se puede hacer también y queda igual.

      0 comentarios:

      Publicar un comentario en la entrada