language agnostic - Literatura y tutoriales para escribir un ray tracer
language-agnostic graphics (11)
Como se dijo anteriormente, el mejor libro que puede obtener es el Renderizado basado en Física de Matt Pharr (visite www.pbrt.org). Explica una gran cantidad de algoritmos en gran detalle, incluyendo cosas avanzadas como el mapeo de fotones. Además, incluye un rastreador de rayos completamente funcional, para que pueda echarle un vistazo. También cubre los conceptos básicos de matemáticas, por lo que si no quieres comprar muchos libros, definitivamente recomiendo echar un vistazo a este.
Es mucho mejor que los libros clásicos sobre este tema, ya que tienden a explicar solo la teoría, no tanto cómo implementarla realmente. Para los conceptos básicos, cualquier libro de matemáticas lo hará, o podría probar "Detección de colisiones en tiempo real", que también explica muchas rutinas de intersección (que necesitará en el trazado de rayos).
Si realmente quieres comenzar con lo básico, debes probar "Gráficos por computadora: Principios y práctica", está fechado (algunas partes son realmente absurdas ahora), pero explica muy bien los conceptos básicos. Si quieres un libro más reciente, prueba "Fundamentos de gráficos por computadora", que contiene lo mismo, pero no tan detallado (debería ser lo suficientemente bueno como para comenzar).
Por último, pero no menos importante, la página de wikipedia sobre Raytracing en realidad es bastante buena y debería darte algunos puntos de partida. Eche un vistazo a la sección de enlaces externos.
Estoy interesado en encontrar recomendaciones sobre libros sobre cómo escribir un raytracer, implementaciones simples y claras del trazado de rayos que se pueden ver en la web, y recursos en línea sobre trazado de rayos introductorios.
Idealmente, el enfoque sería incremental y de estilo tutorial, y explicaría tanto las técnicas de programación como las matemáticas subyacentes, comenzando desde lo básico.
Este usuario tiene algunos tutoriales interesantes sobre trazado de rayos, estos tutoriales usan C # Creo:
http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=3589667
Estoy seguro de que habrá algunos mejores tutoriales, pero esto podría ser de interés.
¿Has visto povray? En mi humilde opinión, es un muy buen punto de partida para entender el trazado de rayos ( http://www.povray.org/ )
La clase de renderización avanzada que tomé en la universidad tenía los proyectos mejor diseñados que jamás haya visto. Con las ayudas del proyecto y las notas de la conferencia, todo lo que necesita está en el sitio web.
La idea básica es que es muy fácil crear errores muy sutiles en un raytracer, especialmente cuando se trata de cosas como la refracción. Si solo estás creando al azar un montón de esferas en el espacio, es bastante difícil verificar la corrección o diagnosticar errores.
Entonces, hay un analizador que es fácil de incorporar a tu propio código, y un montón de archivos de escena de diagnóstico. El primer archivo es el más fácil de poner en funcionamiento (ojo en el origen, mirando hacia abajo un eje, una esfera), y si puede renderizarlos todos correctamente, se garantiza que tendrá un raytracer que funcione correctamente.
Además, el analizador usa el formato RIB , que es el formato de archivo de escena estándar de Pixar, y se puede exportar desde prácticamente cualquier modelador.
También explora el trazado de rayos distribuido y el trazado de trayectorias, que pueden proporcionarle algunas imágenes realmente agradables .
Si está buscando un solo buen libro que lo traiga de la nada al código de trabajo que puede producir imágenes, comencé con Una introducción a Ray Tracing de Andrew Glassner. No puedo acceder a Amazon ahora mismo, pero aquí está el enlace relevante .
Casualmente, este es en realidad el dominio del libro y el problema que me introdujo en el diseño orientado a objetos. Chico, eso fue hace un tiempo ...
A partir de ahí, recomendaría pasar al libro de Pete Shirley, como parece implicar la bibliografía de Wikipedia . En realidad, una sugerencia aún mejor es tomar su clase de rastreo de rayos. ¡Funcionó para mí!
Hace unos años, alguien me desafió a hacer un puerto Delphi de un pequeño trazador de rayos (menos de 200 líneas de código C).
Lo porté a Delphi , quizás un día vuelva a portar a C #.
El mejor que he encontrado es: http://www.devmaster.net/articles/raytracing_series/part1.php. Este tutorial tiende a moverse un poco rápido, pero cubre muchos aspectos del raytracing.
De acuerdo, no he encontrado ninguna respuesta perfecta, que paso desde lo básico; Sin embargo, he encontrado muchos trazadores de rayos simples y consejos para voluminosos libros de texto y referencias académicas.
No he probado estos trazadores de rayos, pero se ven interesantes y simples.
http://www.barakcohen.co.il/2008/10/ray-tracing-simple-java-open-source.html
http://blogs.msdn.com/lukeh/archive/2007/04/03/a-ray-tracer-inc-c-3-0.aspx
http://www.ffconsultancy.com/languages/ray_tracer/
De la revista de estudiantes de ACM Cross Roads
http://www.acm.org/crossroads/xrds3-4/raytracing.html
Este en C ++ es al menos corto; la simplicidad se perdió por la velocidad
http://ompf.org/ray/sphereflake/
Una tesis doctoral sobre algunos aspectos del trazado de rayos está aquí
Una serie de artículos sobre DevMaster está aquí
El foro de OMPF debe leer la serie de publicaciones que se pueden encontrar aquí
Parece que el libro "Una introducción al trazado de rayos" es lo que necesito ;-), y la página principal de los autores está aquí para más programación relacionada con los gráficos.
El trazado de rayos desde cero incluye también un código fuente de rastreador de rayos descargable.
MiniLight es un renderizador de iluminación global mínimo.
SmallPT es un renderizador de iluminación global, en 99 líneas de C ++, con una variante que usa float de precisión simple en la CPU y GPU en OpenCL.
Gracias a los otros carteles para los indicadores
"Ray Tracing from the Ground Up" de Kevin Suffern para comenzar.
"Representación física basada" por Matt Pharr y Greg Humphreys para una visión más avanzada cuando se sienta cómodo con lo básico.
Y si realmente te gusta, los archivos de Ray Tracing News son una buena lectura. Además, muchos entusiastas del trazado de rayos se juntan en el foro de ompf2.com .
Esta es una herramienta que puede ser útil para comprender y visualizar las ideas generales de Raytracing: Raytracing Simulator
Es un simulador que construí para el curso de Gráficos que enseño. En lugar de representar una escena 3D en una imagen 2D, convierte una escena 2D en una imagen 1D, lo que permite la visualización de todo el algoritmo de una vez, lo que le permite modificar los parámetros de la escena en tiempo real.
Recomiendo leer los tutoriales en https://www.scratchapixel.com/; se toman el tiempo de explicar la física y las matemáticas que hay detrás de las cosas, pero también proporcionan excelentes ejemplos de código.
Usé muchos de sus tutoriales al implementar mi propio rastreador de rayos que escribí en Java: https://github.com/bradforj287/brads-java-raytracer