Компьютерная графика: трассировка лучей и программирование 3D-рендеров - PullRequest
7 голосов
/ 15 января 2009

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

Несколько проектов, которые я нашел в некоторых университетах, великолепны, хотя в основном меня интересуют две вещи:

  • Raytracing:
    • Я хочу написать Raytracer в течение следующих двух лет. Что мне нужно знать? Я еще не фантастический программист (Java, C и Prolog - мои основные языки на сегодняшний день), но я медленно учусь каждый день. Кроме того, мое знание математики не так уж велико, поэтому любые указатели на книги для чтения или советы по написанию такой программы были бы фантастическими. Я склонен поднимать эти вещи довольно быстро, поэтому не стесняйтесь подбрасывать ссылки на меня.
  • Программирование 3D визуализированных моделей
    • Я посмотрел несколько проектов, в которых студенты разрабатывали модели и использовали их в играх. Я сделал пару 2D-игр с растровыми изображениями, но никогда не работал с 3D-моделями. Что мне нужно узнать в отношении программирования этих моделей? Если это помогало, у меня было нормально с 3D Studio Max и Cinema4D (хотя, кажется, что каждый курс использует Maya), но я не касался этого в течение четырех лет.

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

Смежные вопросы

Ответы [ 7 ]

8 голосов
/ 20 февраля 2009

Я могу порекомендовать pbrt , это книга и физический рендер, используемый для обучения выпускников информатики. Описание используемой математики красиво и понятно, и поскольку оно написано в «грамотном программировании», вы также можете увидеть соответствующий код (на C ++).

4 голосов
/ 15 января 2009

Книга "Компьютерная графика: принципы и практика" (известная в кругах компьютерной графики как "Foley-VanDam") является базовой для большинства курсов компьютерной графики и охватывает тему реализации трассировщик лучей в деталях. Это довольно устарело, но все равно лучше, аааик, и основные принципы остаются прежними.

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

Кроме того, вам, вероятно, понадобятся основы OpenGL или DirectX. Проще начать работать с 3D API, затем изучать основную математику, а не наоборот (на мой взгляд), но возможны оба варианта. Просто поищите OpenGL в SO, и вы также найдете несколько хороших ссылок.

2 голосов
/ 15 января 2009

Конкурс программирования ICFP 2000 попросил участников создать трассировщик лучей за три дня. У них есть хорошая спецификация для простого трассировщика лучей, и вы можете получить код для выигрышных записей и некоторых других записей. Были записи на большом количестве разных языков программирования. Это может быть хорошим способом для вас начать.

1 голос
/ 15 января 2009

Самый краткий полезный ответ, который я могу дать, состоит в том, что большинство важных алгоритмов можно найти в Рендеринге в реальном времени Томаса Акенина-Меллера, Эрика Хейнса и Нати Хоффмана и библиография в конце имеет ссылки на необходимую математику. На их веб-сайте также есть рекомендуемый список для чтения.

Самая полезная книга по математике, которую я читал на эту тему, - «1007 * Математика для программирования 3D-игр и компьютерной графики» Эрика Ленгеля . Математика, которая вам нужна больше всего - это геометрия (очевидно) и линейная алгебра (для работы со всеми матрицами).

0 голосов
/ 26 июня 2013

Чек http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-1-writing-a-simple-raytracer/

Это очень хорошее место для изучения трассировки лучей и рендеринга в целом.

0 голосов
/ 15 января 2009

Математическое введение в эти темы см.

http://graphics.idav.ucdavis.edu/education/GraphicsNotes/homepage.html

0 голосов
/ 15 января 2009

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

У моего профессора есть сайт, расположенный здесь , и там есть его лекционные заметки и наборы проблем, которые вы можете просмотреть.

Наш последний проект действительно был raytracer, но как только вы знаете математику, стоящую за ним, кодирование (неэффективное) становится тривиальным.

...