Математичні теми для 3D-графічного програмування [закрито]


14

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

  • вектор математики
  • матрична математика
  • кватерніони
  • лінійна алгебра

Наскільки я бачу, це все лінійні алгебри / матричні теми. Чи потрібні ще якісь теми?


У цьому питанні є гарна інформація про це: gamedev.stackexchange.com/questions/2029/…
michael.bartnett

@beardcp Я можу зайти як дублікат.
Качка комуністична

Відповіді:


10

Лінійна алгебра - це найважливіша дисципліна для 3D графічного програмування просто тому, що це математична мова для опису просторової геометрії. Ваші інші три теми справді просто підмножини лінійної алгебри:

  • Вектори - це спосіб думати про точки в просторі
  • Матриці - це способи мислення про перетворення простору та предметів: переклад предметів, масштабування їх тощо.
  • Кватерніони - це природне уявлення для певної підгрупи цих перетворень, обертів
  • тощо.

Що стосується інших релевантних предметів математики для тривимірного графічного програмування, я рекомендував би не отримати достатньо любові - обчислювальна геометрія. Чимало природних проблем зводиться до тем обчислювальної геометрії:

  • Один з найбільш природних способів визначення гучності з набору точок (наприклад, визначення гучності звуку, де буде грати конкретний фоновий шум, або гучності туману тощо) - знайти опуклий корпус точок ; є хороші алгоритми для цього в 2 та 3 вимірах, але навіть 2d алгоритми не відразу очевидні.
  • Проблема в змозі визначити, які об'єкти знаходяться поблизу даної точки або знаходяться поруч (наприклад, зменшити кількість об'єктів, які потрібно перевірити на предмет можливих зіткнень) або визначити, які вороги помітять гравців на задана точка) потрапляє в поле задач геометричних запитів і в схеми просторового розподілу (і, таким чином, в структури, такі як дерева BSP та октриси). Ті ж загальні ідеї також використовуються для відповіді на запити "відстеження рядків" (наприклад, "на що потрапляє цей лазерний промінь?")

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


Це була фантастична відповідь, Стівен, дякую. Мені сподобалися ваші резюме, як думати про вектори, матриці та кватерніони (на жаль, за 2 секунди більш інформативні, ніж мій нинішній викладач лінійної алгебри) Ви також дали мені краще розуміння видів проблем моделювання, які постають перед 3D-графічними програмістами. Ура!
Кетрін Рікс


3

http://www.dickbaldwin.com/KjellTutorial/KjellVectorTutorialIndex.htm - досить хороший і простий підручник з питань 2D / 3D векторної математики І це програми для графічного програмування.


Я подивився на це, дуже приємно. Починає з основ, що добре для початківця, як я, - великі пальці! :)
Кетрін Рікс

1

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

Крім цього, існує багато тем, що відображають користь від математичного формулювання. Наприклад, тверді тіла 3D зазвичай представлені тріангуляціями їх поверхні. Як ми показуємо лише ту частину поверхні, яку повинен бачити спостерігач (приховані алгоритми поверхні / лінії)? Якщо об'єкт повинен бути освітлений з певного джерела / напряму, як це взаємодіє з перспективою, щоб дати переконливе відображення поверхні?

Крім цього, існують всілякі цікаві теми моделювання, такі як анімація туману чи полум'я. Але трансформація координат, як видається, в центрі вашого списку тем є основним елементом усіх подальших успіхів.


1

Практична лінійна алгебра та основи комп’ютерної графіки - це дві дуже хороші книги, які висвітлюють згадувані вами теми (та їх використання в комп'ютерній графіці), якщо ви займаєтесь книгами тощо.


Я дуже переймаюся книгами і такими :) Дякую за рекомендації.
Кетрін Рікс

1

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

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

Матрична математика та лінійна алгебра дуже тісно пов'язані між собою, найбільше вони описують лінійні операції над множинами чисел. Але знову ж таки, це просто ще один спосіб опису деяких речей, які можна було б описати векторами та алгебрами.

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


Я вже бачив декілька згадок про фізику - чи можете ви сказати мені, про які конопти ви тут звертаєтесь? Я не торкався цієї теми протягом 12 років (тобто ще зі школи) і, відверто кажучи, ненавидів її. Можливо, я знайду його застосування легшим для шлунка.
Кетрін Рікс

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