Matematicas para programar juegos 3D

EnZo

Buenas, acudo aquí para preguntar a los gurús desarrolladores de juegos.

¿Alguien podria decirme que conocimientos matematicos son necesarios para programar casi cualquier juego 3D?

CaNaRy_r00lz

yo creo que a parte de conocimientos matematicos, deberas tener conocimientos de fisica.. pero ni idea, eso si tienen k ser medios fijo

r2d2rigo

Vectores, matrices, angulos eulerianos... y si quieres 6 grados de libertad o tenerlo todo mas "clarito", cuaterniones.

R

algebra, analisi numerico, fisica (optica, cinematica, dinamica)

etc.

EnZo

Estoy usando las camaras, y para practicar me he propuesto hacer como una especie de visor de un objeto. Osea rotar la camara en vertical y horizontal para observar el objeto. Basicamente lo que tiene 3DSMAX en la vista perspectiva.

En horizontal me sale, es trigonometria basica.

radio = /es una constante/;
angulo = /el angulo lo controlo con el raton/;
radian = anguloMath.PI/180;
camera.x = radio
Math.sin(radian);
camera.z = radio*Math.cos(radian);

Esto funciona perfectamente. El problema me viene con el tercer eje, es decir cuando quiero que rote para vertical y horizontal. Pero matematicamente no se como hacerlo, alguien me puede guiar por donde van los tiros?
¿Que me tengo que estudiar/aprender?

SeiYa

Yo no puedo ayudarte en esto la verdad ...

Pero ¿podrías mandarme un MP o contestarme aquí? es que me gustaría meterme a probar cosas en 3d también o al menos intentarlo.

Me gustaría saber que lenguaje usas, algunos tutos que uses, librerías ... todo eso.

Grache.

r2d2rigo

Osea, controlas el Pitch y el Yaw bien, pero cuando te toca el Roll (como si "giraras la cabeza a un lado") te peta, no? Pues mucho me temo que vas a tener que utilizar cuaterniones... los angulos eulerianos se suelen quedar cortos para representar una rotacion en torno a 3 angulos. Asi que suerte, porque no son moco de pavo :P

javithelong

Explicate un poco mas exactamente con qué estas probando y tal. Las librerias de gráficos openGL y demás te dan todo hecho, no tienes que saber na de mates.

Mi asignatura de gráficos de informática, solo te hace falta tener visión espacial, y manejo de matrices y trigonometría, no hay más...

EnZo

Para Seiya que ha preguntado. La libreria 3D es para FLASH :O Si para Adobe Flash xD

Es un proyecto que todavia no tiene una version final de la API. Osea que estan terminandola de corregir, yo creo que esta al caer.
El creador es un español, Carlos Ulloa. Este crack estuvo colaborando en Game 40, ha trabajado para Sony. Trabajó en el desarrollo del famoso G-Police y hasta hace nada en HI-RES poca cosa...

Su proyecto se llama Papervision3D pero aunque no tiene version final de la API, se puede descargar del reposito e ir desarrollando con ella.

Pero para que veais el potencial que tiene mirad estos ejemplos (Flash Player 9):
www.carlosulloa.com
www.papervision3d.org
http://www.unitzeroone.com/papervision/paperPhong/Main.html
http://www.paperworld3d.com/demos/obstaclecourse/ObstacleCourse.html
http://www.unitzeroone.com/blog/papervision3d/papervision3d_demos_cellshadin.html
:O

Es absurdo querer compararlo con shockwave u opengl o direct3d, mas que nada porque estos tiran de hardware. Pero yo le veo mucho futuro, y mas con ActionScript3. La version para AS2 soporta bien 800 poligonos, y para AS3 3000

blog.papervision3d.org
wiki.papervision3d.org


Sobre mi problema.
Es cierto javithelong, he estado investigando y van por ahí los tiros. De hecho la libreria tiene una clase que trabaja con matrices http://svn1.cvsdude.com/osflash/papervision3d/as3/trunk/docs/org/papervision3d/core/Matrix3D.html
Todavia no se usarla. A ver si me pongo y resuelvo el problema. Si alguien sabe por donde van los tiros que me guie :D

javithelong

Tiene buena pinta, y si, yo también le veo futuro.

El tema, es que hay que ser supercuidadoso con el código, porque flash es poco eficiente, y si pones chotocientas cosas, se te ralentizará.

Sobre flash no tengo ni idea. Yo estoy haciendo en prácticas una librería gráfica en C parecida a lo que tienes. De momento puede pintar cosas en 3d con sus perspectivas y tal, ahora estoy codificando el relleno de polígonos, y tras ello, iluminación y sombras.

Y ya para terminar el proyecto, texturas, y a correr. Lógicamente aun estoy a años luz de esa API, pero bueno, poco a poco...

PD: Como mola saber cómo se hace toda esa movida al abrir el rinoceronte :P

Usuarios habituales