Теорія 3D перед графічними API? [зачинено]


19

Я інженер програмного забезпечення, і я сподіваюся рухати свою кар’єру на розвиток ігор. Я зараз читаю книгу на 2D за допомогою C ++ / DirectX. Коли я потрапляю в 3D, я знаю, що хочу зробити це правильно. Наприклад, я нічого не знаю про 3d-космос. Отже, якщо я вивчаю лише API, я можу його знати, але не знаю, чи зможу з ним розробити інтерактивний міні-3d світ. Я б не назвав себе успішним просто мати обертовий ящик з останніми шейдерами і т.д. Я знаю, що ще чекає математика. Чи повинен я читати книги з теорії 3D перед тим, як взяти на OpenGL / Direct3D, чи будь-які інші пропозиції? Я просто знаю, що API не збирається навчати розробці 3D-ігор і не хочу згодом її втрачати. Я дуже орієнтований на книгу, тому це добре, якщо є і пропозиції. Думки вітаються. Спасибі!

Відповіді:


11

Після відмови від вас на іншому сайті я відчуваю обов'язок відповісти :)

Я сам не професіонал, але я пройшов курс комп'ютерної графіки 3D у своєму університеті, і це дійсно допомогло мені зрозуміти API, які я в кінцевому підсумку використовував.

Серед речей, які мені здаються особливо корисними:

  1. Матриці перетворення та те, як вони працюють, не тільки для перетворення об'єктів, але й для перегляду перетворень, перспективного проектування тощо. Це, мабуть, найважливіше.
  2. Вся теорія, що стоїть за блискавкою і тінню, особливо корисна, коли ви починаєте забиватися в шейдери.
  3. Вибір текстур, картографування.
  4. Теорія кольорів і методи накладання також корисні.

І я напевно думаю, що це теми, які можна взяти з простого читання книги або двох на цю тему, доки ти маєш математичну основу.


Спасибі. Ви чули про цю книгу? Я чув, що це вчить 3d теорії, але також зосереджується на растерізації 3d програмного забезпечення. Я думаю, це все ще може допомогти зрозуміти, що відбувається. amazon.com/…
Phil

1
@Phil растеризація важлива, але я не знаю, якби я почав із книги під назвою "підказки" та звернення до "просунутих" 3D розробників ... звучить як щось прочитати пізніше.
Дуб

Я зараз читаю том 1, і це том 2. Я здогадуюсь, що він вас зливає, але я ніколи не дивився на нього. Я знаю, що він каже "просунутий", але більшість кажуть, що це не так. Я втримаю його у списку :)
Філ

1
Простеження Рея - це ще одна цікава тема, але вона занадто повільна для ігор в режимі реального часу
Брайан Денні

@Byran +1 за згадування про це. Він використовується, але попередньо розраховуючи освітлення.
Джонатан Фішофф

9

Почніть з виконання. Таким чином ви відкриєте те, чого не знаєте.

Тоді візьміть гарну книгу з 3D-математики.

Я рекомендую "3D Math Primer для графіки та ігор"

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

Дуже зрозуміло, до речі, відповідне - з кодом C ++ та всіма.

Дуже важливо знати основи точок, векторів, перетворень тощо.

Але це не означає, що ви повинні вивчити все це перед тим, як пірнати дюйма :)


3

Я взяв вступ до класу комп’ютерної графіки в коледжі (1-2 роки тому), і веб-сайт курсу все ще працює. Багато слайдів PowerPoint все ще готові, що може бути корисним та корисним. Теми охоплюють теорію 2D та 3D графіки.


2

Я перебуваю в подібному вашому човні (хоча я технічно переучую речі, які я смутно знав у коледжі), і моє рішення було перевірити декілька книг, згаданих вище у питанні " Гарні книги з теорії математики 3D " тут. Якщо ви навчаєтесь книгам, це може бути хорошим способом для вас. Особливо, якщо ваш коледж насправді не має хорошого курсу 3d графіки (у мене не було).


2

Гммм, коли мені довелося зробити свою першу 3D-гру близько 15 років тому (тому що це було моєю роботою, що допомагає наполегливо), я не мав нічого іншого, окрім математики середньої школи. Якщо у вас є прихильність до розгадування головоломок та читання, ви можете розмірковувати більшість із них самостійно та за допомогою Інтернету. Я читав біблії openGL та http://www.amazon.com/Computer-Graphics-Principles-Practice-2nd/dp/0201848406(попередження oldskool), оскільки вони надають дійсну довідкову інформацію. Якщо ви зробите це таким чином, ви можете почати неправильно, але в момент, коли ви будете або мріяти, або натрапляти на краще рішення. Більшість 3d-проблем можна вирішити, якщо добре зрозуміти 2d. Додайте до загальної тригери, піфагори, матриці та обертання / перенесення (для проекції), крапковий та перехресний продукт і те, для чого ви їх використовуєте, кватерніони (не треба їх розуміти, просто знайте, як ними користуватися - ви можете обійтися без них, але вони сьогодні є частиною базового словника), і ви можете вирішити більшість проблем, які ви стикаєтесь. Ідучи, ви натрапите на кращі шляхи, але ті, хто мало хто може вирішити що завгодно. Найкращий спосіб - поставити собі мету поза своїм розумінням і змусити себе туди потрапити. Проблеми, з якими ви стикаєтесь - це те, що вам потрібно навчитися, і ей, ви '


2

Блог Wolfire Games останнім часом отримав дійсно чудову серію навчальних посібників з лінійної алгебри для розробників ігор.

Дійсно важливо зрозуміти математику, що стоїть за ним, перш ніж набридати почати вивчати API. В іншому випадку порядок та мета викликів API не матимуть для вас особливого сенсу. Вам потрібно спочатку зрозуміти, що вони роблять для вас на математичному рівні.


1

Я пропоную вам записатись на Ігровий інститут , зокрема на графічне програмування на курси DirectX 9.

Вам не потрібно брати участь в інтерактивних заняттях, якщо ви просто хочете самостійно вчитися.

До речі, є можливість також отримати друковані книги за дуже низьку додаткову суму. Вони добре того варті.

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


1

Перш за все, просто спробуйте зробити речі. Перш за все, стрибайте. Інакше ви станете знавцем теорії, але не практикуєте.

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

Коли ви все більше і більше дізнаєтесь про математику 3D-графіки, то зрозумієте, що математики комп’ютерної графіки немає, є лише математика. Дізнайтеся, як самостійно навчити математику . Тоді ви зможете перетравити нові методики, як вони представлені в літературі.

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

Ось деякі речі, які будуть залишатися такими ж.

Зараз я вважаю матеріал з геометричної алгебри для інформатики дуже цікавим, і думаю, що, можливо, краще почати з підходу, який вони розміщують для комп'ютерної графіки. http://www.amazon.com/Geometric-Algebra-Computer-Science-Object-Oriented/dp/0123694655

Книга пояснює такі речі, як кватерніони набагато простішим способом, і може бути корисною для вас залежно від вашого математичного походження та інтересів.


1

Не переходьте на книги "комп'ютерної графіки". Почніть з лінійної алгебри - вона закладає фундамент для всього необхідного. MIT має хороший відео курс: http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2005/

Звідти слід підбирати будь-який вступний текст на комп’ютерній графіці. UoWashington має онлайн-курс (хоча відео немає): http://www.cs.washington.edu/education/courses/457/06au/lectures/

Якщо ви нетерплячі, ви можете почати курс графіки без лінійної алгебри, але повірте, коли я скажу, що він повернеться, щоб вкусити вас :)


1

Якщо ви хочете зрозуміти, як працює традиційний трубопровід рендерингу програмного забезпечення (і все настільки не змінилося навіть із впровадженням програмованих апаратних трубопроводів), я б однозначно порекомендував би книгу Джима Блінна: «Подорож вниз» Графічний конвеєр.

На відміну від деяких інших пропозицій, він не особливо вичерпний, але він дуже читабельний, і я думаю, якщо ви тільки починаєте працювати з 3D, це гарне вступ. І це написав Джим Блінн, який є одним із батьків-засновників комп’ютерної графіки, і таким чином написаний з точки зору того, хто насправді винайшов / відкрив ці методи.


1

Я був TA на курсі графіки в моєму університеті кілька років. Я встановив програму, і висвітлював такі речі, як програмні растеризації та затінення програм, Java3D, OpenGL і т. Д. Через деякий час після цього я в свій час вирішив написати промінь-промінь для власного зведення. Це було неймовірне враження - із буфером кадру та будпікселем (x, y, кольором) рутиною, у 500 рядках я мав код для створення зображення зі сферами, трикутниками, затіненням на піксель, тінями тощо. Якби мені довелося перегляньте практику для курсів, я б наполягав на тому, щоб студенти зробили рентгенівський трекер. Легко потрапити в подробиці алгоритму сканування під час створення растризатора або відчути, що ви працюєте через чорну скриньку за допомогою 3D API.

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.