Buscar en bzk Gaming

Cargando...
sábado 21 de agosto de 2010
Tutorial Dibujar un modelo 3D en XNA (Tutorial en bzkGaming)

Hola pues el inicio tan esperado de la creación de un videojuego está por comenzar para este tutorial necesitaremos nuestro modelo en 3D para la gente que no tenga forma de hacer un modelo en 3D Max, Blender, etc. Subo este que yo hice en blender en FBX, pues no es gran cosa no tiene textura solo color, pero es lo que necesitamos para empezar.


Los modelos que usa XNA pueden estar en formato .X o .FBX lo cuales podemos crearlo en algunos programas de diseño, este modelo lo hice en blender.

Ahora que ya han descargado el archivo deben añadirlo al proyecto para esto crearemos una carpeta en Content

Botón derecho en “Content”->Agregar->Nueva Carpeta  y la nombraremos Modelos. Le damos clic derecho y le damos Agregar->Elemento existente… y elegimos el archivo tanquecito.fbx que descargamos antes.

Ahora abriremos el archivo Game1.cs y agregaremos una variable de nivel de clase o atributo llamado MiModelo de la Clase Model. La clase modelo pose métodos para poder manipular los modelos 3D que tengamos en nuestro juego. También necesitamos su posición en el espacio. Justo después de

01 public class Game1 : Microsoft.Xna.Framework.Game
02     {
03         GraphicsDeviceManager graphics;
04         SpriteBatch spriteBatch;
05         Model MiModelo;//nuevas lineas de codigo
06   Vector3 mPos = new Vector3(0.0f);

Ahora necesitamos decirle donde esta el archivo que debe cargar, para esto vamos la funcion LoaContent y agregamos el siguiente codigo

01 MiModelo  = Content.Load<Model>("Modelos\\tanquecito");


Necesitamos algunas variables, que como se vio en el Tutorial Sistemas de Coordenadas y cámaras usaremos para mostrar nuestro modelo en pantalla, pondremos una cámara en el espacio, utilizaremos un vector3 para indicar la posición de esta, aunque aún no necesitamos que se mueva. También indicaremos la relación de aspecto que tendrá, para esto incluiremos el siguiente código como variables de clase en Game1 como hemos venido haciendo.

01 //camara en el espacion
02         Vector3 camaraPos = new Vector3(500.0f, 100.0f, 1000.0f);
03         //indica la relacion de aspecto
04         float relacionAspecto;



Pero para obtener la relación de aspecto necesitaremos incluir una llamada al dispositivo de gráficos la cual permita indicar la relación. Y para que no se esté ejecutando en cada ciclo, incluiremos está en el método LoadContent() de la siguiente forma

01 //esto genera un numero decimal equivalente a 
02             //dividir el ancho de la pantalla
03             //entre el largo
04            relacionAspecto= graphics.GraphicsDevice.Viewport.AspectRatio;


Ya casi acabamos solo nos falta incluir el método para dibujar nuestro modelo.

En esta ocasión usaremos la clase BasicEffect que contiene los métodos que necesitamos para dibujar un modelo 3D en el escenario.

Es nuestro método Draw() justo después de los comentarios // TODO: Add your drawing code here. Anexaremos estas líneas de código.



01 //toma como origen la estructura 3D que viene por default
02             Matrix[] origen = new Matrix[MiModelo.Bones.Count];
03             MiModelo.CopyAbsoluteBoneTransformsTo(origen);
04             //los objetos 3D en ocasiones como esta estan formados por mallas
05             //lo que se indica es que por cada malla que tiene este
06             // se dibujara en la pantalla
07             foreach (ModelMesh malla in MiModelo.Meshes)
08             {
09                 //indica todos lo efectos basicos que pueden aplicarse a las mallas
10                 foreach (BasicEffect efecto in malla.Effects)
11                 {
12                     //luz basica
13                     efecto.EnableDefaultLighting();
14                     //MUY IMPORTANTE
15                     //indica que se dibujara ne la pantalla
16                     // en esta ocasion sera el objeto tan como esta
17                     efecto.World = origen[malla.ParentBone.Index];
18                     //crea una vista para la camara
19                     //en ella se define la poscion, el objetivo y el vector arriba
20                     efecto.View = Matrix.CreateLookAt(camaraPos , Vector3.Zero, Vector3.Up);
21                     //indica la proyeccion
22                     //esta presente la relacion de aspecto
23                     //y los limites cera y lejos para dibujar en la pantalla
24                     efecto.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(90.0f),
25                         relacionAspecto, 100.0f, 10000.0f);
26                 }
27                 //Dibuja la malla en la pantalla
28                 malla.Draw();
29             }

Pues eso es todo amigos. En el siguiente tutorial, indicare la forma de darle unas cuantas animaciones básicas a nuestro modelo en 3D.

Pueden checar el video en YouTube o descargar el archivo de proyecto que les anexo. No se olviden de comentar y de suscribirse si les gusto este tutorial. Nos vemos



Descarga el Proyecto pass: xna

2 comentarios:

Carlos Andres dijo...

hice mi propio modelo 3D en blender, pero al guardarlo me lo pone en .blend , como hago para guardarlo en .x o .fbx??
por favor que alguen me responda lo antes posible^^

gracias.....

Anónimo dijo...

K bn sta. Gracias

Entradas populares en este Mes

Entradas populares Siempre

Comparte este Blog

Subscribe via email

Enter your email address:

Delivered by FeedBurner

Seguidores

FeedBurner FeedCount