bidireccional programming-languages 3d raytracing graphics

programming-languages - path tracing bidireccional



Gráficos por computadora: Raytracing y programación Renders 3D (7)

Me he dado cuenta de que algunas de las principales universidades ofrecen cursos en los que los estudiantes reciben asignaturas relacionadas con gráficos por computadora para sus carreras de CS. Lamentablemente, esto es algo que no ofrece mi universidad y es algo que realmente me gustaría tener en algún momento en los próximos años.

Algunos de los proyectos que he encontrado en algunas universidades son geniales, aunque me interesan principalmente dos cosas:

  • Trazado de rayos:
    • Quiero escribir un Raytracer dentro de los próximos dos años. ¿Qué necesito saber? Todavía no soy un programador fantástico (Java, C y Prolog son mis idiomas principales a partir de hoy) pero aprendo poco a poco todos los días. Además, mi formación en matemáticas no es tan buena, por lo que cualquier sugerencia sobre libros para leer o consejos sobre cómo escribir un programa así sería fantástico. Tiendo a recoger estas cosas bastante rápido, así que siéntete libre de arrojar referencias sobre mí.
  • Programación de modelos renderizados en 3D
    • He visto un par de proyectos donde los estudiantes han desarrollado modelos y los han utilizado en juegos. He hecho un par de juegos 2D con imágenes ráster, pero nunca he trabajado con modelos 3D. ¿Qué necesitaría aprender con respecto a la programación de estos modelos? Si ayuda, solía estar bien con 3D Studio Max y Cinema4D (aunque cada curso parece usar Maya), pero no lo he visto en cuatro años.

Perdón por publicar preguntas tan vagas y, seamos honestas y estúpidas. Es algo que he querido hacer por un tiempo y algo que sería bueno como un gran proyecto para desarrollar en mi propio tiempo.

preguntas relacionadas


El concurso de programación ICFP 2000 pidió a los participantes que construyeran un rastreador de rayos en tres días. Tienen una buena especificación para un rastreador de rayos simple, y usted puede obtener el código para las entradas ganadoras y algunas otras entradas también. Hubo entradas en una gran cantidad de lenguajes de programación diferentes. Esta podría ser una buena forma de comenzar.


El libro "Gráficos por computadora: Principios y práctica" (conocido en los círculos gráficos por computadora como "Foley-VanDam") es básico para la mayoría de los cursos de gráficos por computadora, y cubre el tema de la implementación de un ray-tracer con mucho detalle. Está bastante anticuado, pero sigue siendo el mejor, afaik, y los principios básicos siguen siendo los mismos.

También secundaré la recomendación para las matemáticas de Eric Lengyel para programación de juegos en 3D y gráficos por computadora . No es tan minucioso, pero es una maravillosa revisión de los conceptos básicos de matemáticas que necesita para la programación en 3D, tiene resúmenes muy útiles al final de cada capítulo, y está escrito de una manera accesible, no demasiado aterradora.

Además, es probable que desee algunos conceptos básicos de OpenGL o DirectX. Es más fácil comenzar a trabajar con una API 3D, luego aprender las matemáticas subyacentes que lo contrario (en mi opinión), pero ambas opciones son posibles. Simplemente busque OpenGL en SO y también debería encontrar un par de buenas referencias.


La respuesta más breve que puedo dar es que la mayoría de los algoritmos importantes pueden encontrarse en Representación en tiempo real por Tomás Akenine-Möller, Eric Haines y Naty Hoffman, y la bibliografía al final tiene referencias a las matemáticas necesarias. Su sitio web tiene una lista de lectura recomendada también.

El libro de matemáticas más útil que he leído sobre el tema es Matemáticas para la programación de juegos en 3D y Gráficos por computadora de Eric Lengyel. Las matemáticas que más necesitas son geometría (obviamente) y álgebra lineal (para tratar con todas las matrices).



Tomé esa clase el año pasado, y creo que la clase fue maravillosa para obligar a los estudiantes a aprender las matemáticas detrás de los gráficos de computadora, no solo los comandos para hacer que una computadora haga lo que usted quiere.

Mi profesor tiene un sitio ubicado aquí y tiene sus notas de clase y conjuntos de problemas a los que puede echarle un vistazo.

Nuestro proyecto final fue realmente un raytracer, pero una vez que conoce las matemáticas detrás de él, la codificación (una ineficiente) es trivial.


Puedo recomendar pbrt , es un libro y un procesador físico que se utiliza para enseñar a graduados en informática. La descripción de las matemáticas utilizadas es clara y agradable, y dado que está escrita en la "programación alfabetizada", también puede ver el código apropiado (en C ++).