3D теория до графических API? [закрыто]

19

Я инженер-программист, и я надеюсь перенести свою карьеру в сторону разработки игр. Я сейчас читаю книгу по 2D с использованием C ++ / DirectX. Когда я вхожу в 3D, я знаю, что хочу сделать это правильно. Например, я ничего не знаю о трехмерном пространстве. Так что, если я изучу только API, я мог бы знать это, но я не знаю, смогу ли я разработать интерактивный мини-3D мир с ним. Я бы не назвал себя успешным, просто имея вращающийся ящик с новейшими шейдерами и т. Д. Мои математические навыки до триггера / линейной алгебры и до сих пор в колледже. Я знаю больше математики, чтобы прийти. Должен ли я читать книги по теории 3D, прежде чем переходить на OpenGL / Direct3D, или какие-либо другие предложения? Я просто знаю, что API не собирается учить разработке 3D-игр и не хочу потеряться потом. Я очень ориентирован на книги, так что хорошо, если есть предложения там тоже. Мысли приветствуются. Благодарность!

Фил
источник

Ответы:

11

После того, как я вас покинул на другом сайте, я чувствую себя обязанным ответить :)

Я сам не профессионал, но я проходил курс по компьютерной графике в моем университете, и это действительно помогло мне понять API, которые я в итоге использовал.

Среди вещей, которые я нашел особенно полезными:

  1. Матрицы преобразования и то, как они работают, не только для преобразования объекта, но также для просмотра преобразования, проекции перспективы и т. Д. Это, пожалуй, самая важная вещь.
  2. Вся теория о молнии и тени особенно полезна, когда вы начинаете копаться в шейдерах.
  3. Выборка текстуры, mipmapping.
  4. Теория цвета и методы смешивания также полезны.

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

дуб
источник
Благодарю. Вы слышали об этой книге? Я слышал, что она учит 3D-теории, но фокусируется также и на 3D-растеризации. Я думаю, это все еще может помочь понять, что происходит. amazon.com/…
Фил
1
Растеризация @Phil важна, но я не знаю, начну ли я с книги под названием «Подсказки» и обращаюсь к «продвинутым» разработчикам 3D ... звучит как что-то, что можно прочитать позже.
Дуб
Прямо сейчас я читаю том 1, а это том 2. Думаю, это сливает вас, но я никогда не смотрел на это. Я знаю, что он говорит "продвинутый", но большинство говорит, что это не так. Я буду держать это в списке :)
Фил
1
Трассировка лучей - еще одна интересная тема, но она слишком медленная для игр в реальном времени
Брайан Денни
@Byran +1 за упоминание этого. Это используется для предварительного расчета освещения.
Джонатан Фишофф
9

Начните делать. Таким образом вы обнаружите то, чего не знаете.

Тогда возьмите хорошую книгу по 3D математике.

Я рекомендую «3D Math Primer для графики и разработки игр»

Флетчер Данн и Ян Парберри. (Wordware)

Очень ясно, по сути, актуально - с кодом C ++ и все.

Очень важно знать об основах точек, векторов, преобразований и т. Д.

Но это не значит, что вы должны изучить все это перед погружением. :)

jacmoe
источник
3

В колледже я изучал введение в компьютерную графику (1-2 года назад), и сайт курса все еще работает. Многие слайды PowerPoint все еще работают, что может показаться вам полезным и полезным. Темы охватывают как 2D, так и 3D теорию графики.

Брайан Денни
источник
2

Я в той же лодке, что и вы (хотя я технически переучиваю вещи, которые я смутно знал в колледже), и мое решение состояло в том, чтобы проверить несколько книг, упомянутых в вопросе " Хорошие книги по теории математики 3D " здесь. Если вы ученик книги, это может быть хорошим способом для вас. Особенно, если в вашем колледже нет хороших курсов по трехмерной графике (у меня их нет).

Бен Зейглер
источник
2

Хммм, когда я должен был сделать свою первую 3D-игру около 15 лет назад (потому что это была моя работа, которая помогает усердно работать), у меня не было никаких знаний в 3D, кроме математики в средней школе. Если вы любите разгадывать головоломки и читать их, вы можете объяснить большинство из них самостоятельно и с помощью Интернета (comp.graphics.algorithms faq). Я читал библии openGL и http://www.amazon.com/Computer-Graphics-Principles-Practice-2nd/dp/0201848406(предупреждение oldskool), поскольку они дают действительную справочную информацию. Если вы сделаете это таким образом, вы можете начать с неправильного пути, но в какой-то момент вы либо придумаете, либо натолкнетесь на лучшее решение. Большинство проблем с 3D можно решить, если вы хорошо владеете 2d. Добавьте к общим тригам, пифагорам, матрицам и обратным / транспонированным (для проекции), точечным и перекрестным произведениям и для чего вы используете их, кватернионы (не нужно понимать их, просто знаете, как их использовать - вы можете обойтись без, но они в настоящее время являются частью основного словарного запаса), и вы можете решить большинство проблем, с которыми вы сталкиваетесь. По ходу дела вы столкнетесь с лучшими путями, но эти немногие могут решить что угодно. Лучший способ - это поставить себя за пределы своей досягаемости и заставить себя туда добраться. Проблемы, с которыми вы сталкиваетесь, - это то, что вам нужно выучить, и, эй, вы

Кая
источник
2

В блоге Wolfire Games недавно была действительно отличная серия учебников по линейной алгебре для разработчиков игр.

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

Боб Сомерс
источник
1

Я предлагаю вам записаться в Game Institute , в частности курсы по программированию графики с DirectX 9.

Вам не нужно принимать участие в интерактивных занятиях, если вы просто хотите учиться самостоятельно.

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

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

октонионов
источник
1

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

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

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

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

Вот некоторые вещи, которые останутся такими же.

Прямо сейчас я нахожу материал по геометрической алгебре для информатики очень интересным и думаю, что было бы лучше начать с подхода, который они размечают для компьютерной графики. http://www.amazon.com/Geometric-Algebra-Computer-Science-Object-Oriented/dp/0123694655

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

Джонатан Фишофф
источник
1

Не ходите за книгами по компьютерной графике. Начните с линейной алгебры - она ​​закладывает основу для всего, что вам нужно. MIT имеет хороший видеокурс: http://ocw.mit.edu/courses/matmatics/18-06-linear-algebra-spring-2005/

Оттуда должно быть просто взять любой вводный текст по компьютерной графике. У UoWashington есть курс онлайн (хотя видео нет): http://www.cs.washington.edu/education/courses/457/06au/lectures/

Если вы нетерпеливы, вы можете начать с курса графики без линейной алгебры, но поверьте мне, когда я скажу, что он вернется, чтобы укусить вас :)

Рейчел Блум
источник
1

Если вы хотите понять, как работает традиционный конвейер рендеринга программного обеспечения (и ситуация не сильно изменилась даже с введением программируемых аппаратных конвейеров), я бы порекомендовал одну книгу Джима Блинна «Путешествие вниз по графическому конвейеру».

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

JasonD
источник
1

Я был ТП для курса графики в моем университете в течение нескольких лет. Я установил учебную программу и рассмотрел такие вещи, как растеризация и затенение программного обеспечения, Java3D, OpenGL и т. Д. Через некоторое время, в свое собственное время, я решил написать трассировщик лучей для своего собственного назидания. Это был невероятный опыт - с буфером кадров и подпрограммой putpixel (x, y, color), в 500 строках у меня был код для генерации изображения со сферами, треугольниками, затенением на пиксель, тенями и т. Д. Если бы мне пришлось переделайте практические занятия, я бы настоял, чтобы студенты сделали трассировщик лучей. Это простой способ увлечься деталями алгоритма сканирования линий при создании растеризатора или почувствовать, что вы работаете через черный ящик с использованием 3D API.

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

Crowley9
источник