Литература и учебные пособия для написания ray tracer

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

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

11 ответов


"Ray Tracing from the Ground Up" Кевина Сафферна для начала работы.

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

и если вы действительно в ней,Рэй Отслеживание Новости архивы-хорошее чтение. Кроме того, многие энтузиасты трассировки лучей болтаются в ompf2.com форум.


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

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

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 включает в себя загружаемый исходный код Ray tracer.

MiniLight минимальный глобальный рендерер освещения.

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

благодаря другим плакаты для указателей


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

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

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

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

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


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

Я портировал его на Дельфы, возможно, однажды я снова перейду на C#.


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


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

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

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

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


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

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

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


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

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


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

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

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


вы видели povray? ИМХО это очень хорошая отправная точка для понимания трассировки лучей (http://www.povray.org/)


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

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