Я хотів би дізнатися таку інформацію:
- Хто вони?
- Приклад використання в розробці ігор (область, в якій вони використовуються)
Про такі типи векторів:
Normal
Tangent
Binormal
Було б достатньо простого орієнтованого розробки ігор.
Я хотів би дізнатися таку інформацію:
Про такі типи векторів:
Normal
Tangent
Binormal
Було б достатньо простого орієнтованого розробки ігор.
Відповіді:
Взагалі кажучи, нормальний вектор представляє напрямок, що вказує безпосередньо "на поверхню", тобто це ортогональний (під кутом 90 градусів до) будь-який вектор, копланарний (у випадку плоскої поверхні) або дотичний до (у випадку неплоскої поверхні) поверхня в заданій точці.
Вектор дотичної зазвичай розглядають як вектор, який існує в площині поверхні (для плоскої поверхні) або лежить дотично до опорної точки на вигнутій поверхні (тобто, якщо плоска площина була побудована з однаковою нормою від опорної точки , дотичний вектор буде копланарним із цією площиною).
Поняття бінормального вектора трохи складніше; в комп'ютерній графіці він, як правило, відноситься до вектора бітангенту ( тут посилання ), який фактично є "іншим" дотичним вектором для поверхні, ортогональним як нормальному вектору, так і вибраному вектору дотичної.
Що стосується того, як вони обчислюються, це залежить від складності поверхні та наскільки точно ви хочете, щоб норма була такою (у деяких випадках, як, наприклад, з гладкими шейдерами, бажано обчислити норму для наближеної поверхні, коли фактична інформація для поверхні немає), але є кілька узагальнених формул , наведених тут .
З точки зору, де вони трапляються, відповідь ВСЕ . Нормальні вектори використовуються для розміщення камер та об'єктів у тривимірному просторі, для визначення траєкторій, відображень та кутів у фізичних обчисленнях, для зіставлення шкур та текстур у 3D-моделях, для визначення зрушень траєкторії цілей у програмуванні AI, для надання підказів шейдерам про те, як на світлові, тіньові та кольорові точки на поверхні щодо світла, камери та інших предметів тощо. Вони, можливо, є однією з найкорисніших відомостей, що мають у 3D-середовищі, і навіть вони надто зручні в 2D.
Для розрахунку освітлення зазвичай використовують звичайні вектори. Це вектор, який повинен бути перпендикулярним до поверхні, яка наближена вершинами сітки. Нормали визначаються в кожній позиції вершини, але їх можна обчислювати по-різному, залежно від того, як ви хочете, щоб світло було відбито на цій вершині, або що ви хочете робити зі своїми підрахунками світла в шейдері.
Дотичні та бінормальні вектори - це вектори, які перпендикулярні один одному та нормальний вектор, який по суті описує напрямок координат текстури u, v відносно поверхні, яку ви намагаєтеся візуалізувати. Зазвичай їх можна використовувати поряд із звичайними картами, які дозволяють створювати деталі підсвічування підповерхневої моделі відповідно до вашої моделі.
Очевидно, є й інші способи використання цих векторів, і я щойно описав середнє їх використання. Для отримання додаткової технічної інформації я б запропонував вам взяти книгу про комп'ютерну графіку або вивчити деякі статті в Інтернеті. Існує багато інформації про це.
Різниця між дотичною та бінормальною менш очевидна на поверхнях, але це не повинно бути дивно - спочатку бінормальне було визначено не для поверхонь, а для кривих , де концепція має набагато більше сенсу (і де вона насправді живе) як "нормальний", оскільки він ортогональний напрямку руху, таким чином, назва). Якщо бути більш конкретним, враховуючи простірну криву вигляду p = V (t) = (V x (t), V y (t), V z (t)), то тангенс - який вектор вказує на напрямок руху - задається Т у = дп / дт = (Dv х / дт, Йу г / дт, Йу г/ дт). (Я використовую тут індекс для розрізнення "ненормалізованого", оскільки у мене немає мого MathJax.) Тоді (миттєва) швидкість по кривій просто s = | T u |, довжина дотичного вектора, і 'нормалізований' дотичний вектор просто T = T u / s.
Тоді нормальний вектор до кривої є похідною від нормованого дотичного вектора за часом, N u = dT / dt; Причина того, що тут використовується нормалізована дотична, полягає в тому, щоб утримати швидкість уздовж кривої від перекосу нормального вектора - ви можете показати, що з цим визначенням у нас завжди є TN u = 0. Зауважте, що N u не обов'язково є одиничним вектором , будь що більше T u є; насправді його величина k = | N u | - це (миттєва) кривизна кривої в заданій точці, а точка p + N u - центр так званого коливального кола (у заданій точці). При цьому нормалізована норма - просто N = N u/ k, а бітангенс B - поперечний добуток B = TxN; оскільки T і N є одиничними векторами і вони ортогональні один одному, то B також є одиничним вектором, а (T, N, B) є ортогональним кадром.
Зауважимо, що за цим визначенням "бінормальна" крива ближча до того, що ми вважаємо нормальною до поверхні (це нормальна до "локальної" площини кривої), а нормальна до кривої ближче до того, що ми думаємо про те, що є важким для поверхні.
(На жаль, це зображення, насправді, не відповідає справедливості концепції, але це найкраще, що я міг знайти в Інтернеті, і я не можу легко створити свій власний ...)