Literatura y tutoriales para escribir un trazador de rayos


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 el trazado de rayos introductorio.

Idealmente, el enfoque sería incremental y tutorial en estilo, y explicar tanto las técnicas de programación y matemáticas underyling, a partir de lo básico.

Author: Peter Mortensen, 2008-12-12

11 answers

"Ray Tracing from the Ground Up" por Kevin Suffern para getting started.

"Physically Based Rendering" de Matt Pharr y Greg Humphreys para una versión más avanzada cuando te sientas cómodo con lo básico.

Y si realmente te metes en ello, los archivos de Ray Tracing News son una buena lectura. Además, muchos entusiastas del trazado de rayos pasan el rato en el ompf2.com forum.

 26
Author: Boojum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-03 18:40:58

Ok, yo no he encontrado ninguna respuesta perfecta, que paso a través de los conceptos básicos; he encontrado un montón de trazadores de rayos simples, y punteros a libros de texto voluminosos y referencias académicas sin embargo.

No he probado estos trazadores de rayos, pero se ven interesantes y simple.

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-in-c-3-0.aspx

Http://www.ffconsultancy.com/languages/ray_tracer /

De la revista estudiantil ACM Cross Roads

Http://www.acm.org/crossroads/xrds3-4/raytracing.html

Este en C++ es al menos corto; la simplicidad se perdió para 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 es aquí

El foro de la OMPF debe leer una serie de publicaciones que se pueden encontrar aquí

Suena como el libro "Una introducción al trazado de rayos" es lo que necesito ;-), y la página de inicio de los autores es aquí para más programación relacionada con gráficos.

Trazado de rayos desde the ground up incluye también el código fuente descargable de ray tracer.

MiniLight es un renderizador de iluminación global mínima.

SmallPT es un renderizador de iluminación global, en 99 líneas de C++, con una variante usando single precision float en CPU y GPU en OpenCL.

Gracias a los otros carteles por los punteros

 16
Author: grrussel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-14 07:10:27

La clase de renderizado avanzado que tomé en la universidad tenía los mejores proyectos diseñados que he 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 hacer errores muy sutiles en un raytracer, especialmente cuando te metes en cosas como la refracción. Si estás creando aleatoriamente 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 en su propio código, y un montón de archivos de escena de diagnóstico. El primer archivo es el más fácil de trabajar (ojo en el origen, mirando hacia abajo un eje, una sola esfera), y si puedes renderizarlos todos correctamente, tienes más o menos garantizado tener un raytracer que funcione correctamente.

Además, el analizador utiliza el formato RIB, que es el formato de archivo de escena estándar de Pixar, y se puede exportar desde casi cualquier modelador.

También explora distribuido raytracing y tracing path, que pueden darte unas imágenes realmente bonitas.

 5
Author: tfinniga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-16 16:47:23

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 algún día lo re-portaré a C#.

 3
Author: Ian Boyd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-16 18:14:35

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 de aspectos de raytracing.

 3
Author: a_m0d,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-14 02:38:36

Como se dijo anteriormente, el mejor libro que puede obtener es el renderizado basado físicamente por Matt Pharr (echa un vistazo www.pbrt.org). Explica muchos algoritmos con gran detalle, incluyendo cosas avanzadas como el mapeo de fotones. Además, incluye un trazador de rayos totalmente funcional, para que pueda echarle un vistazo. También cubre los conceptos básicos de matemáticas, así que si no quieres comprar muchos libros, definitivamente recomendaría 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 lo básico, cualquier libro de matemáticas lo hará, o podría probar "Detección de colisión en tiempo real", que también explica muchas rutinas de intersección (que necesitará en el trazado de rayos).

Si realmente quieres empezar por lo básico, deberías probar "Computer Graphics: Principles and Practice", está anticuado (algunas partes son realmente absurdas ahora), pero explica lo básico bastante bien. Si quieres un libro más reciente, prueba "Fundamentos de Gráficos por computadora", que contiene lo mismo, solo que no tan detallado (debería ser lo suficientemente bueno como para que comiences).

Por último, pero no menos importante, la página de wikipedia sobre Raytracing es bastante buena y debería darte algunos puntos de partida. Echa un vistazo a la sección de enlaces externos.

 2
Author: Anteru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-12 10:31:44

Si estás buscando un solo buen libro que te traiga de la nada a código de trabajo que pueda producir imágenes, empecé con Andrew Glassner Una Introducción al Trazado de Rayos. No puedo llegar a Amazon en este momento, pero aquí está el enlace relevante.

Coincidentemente, este es en realidad el dominio del libro y del problema que me introdujo al diseño orientado a objetos. Eso fue hace tiempo....

A partir de ahí, recomendaría pasar a Pete Shirley libro, como la bibliografía de Wikipedia parece implicar. En realidad, una sugerencia aún mejor es tomar su clase de trazado de rayos. ¡Funcionó para mí!

 2
Author: Bob Cross,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-16 16:59:56

Yo altamente recomiendo leer los tutoriales en https://www.scratchapixel.com / se toman el tiempo para explicar la física y las matemáticas detrás de las cosas, pero también proporcionan excelentes ejemplos de código!

Usé muchos de sus tutoriales al implementar mi propio trazador de rayos que escribí en Java: https://github.com/bradforj287/brads-java-raytracer

 2
Author: bradforj287,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-09 17:47:51

Este usuario tiene algunos tutoriales interesantes sobre trazado de rayos, estos tutoriales utilizan C# Creo:

Http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=3589667

Estoy seguro de que habrá algunos tutoriales mejores, pero esto podría ser de interés.

 1
Author: BobbyShaftoe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-12 07:50:46

¿Has visto a povray? En mi humilde opinión es un muy buen punto de partida para entender el trazado de rayos (http://www.povray.org/)

 0
Author: pglowack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-12 09:22:59

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 imparto. En lugar de representar una escena 3D en una imagen 2D, representa una escena 2D en una imagen 1D, lo que permite la visualización de todo el algoritmo a la vez, lo que le permite modificar los parámetros de la escena en tiempo real.

 0
Author: aaecheve,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-30 15:51:00