Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Что такое бинормаль в 3D-графике?


Шейдер   (17.09.10 17:41

Нормаль - перпендикуляр к поверхности. Бинормаль в математике, как удалось нагуглить, - это перпендикуляр к нормали и к касательной к кривой. Но в 3D-графике ведь не кривая, а поверхность. И куда должна быть направлена касательная, когда речь идёт о поверхности - не совсем понятно. И разве касательная не должна быть перпендикулярна нормали? А если должна, то в чём смысл бинормалей? Зачем они? Может ли кто-нибудь просветить?


@!!ex ©   (17.09.10 18:42[1]

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


Шейдер   (17.09.10 19:42[2]


> @!!ex ©   (17.09.10 18:42) [1]
> Чиатйте книжки.


Давайте ссылки на них - посмотрим.


> В графике мы работаем с треугольниками. А они как раз и
> задают плоскость.
> бинормаль нужна для того чтобы однозначно определить пространство
> треугольника. локальные координаты.


Для задания плоскости треугольника используются координаты его вершин.

Фраза "однозначно определить пространство" - это общие слова. Похоже, что вы сами не знаете что такое бинормаль и tangent, как они рассчитываются и как по ним рассчитывается бамп.


@!!ex ©   (17.09.10 21:00[3]

Ясно. Удачи.


Шейдер   (17.09.10 23:43[4]


> @!!ex ©   (17.09.10 21:00) [3]
>
> Ясно. Удачи.


Удачи вам. А слив вам засчитан.


0x00FF00 ©   (18.09.10 03:16[5]


> Удачи вам. А слив вам засчитан.

Гыгы =)
Зная, кто есть Алекс, такого точно не скажешь.

ЗЫ.
Но, @!!ex, ИМХО тема бинормалей всё-таки требует более детального пояснения:
http://netlib.narod.ru/library/book0077/images/f10_06.jpg
Вот картинка, думаю она прояснит ситуацию.
Векторы касательных к создаваемой поверхности (когда мы, фактически, ту кривую, про которую Вы, Шейдер, говорили, аппроксимируем с помощью ломаной), а также нормали к ней, обязаны быть ортогональны нашей бинормали, оставаясь ортогональными и друг другу.

Т.е., что самое главное, бинормаль ≠ нормаль.


0x00FF00 ©   (18.09.10 03:18[6]

Ах да. На картинке:
⋅ T — касательная
⋅ N — нормаль
⋅ B — бинормаль


@!!ex ©   (18.09.10 09:10[7]

> [5] 0x00FF00 ©   (18.09.10 03:16)
> Но, @!!ex, ИМХО тема бинормалей всё-таки требует более детального
> пояснения

Естественно, я и собирался ответить более детально, после уточнения что не понятно в моем описании.
Отвечать школоте с завышенным ЧСВ, которая на меня наезжает... Нет уж, извольте. :)


Шейдер   (19.09.10 21:48[8]


> 0x00FF00 ©   (18.09.10 03:16) [5]


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

Не понятно почему касательная на картинке направлена именно вправо? Её ведь можно провернуть вокруг вектора нормали в любую сторону и её перпендикулярность к нормали при этом не нарушится. Почему вправо то?

Второй вопрос - это зачем вообще нужно рассчитывать третий вектор (бинормаль)? Почему нельзя обходиться только нормалью и касательной?


CrytoGen   (20.09.10 06:17[9]

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

и сразу же
> Её ведь можно провернуть вокруг вектора нормали в любую
> сторону и её перпендикулярность к нормали при этом не нарушится
>

Вы осмыслите первую фразу, тогда вопроса не будет.


Шейдер   (20.09.10 08:13[10]


> CrytoGen   (20.09.10 06:17) [9]
>
> Только что сказали
> > То, что бинормаль рассчитывается как перпендикуляр к нормали
> > и касательной - тоже.
>
> и сразу же
> > Её ведь можно провернуть вокруг вектора нормали в любую
> > сторону и её перпендикулярность к нормали при этом не
> нарушится
> >
>
> Вы осмыслите первую фразу, тогда вопроса не будет.


Прежде чем предлагать другим осмысливать, сами сперва осмыслите.


CrytoGen   (20.09.10 09:44[11]

интересный монолог получается


@!!ex ©   (20.09.10 13:34[12]

> [11] CrytoGen   (20.09.10 09:44)

Вот поэтому начиная со второго поста я не пытаюс ничего объяснять. :)
Не тот "клиент".


@!!ex ©   (20.09.10 13:34[13]

Вернее не наш. ;)


Sapersky   (21.09.10 00:37[14]

Клиент-то да, но... почему-то никто из Мастеров Геймдева не сказал, что tangent/binormal, применительно к практической задаче ParallaxMapping, задают положение не треугольника, а текстуры в пространстве. Точнее, направление U и V координат... хотя нет, они всегда направлены вверх-вправо... в общем, пара векторов, которая определяет, как нужно сместиться в плоскости полигона, чтобы получить вместо текселя с координатами [U, V] -> [U+N, V] и [U, V+N] (это требуется для ParallaxMapping). А поскольку текстура может накладываться "непрямоугольно", вектора не обязательно будут ортогональны, поэтому их нужно вместе с нормалью 3 штуки.
Во всяком случае, я так понял отсюда:
http://www.gamedev.ru/code/terms/TangentSpace
http://www.gamedev.ru/code/terms/ParallaxMapping


@!!ex ©   (21.09.10 14:33[15]

> [14] Sapersky   (21.09.10 00:37)
> задают положение не треугольника, а текстуры в пространстве.

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

задача тангент спейса одна: перевод координат источника света из глобальной системы координат в систему координат треугольника.


Sapersky   (22.09.10 13:28[16]

не текстуры, а локальную систему координат они задают. с помощью которой вычисляется локальные координаты источника света

А эти локальные координаты применимы к чему-то без текстуры?
По-моему без текстуры можно посчитать максимум освещение Фонга, но для него вроде достаточно одной нормали. Хотя допускаю, что есть ещё какие-то методы, а я просто не в курсе.


@!!ex ©   (22.09.10 15:26[17]

Расчет эффектов всевозможных(сгорание треугольника, например).
Много всякой фигни можно придумать, которая требует расчет в согласованной системе локальных координат.
Конкретно в случае паралаксов всякие согласование делают по развертве, потому что с разверткой потом и работать. Да и проше это


Сверхмозг   (26.08.19 14:38[18]

Долбоебы.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо