Oficial Earth's Special Forces Argentina
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.
Acerca de

Bienvenido al foro Oficial Earth's Special Forces Argentina

Bienvenido al foro Oficial Earth's Special Forces Argentina

Mejores posteadores
340 Mensajes - 18%
245 Mensajes - 13%
231 Mensajes - 12%
204 Mensajes - 11%
181 Mensajes - 10%
170 Mensajes - 9%
159 Mensajes - 9%
121 Mensajes - 6%
107 Mensajes - 6%
105 Mensajes - 6%

Ir abajo
nico_kpo
nico_kpo
Super Saiyajin
Super Saiyajin
Masculino
Cantidad de envíos : 245
Edad : 28
Localización : Arg-Tuc-Mi KSA
Sanciones : N/A
PJ preferido del ESF : Cell
Nik En el ESF : nico_kpo o SSJ4
Reputación : -5
Score : -13
Fecha de inscripción : 04/08/2008

Un tutorial mas basico de Milkshape Empty Un tutorial mas basico de Milkshape

Miér Ago 06, 2008 2:06 pm
Guia rapida para Dibujar y Mover un modelo 3D

Bienvenidos al primera guia de la serie programacion 3D. Es un pequeño abrevocas del extenso mundo de
programacion 3D espero sirva de guia. Es muy simple no tomara mas de unos minutos crear y compilar el codigo.
INTRODUCCION

A muchos lectores de esta pagina les interesa trabajar en 3D, pero hay un

gran inconveniente muchos de los tutoriales y guías en ingles disponibles se

basan en el manejo portando el código desde DirectX (MDX o C++ o incluso si se

tratara de OpenGL), es decir muestran como hacer triángulos, esto es completamente impractico en el

Mundo XNA. La razón es simple la idea detrás del XNA es el crear juegos de la

manera mas practica de la que dispongamos.

Crear triángulos tiene mucha valides si se quiere hacer un motor grafico 3D, pero si lo que se

quiere hacer es un juego se llegara a la frustración. Si bien este proceso es la base,

representa solo el 1% de todo el trabajo en un juego. Por este motivo no se

explicara como crear triángulos por que simplemente

no encaja con la filosofía de este sitio que es el crear juegos.

No esta demás dar algunas recomendaciones para antes de empezar la guía:



- La programación 3D es una de las mas complejas no solo por las matemáticas,

adicionando las habilidades de razonamiento necesarias para llevarla con éxito.



- Lo mejor seria tener habilidades de modelación 3D .

- Dominar el mundo 2D en XNA antes de continuar en 3D, o si no quedaran

perdidos o frustrados por no tener buenas bases.



Lo recomendable seria primero hacer un juego 2D

para familiarizarse con la programación en el Framework antes de saltar de

cabeza al 3D.

Cualquier juego en un futuro desarrollado partirá de modelos realizado en un

programa destinado a ese fin y en lo posible se minimizara la escritura de

vértices o caras y demás elementos del mundo 3D.

Recomiendo estos programas de edición y animación 3D:






- MilkShape 3D (Ingles)

Free (Exporta .X requiere Plug-ing)

- Blender(Ingles)

GNU (Exporta .X).

- MAYA Versión limitada de Estudio

(Español) (Exporta FBX)






ALGORITMO BÁSICO EN XNA

Esta es una breve guía mostrara como mostrar y mover un simple modelo 3D con

ayuda de XNA.

El algoritmo básico:



- Crear un modelo en algún programa de 3D que exporte en formato .X o

formato FBX.

- Importa modelos y las texturas a GSE.

- Declara variables del modelo

- Declarar la matrices.

- Iniciar Variables

- Cargar Modelo

- Actualizar

- Dibujar!





Para este tutorial prepare un pequeño modelo original Wink de un Pez

Mariposa que en adelante lo llamare el Pez.

Descarga el Código Guía

Modelo3D [GameProyects

Link]

Partiremos desde el segundo punto.

Agregar el Modelo

La única forma de agregar un modelo es en tiempo de diseño y con el

Content Pipeline no se pueden cargar modelos desde un archivo en tiempo de

ejecución, a menos se compilen en XNB lo cual no es una tarea fácil



[Runtime model loading].

Con

el puntero encima del icono del proyecto En el Explorador de soluciones, presionas el botón

izquierdo, busca agregar un elemento existente...:








Selecciona en tipos de archivo: Todos Los Archivos.
XNA Recursos y proyectos 2.0




Buscas las el modelo y agregas la texturas. Este es el modelo y textura en

el codigo.

En otras palabras se agrega el modelo como cualquier otro elemento además se

deben agregar las texturas, estas pueden estar en cualquier directorio del

proyecto igual el entorno las creara cargara sin problemas (pero deben estar

dentro del GSE). La única limitación

encontrada es que las dimisiones de las texturas son potencias en

potencia de 2 para no tener inconvenientes.



Declarar las Variables



- Crear juegos en 3D involucra el uso de muchas matrices y vectores 3D.

- Para cada modelo podemos tener una o mas matrices asociadas.

- Puedes leer matemática 3D



Vectors and Matrices en GameDev.



Sin entrar en mas demora este es el código básico:



//Definicion del Modelo


Model Pez;

//Posicion del Pez y Rotacion


Vector3 PosicionPez

= Vector3.Zero;


float RotacionPez =

0.0f;

//Velocidad del Pez


Vector3 VelocidadPez

= Vector3.Zero;




//Posicion de la camara que esta asociada

con una matriz de vista


Vector3 Camara =

new

Vector3(0.0f, 50.0f,

200.0f);


//Calculo de la relación de aspecto de la

camara
XNA Recursos y proyectos 2.0


float AspectoRatio =

640.0f / 480.0f;


//Matriz de Proyeccion


Matrix

MatrizProyeccion;


//MAtriz de vista


Matrix MatrizVista;



En cuanto a la matriz de proyección y de Vista podría ser lo mejor tenerlas

precalculadas para no tener bajones de rendimiento.

Iniciar las Variables

Ahora en el Método Inizicialice de nuestro juego

asignamos las variables, con unos breves comentarios para no entrar en detalles

en esta guía:



//Creamos una matriz de proyeccion


//Apertura 45 grados


//Relacion de aspecto 640/480


//Distancia minima 1


//distancia maxima 10000


MatrizProyeccion = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f),

AspectoRatio, 1.0f, 10000.0f);




//Creamos una matriz de vista


//Posicion de la camara, Vector de origen y apuntando hacia el eje Y


MatrizVista = Matrix.CreateLookAt(Camara,

Vector3.Zero,

Vector3.Up);




//Giramos un poco el modelo para que se

vea bien 90 grados sexagesimales


RotacionPez = MathHelper.ToRadians(90f);





Los comentarios son solo para guía no es necesario copiarlos.

Ahora cargamos el modelo en LoadGraphicsContent:

XNA Recursos y proyectos 2.0


Pez = content.Load<Model>("pez");





Dibujar

Dibujar es fácil sin escribir sombreadores, lo interesante a destacar es que

es bastante simple! en el método Draw del juego



// TODO: Add your drawing code here


//Dibujar el modelo


//Depende de la forma de elaborar el modelo


//este puede tener una o mas Mallas asociadas


//Hay que dibujar cada una


foreach (ModelMesh

mesh in Pez.Meshes)


{


//XNA esta orientado a Sombreadores


//No existe matrices asociadas a todo el entorno como DirectX


//Asi que cada malla se le debe asociar un sombreador




//Se usara el BasicEfect que es una coleccion de sombreadores


//emulan las características de DirecX 9


foreach (BasicEffect

effect in

mesh.Effects)

{

//Activar la luz por defecto


effect.EnableDefaultLighting();


//Calcular la matriz del mundo


effect.World = Matrix.CreateRotationZ(RotacionPez)

* mesh.ParentBone.Transform);

//Asignar la matriz de Vista


XNA Recursos y proyectos 2.0

effect.View = MatrizVista;


//Asignar la matriz de proyección


effect.Projection = MatrizProyeccion;


}


//Dibujar la Malla con los efectos


mesh.Draw();


}



Actualizar

Como vamos a mover el pez colocamos algo de código extra en el método

Update del juego después de las líneas que

actualizan las matrices del Modelo.

//Leer el teclado


KeyboardState

keyboardState = Keyboard.GetState();


if (keyboardState.IsKeyDown(Keys.Up))


{


VelocidadPez.Z = 1f;


}


if (keyboardState.IsKeyDown(Keys.Down))


{


VelocidadPez.Z = -1f;


}


if (keyboardState.IsKeyDown(Keys.Right))


{


VelocidadPez.X = 1f;


}


if (keyboardState.IsKeyDown(Keys.Left))


{


VelocidadPez.X = -1f;


}


if (keyboardState.IsKeyDown(Keys.Home))


XNA Recursos y proyectos 2.0

{


RotacionPez += MathHelper.ToRadians(1f);



}


if (keyboardState.IsKeyDown(Keys.End))


{


RotacionPez -= MathHelper.ToRadians(1f);


}



//Actualizar la velocidad del Pez


PosicionPez += VelocidadPez;


//Desacelerar el pez


VelocidadPez *= 0.91f;



Bien con eso termina esta mini-guía sobre Render en 3D usando XNA, futuros

tutoriales explicara mas detalles sobre programación 3D.

Presiona F5!



Ahora una foto de la versión de fichero que tiene unos plus muy simples por

favor no dejen de descargarlo





LO QUE FALTA



- Crear un objeto que automatice el trabajo.

- Trabajar con las cámaras.





QUIERO SABER MAS



- Videos en

http://msdn.microsoft.com/directx/xna/videos/ (ingles)

- Una guía en ingles de Michael Morton

XNA Recursos y proyectos 2.0
http://xna.animered.net Potenciado por Joomla! Generado: 8 March, 2008, 07:48
Content

Pipeline Mesh Rendering - XBOX 360 XNA Tutorial.(ingles)

- www.thehazymind.com (ingles) contiene

unos buenas líneas de código para trabajar en 3D en XNA

- Aplicando efectos HLSL a los modeles



Applying Custom Effects (ingles) en

xbox360homebrew.com

- www.riemers.net

(Ingles) Interesante conversión de MDX a XNA contiene muchos tutoriales sobre

triángulos, HLS y además. Con algunas algunas bases de la matemática matricial

necesaria para empezar en cualquier plataforma

- Como cargar modelos en tiempo de Ejecución en XNA mediante msbuilder



Runtime model loading.

- Tutorial en Español (Argentina)

http://my.opera.com/motorXna por

Angel Arcoraci

XNA Recursos y proyectos 2.0
Volver arriba
Permisos de este foro:
No puedes responder a temas en este foro.