Литература и учебные пособия по написанию трассировщика лучей - PullRequest
34 голосов
/ 12 декабря 2008

Мне интересно найти рекомендации по книгам по написанию raytracer, простым и понятным реализациям трассировки лучей, которые можно увидеть в Интернете, и онлайн-ресурсам по вводной трассировке лучей.

В идеале, подход должен быть инкрементным и учебным по стилю, и объяснять как методы программирования, так и математику, лежащую в основе, начиная с основ.

Ответы [ 11 ]

27 голосов
/ 12 декабря 2008

Кевин Сафферн: «Трассировка луча с нуля» за начало работы.

"Физически обоснованный рендеринг" Мэтта Фарра и Грега Хамфриса для более продвинутого подхода, когда вы освоитесь с основами.

И если вы действительно верите в это, архивы Ray Tracing News - это хорошее чтение. Также на форуме ompf2.com .

много энтузиастов по трассировке лучей.
16 голосов
/ 12 декабря 2008

Хорошо, я не нашел идеальных ответов сам, этот шаг от самых основ; Я нашел много простых трассировщиков лучей и указателей на объемные учебники и академические ссылки.

Я не пробовал эти трассировщики лучей, но они выглядят интересно и просто.

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/

Из студенческого журнала ACM Cross Roads

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

Этот в C ++ по крайней мере короткий; простота была потеряна для скорости

http://ompf.org/ray/sphereflake/

Докторская диссертация по некоторым аспектам трассировки лучей: здесь

Серия статей о DevMaster: здесь

Форум OMPF должен прочитать серию сообщений здесь

Звучит как книга "Введение в трассировку лучей" - это то, что мне нужно ;-), а домашняя страница авторов здесь для более графического программирования.

Трассировка лучей с земли up включает также загружаемый исходный код трассировщика лучей.

MiniLight - это минимальное средство визуализации глобального освещения.

SmallPT - это глобальный рендеринг освещения, в 99 строках C ++, с вариантом с использованием плавающей запятой одинарной точности на CPU и GPU в OpenCL.

Спасибо другим авторам за указатели

5 голосов
/ 16 декабря 2008

продвинутый класс рендеринга , который я взял в колледже, имел лучшие разработанные проекты, которые я когда-либо видел. С помощью проекта и лекций все, что вам нужно, это на веб-сайте.

Основная идея заключается в том, что очень легко создавать очень тонкие ошибки в raytracer, особенно когда вы сталкиваетесь с такими вещами, как рефракция. Если вы просто случайным образом создаете кучу сфер в пространстве, проверить правильность или диагностировать ошибки довольно сложно.

Итак, есть парсер, который легко встроить в ваш собственный код, и куча диагностических файлов сцен. Первый файл легче всего получить (глаз в начале координат, взгляд вниз на одну ось, одну сферу), и если вы сможете правильно отрисовать их все, у вас гарантированно будет хорошо работающий raytracer.

Кроме того, синтаксический анализатор использует формат RIB , который является стандартным форматом файлов сцены Pixar, и может быть экспортирован практически из любого разработчика моделей.

Он также исследует распределенную трассировку лучей и трассировку, которая может дать вам действительно хороших изображений .

3 голосов
/ 14 мая 2009

Лучшее, что я нашел, это: http://www.devmaster.net/articles/raytracing_series/part1.php Этот учебник имеет тенденцию двигаться немного быстро, но он охватывает много аспектов трассировки лучей.

3 голосов
/ 16 декабря 2008

Несколько лет назад кто-то попросил меня сделать Delphi-порт для крошечного трассировщика лучей (менее 200 строк кода C).

i портировал его на Delphi , возможно, однажды я перенесу его на C #.

2 голосов
/ 09 января 2017

I очень рекомендую прочитать учебные пособия по https://www.scratchapixel.com/, они не торопятся, чтобы объяснить физику и математику, а также предоставляют отличные примеры кода!

Я использовал многие из их руководств при реализации моего собственного трассировщика лучей, написанного на Java: https://github.com/bradforj287/brads-java-raytracer

2 голосов
/ 16 декабря 2008

Если вы ищете одну хорошую книгу, которая превращает вас из ничего в рабочий код, который может создавать изображения, я начал с Эндрю Гласснера Введение в трассировку лучей . Я не могу добраться до Амазонки прямо сейчас, но вот ссылка .

По совпадению, это на самом деле книга и проблемная область, которые познакомили меня с объектно-ориентированным дизайном. Мальчик, это было некоторое время назад ....

Оттуда я бы порекомендовал перейти к книге Пита Ширли, как, кажется, подразумевает библиография Википедии . На самом деле, еще лучшее предложение - взять урок по трассировке лучей. У меня это сработало!

2 голосов
/ 12 декабря 2008

Как уже говорилось выше, лучшая книга, которую вы можете получить, - «Физически обоснованный рендеринг» Мэтта Фарра (см. Www.pbrt.org). Объясняет множество алгоритмов в мельчайших деталях, включая такие сложные вещи, как фотонное картирование. Более того, он включает в себя полностью работающую трассировку лучей, так что вы можете на нее взглянуть. Он также охватывает основы математики, поэтому, если вы не хотите покупать много книг, я определенно рекомендую взглянуть на эту.

Это гораздо лучше, чем классические книги по этому предмету, поскольку они, как правило, объясняют только теорию, а не столько, как реально ее реализовать. В качестве основы подойдет любая математическая книга, или вы можете попробовать «Обнаружение столкновений в реальном времени», которая также объясняет множество процедур пересечения (которые вам понадобятся при трассировке лучей).

Если вы действительно хотите начать с основ, вы должны попробовать «Компьютерную графику: принципы и практика», она устарела (некоторые части на самом деле бессмыслица), но она довольно хорошо объясняет основы. Если вы хотите более свежую книгу, попробуйте «Основы компьютерной графики», которая содержит то же самое, но не настолько подробно (должно быть достаточно, чтобы вы начали).

И последнее, но не менее важное: страница в Википедии по Raytracing на самом деле довольно хороша и должна дать вам некоторые отправные точки. Взгляните на раздел внешних ссылок.

1 голос
/ 12 декабря 2008

У этого пользователя есть несколько интересных учебных пособий по трассировке лучей, эти учебные пособия используют C #. Я считаю:

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

Я уверен, что будут лучшие уроки, но это может быть интересно.

0 голосов
/ 20 марта 2012

Это инструмент, который может быть полезен для понимания и визуализации общих идей Raytracing: Raytracing Simulator

Это симулятор, который я построил для курса графики, который я преподаю. Вместо рендеринга трехмерной сцены в двухмерное изображение, она преобразует двухмерную сцену в одномерное изображение, что позволяет одновременно визуализировать весь алгоритм, позволяя изменять параметры сцены в реальном времени.

...