Teoría 3D antes de las API de gráficos? [cerrado]


19

Soy ingeniero de software y espero avanzar en mi carrera hacia el desarrollo de juegos. Estoy leyendo un libro ahora mismo en 2D usando C ++ / DirectX. Cuando entro en 3D sé que quiero hacerlo correctamente. Por ejemplo, no sé nada sobre el espacio 3d. Entonces, si aprendo solo una API, podría saberlo, pero no sé si puedo desarrollar un mini mundo 3d interactivo con él. No me llamaría a mí mismo exitoso simplemente teniendo una caja giratoria con los últimos sombreadores, etc. Mis habilidades matemáticas son hasta álgebra trigonométrica / lineal y aún en la universidad. Sé que hay más matemáticas por venir. ¿Debería estar leyendo libros de teoría 3D antes de comenzar con OpenGL / Direct3D, o alguna otra sugerencia? Solo sé que una API no enseñará el desarrollo de juegos en 3D y no quiero perderme después. Estoy muy orientado a los libros, así que está bien si hay sugerencias allí también. Los pensamientos son bienvenidos. ¡Gracias!

Respuestas:


11

Después de molestarte en el otro sitio, me siento obligado a responder :)

Yo tampoco soy profesional, pero tomé un curso de Gráficos 3D por computadora en mi universidad y realmente me ayudó a entender las API que terminé usando.

Entre las cosas que encontré especialmente útiles:

  1. Las matrices de transformación y cómo funcionan, no solo para las transformaciones de objetos, sino también para ver la transformación, la proyección en perspectiva, etc. Eso es probablemente lo más importante.
  2. Toda la teoría detrás de los rayos y las sombras, especialmente útil cuando comienzas a incursionar en los sombreadores.
  3. Muestreo de textura, mipmapping.
  4. La teoría del color y las técnicas de fusión también son útiles.

Y definitivamente creo que estos son temas que se pueden aprender simplemente leyendo un libro o dos sobre el tema, siempre y cuando tenga los conocimientos matemáticos.


Gracias. ¿Has oído hablar de este libro? Escuché que enseña la teoría 3D pero también se enfoca en la rasterización de software 3D. Supongo que aún puede ayudar a entender lo que está sucediendo. amazon.com/…
Phil

1
La rasterización de @Phil es importante, pero no sé si hubiera comenzado con un libro llamado "consejos" y dirigido a desarrolladores 3D "avanzados" ... parece algo para leer más adelante.
Roble

Estoy leyendo el volumen 1 en este momento y este es el volumen 2. Supongo que te fusiona pero nunca lo miré. Sé que dice "avanzado", pero la mayoría dice que no. Lo mantendré en la lista :)
Phil

1
El trazado de rayos también es otro tema interesante, pero es demasiado lento para los juegos en tiempo real
Bryan Denny el

@Byran +1 por mencionarlo. Sin embargo, se usa para calcular previamente la iluminación.
Jonathan Fischoff

9

Comience haciendo. De esa manera descubrirás lo que no sabes.

Luego, toma un buen libro sobre matemáticas en 3D.

Recomiendo '3D Math Primer para gráficos y desarrollo de juegos'

por Fletcher Dunn e Ian Parberry. (Wordware)

Muy claro, hasta el punto, relevante, con código C ++ y todo.

Es muy importante conocer los conceptos básicos de puntos, vectores, transformaciones, etc.

Pero eso no significa que debas estudiarlo todo antes de sumergirte. :)


3

Tomé una clase de Introducción a los gráficos por computadora en la universidad (hace 1 a 2 años) y el sitio web del curso aún está activo. Todavía hay muchas diapositivas de PowerPoint que puede encontrar útiles y útiles. Los temas cubren la teoría de gráficos 2D y 3D.


2

Estoy en un bote similar al tuyo (aunque técnicamente estoy volviendo a aprender cosas que conocía vagamente en la universidad), y mi solución ha sido ver varios de los libros mencionados en la pregunta " Good 3D Math Theory Books ". Si eres un aprendiz de libros, esa puede ser una buena manera de hacerlo. Especialmente si tu universidad no tiene un buen curso de gráficos en 3D (el mío no).


2

Hmmm, cuando tuve que hacer mi primer juego en 3D hace unos 15 años (tenía que ser como era mi trabajo, eso ayuda a perseverar) No tenía ningún conocimiento en 3D que no sea matemáticas de secundaria. Si le gusta resolver acertijos y leer, puede razonar la mayor parte usted mismo y con ayuda de Internet (comp.graphics.algorithms faq). Leí las biblias de openGL y http://www.amazon.com/Computer-Graphics-Principles-Practice-2nd/dp/0201848406(advertencia oldskool) ya que dan información de fondo válida. Si lo hace de esta manera, puede comenzar de la manera incorrecta, pero en algún momento soñará o se encontrará con una mejor solución. La mayoría de los problemas 3D se pueden resolver si su comprensión 2D es buena. Agregue al trigonométrico general, pitágoras, matrices e inversos / transposición (para proyección), producto de punto y cruz y para qué los usa, cuaterniones (no tiene que entenderlos, solo sepa cómo usarlos; puede prescindir de ellos pero hoy en día son parte del vocabulario básico) y puedes resolver la mayoría de los problemas que encuentres. A medida que avanza, se encontrará con mejores formas, pero esos pocos pueden resolver cualquier cosa. La mejor manera es establecer una meta fuera de su alcance y obligarse a llegar allí. Los problemas con los que te encuentras son los que necesitas aprender, y oye, tú '


2

El blog Wolfire Games ha tenido una serie realmente excelente de tutoriales sobre álgebra lineal para desarrolladores de juegos recientemente.

Realmente es importante comprender las matemáticas detrás de esto antes de comenzar a aprender una API. De lo contrario, el orden y el propósito de las llamadas a la API no tendrán mucho sentido para usted. Primero debes entender lo que están haciendo por ti en un nivel matemático.


1

Le sugiero que se inscriba en Game Institute , específicamente en la programación de gráficos con cursos DirectX 9.

No necesita participar en las clases interactivas si solo quiere aprender por su cuenta.

Por cierto, existe la opción de obtener también libros impresos por una cantidad adicional muy baja. Valen la pena.

Hice muchos de sus cursos hace unos años y los cursos, aunque un poco viejos son realmente buenos y no puedo recomendarlos lo suficiente, además Gary Simmons es un tipo muy agradable.


1

Por encima de todo, solo intenta hacer cosas. Primero y más importante, intervenga. De lo contrario, se convertirá en un experto en teoría pero no en práctica.

Si crees que te apasionan los gráficos, imagina que continuarás aprendiendo material nuevo la mayor parte de tu vida. No es que puedas aprender todo lo que necesitas antes de comenzar. Simplemente no funciona de esa manera.

A medida que aprenda más y más sobre las matemáticas de los gráficos en 3D, se dará cuenta de que no hay matemáticas de gráficos por computadora, solo hay matemáticas. Aprende a enseñarte las matemáticas por tu cuenta . Entonces podrá digerir nuevas técnicas tal como se presentan en la literatura.

A medida que las tecnologías gráficas evolucionen, tomaremos prestadas diferentes técnicas matemáticas. Lo que es popular hoy podría no serlo mañana.

Aquí hay algunas cosas que se mantendrán igual.

En este momento, el material de Álgebra geométrica para ciencias de la computación me parece muy interesante, y creo que sería mejor comenzar con el enfoque que diseñan para los gráficos por computadora. http://www.amazon.com/Geometric-Algebra-Computer-Science-Object-Oriented/dp/0123694655

El libro explica cosas como los cuaterniones de una manera mucho más simple y puede ser útil para usted dependiendo de sus antecedentes matemáticos e intereses.


1

No busques libros de "gráficos por computadora". Comience con álgebra lineal: sienta las bases para todo lo que necesita. El MIT tiene un buen video curso: http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2005/

A partir de ahí, debería ser sencillo recoger cualquier texto introductorio en gráficos de computadora. UoWashington tiene un curso en línea (sin video, sin embargo): http://www.cs.washington.edu/education/courses/457/06au/lectures/

Si eres impaciente puedes comenzar con el curso de gráficos sin álgebra lineal, pero créeme cuando digo que volverá a morderte :)


1

Si desea comprender cómo funciona una canalización de representación de software tradicional (y las cosas no han cambiado mucho incluso con la introducción de canalizaciones de hardware programables), un libro que definitivamente recomendaría sería Jim Blinn: A Trip Down The Graphics Pipeline.

A diferencia de algunas de las otras sugerencias, no es particularmente exhaustivo, pero es muy legible y creo que si recién está comenzando con 3D, es una buena introducción. Y está escrito por Jim Blinn, quien es uno de los padres fundadores de los gráficos por computadora, y por lo tanto está escrito desde la perspectiva de alguien que realmente inventó / descubrió estas técnicas.


1

Fui el TA para el curso de gráficos en mi universidad durante varios años. Establecí el programa de estudios y cubrí cosas como rasterizaciones y sombreado de software, Java3D, OpenGL, etc. Algún tiempo después de esto, en mi propio tiempo decidí escribir un rastreador de rayos para mi propia edificación. Esta fue una experiencia increíble: con un búfer de cuadros y una rutina de putpixel (x, y, color), en 500 líneas tenía código para generar una imagen con esferas, triángulos, sombras por píxel, sombras, etc. Si tuviera que hacerlo rehacer las prácticas para los cursos, insistiría en que los estudiantes hagan un trazado de rayos. Es muy fácil quedar atrapado en los detalles de un algoritmo de línea de exploración al construir un rasterizador, o sentir que está trabajando a través de un cuadro negro utilizando una API 3D.

Para un acceso rápido y sólido a un entorno limitado de gráficos, recomiendo escribir su propio rastreador de rayos. Obviamente, esto está muy lejos de lo que se usa comúnmente en la producción de gráficos 3D en tiempo real, pero es una forma realmente intuitiva y compacta de ver y aprender la teoría.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.