Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.09.28;
Скачать: [xml.tar.bz2];

Вниз

рассчёт нормалей   Найти похожие ветки 

 
DoKi   (2008-08-05 12:46) [0]

Люди помогите  разобраться как  рассчитывать нормали к полигонам,  прочитал  кучу  статей в сети но ничего не понял
Может можно как нибуть обойтись без нормалей?????


 
Сергей М. ©   (2008-08-05 13:33) [1]


> Может можно как нибуть обойтись без нормалей?


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


 
DoKi   (2008-08-05 13:41) [2]

волнует


 
Сергей М. ©   (2008-08-05 13:46) [3]

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


 
DoKi   (2008-08-05 14:08) [4]

везде одно и тоже написано  
равно 0  перпиндикулярна  поверхности и нужно найти среднее значение  нормалей


 
Сергей М. ©   (2008-08-05 14:09) [5]


> равно 0  перпиндикулярна  поверхности


Нормаль не может быть неперпендикулярна поверхности, на то она и нормаль)


> нужно найти среднее значение  нормалей


Нужно кому и для чего ?


 
DoKi   (2008-08-05 14:12) [6]

ну к точке подходят несколько граней  у каждой своя  нормаль  их(нормали) надо  сложить и найти  ср нормль


 
DoKi   (2008-08-05 14:14) [7]

я пререпутал равна не 0 а 1


 
Сергей М. ©   (2008-08-05 14:30) [8]


> к точке подходят несколько граней


Как это "подходят" ? Ногами что ли ?
Пользуй геометрические термины, а не отсебячину ..


 
DoKi   (2008-08-05 14:34) [9]

Короче алгоритм такой
1)найти  нормали  каждой грани  и сохранить их в массиве
2)найти среднее значение нормалей  тех граней  которые соединяются в одной  точке(ето ср значение и будет  нормаль данной точки)


 
Сергей М. ©   (2008-08-05 14:36) [10]


> 2)найти среднее значение


Ты не знаешь как найти среднее арифметическое n чисел ?


 
DoKi   (2008-08-05 14:43) [11]

да какое ср арифмитическое
нормаль  ето вектор  равен 1  перпендикулярен поверхности имеет направление(вроде)  и соостоит из 3 цифр(x,y,z)
но как его найти я понятия не имею


 
Сергей М. ©   (2008-08-05 14:53) [12]


> как его найти я понятия не имею


Ты не знаешь что такое векторное произведение ?


> соостоит из 3 цифр


Не состоит оно "из цифр")

Вектор задается числами, а не "цифрами".


 
DoKi   (2008-08-05 14:56) [13]

Наверно  начать  надо с нахождения  нормали к треугольнику

как  найти???


 
Сергей М. ©   (2008-08-05 15:07) [14]

Формула для нахождения произведения двух 3D-векторов:

C = A x B = ( AyBz — ByAz , AzBx – BzAx , AxBy – BxAy)

Что в ней тебе не понятно ?


 
DoKi   (2008-08-05 15:09) [15]

А где тут нормаль к треугольнику???


 
DoKi   (2008-08-05 15:14) [16]

с-нормаль??


 
Сергей М. ©   (2008-08-05 15:20) [17]

Как это где ?

С и есть та самая нормаль..


 
DoKi   (2008-08-05 15:30) [18]

а  А  В  AyBz   ByAz AzBx  BzAx  AxBy  BxAy
что такое?


 
Сергей М. ©   (2008-08-05 15:36) [19]

Координаты одной из вершин треугольника полагаются равными (0, 0, 0), в этой вершине ты расчитываешь нормаль.

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


 
Сергей М. ©   (2008-08-05 15:38) [20]

AyBz   ByAz AzBx  BzAx  AxBy  BxAy - это произведения соответствующих координат соответствующих векторов.


 
DoKi   (2008-08-05 15:38) [21]

как и найти А В


 
Сергей М. ©   (2008-08-05 15:47) [22]

Переносом системы координат в точку  - одну из вершин треугольника, - в которой ты расчитываешь нормаль к этому треугольнику.


 
DoKi   (2008-08-05 15:50) [23]

спасибо  но  я ничерта не понял


 
DoKi   (2008-08-05 15:50) [24]

спасибо  но  я ничерта не понял


 
Jeer ©   (2008-08-05 15:58) [25]


> Сергей М. ©   (05.08.08 15:47) [22]


Ну ты прям, как учебник по аналитической геометрии :)


> DoKi   (05.08.08 15:50) [23]
>
> спасибо  но  я ничерта не понял


Достаточно было одного раза, чтобы мы поняли.


 
Сергей М. ©   (2008-08-05 16:06) [26]

Что конкретно ты не понял ?

Это же геометрия школьного курса !

Ты чем занимался на уровках геометрии ?)

Пусть треугольник задан в 3D-пространстве вершинами A(xa, ya, za), B(xb, yb, zb), C(xc, yc, zc)

Пусть в вершине С необходимо расчитать вектор нормали к плоскости заданного треугольника.

Переносим начало координат в вершину C, получаем треугольник, две другие вершины которого заданы векторами

A(xa-xc, ya-yc, za-zc), B(xb-xc, yb-yc, zb-zc)

Тем самым имеем пару векторов, формула векторного произведения которых приведена в [14]

Дальше-то сам дотумкаешь ?)


 
Сергей М. ©   (2008-08-05 16:08) [27]


> Jeer ©   (05.08.08 15:58) [25]


Терпелки у меня на эту манную кашу вряд ли хватит)


 
Jimmy   (2008-08-05 21:47) [28]

Может про перенос системы координат - лишнее?


 
Сергей М. ©   (2008-08-06 08:09) [29]


> Jimmy   (05.08.08 21:47) [28]


Кому как)


 
XProger ©   (2008-08-06 23:40) [30]

OpenGL при включённом FaceCulling"е без задания нормалей расчитывает ориентацию по порядку обхода вершин (по и против часовой)


 
Viktorious ©   (2008-08-07 00:33) [31]

1. Слово "Расчет" пишется с одной буквой с.

2. Нормаль считается так, пишу для каждой отдельной координаты:

Сx = AyBz - AzBy
Cy = AzBx - AxBz
Cz = AxBy - AyBx

Где C(x,y,z) - искомая нормаль, A(x,y,z), B(x,y,z) - вектора, которые исходят из одной точки треугольника (чтобы найти координаты вектора, надо вычесть из координат точки конца вектора координаты точки начала вектора).

3. Вектора усредняются покоординатно, то есть берется обычное арифметическое среднее координат x,y,z.

3. СРОЧНО взять книжку по линейной алгебре и геометрии (работа с векторами и матрицами, афинные преобразования на плоскости и в пространстве и т.д.) и изучать внимательно, иначе далеко в программировании графики не уйдете...


 
palva ©   (2008-08-07 11:33) [32]

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


 
ketmar ©   (2008-08-07 12:43) [33]

>[32] palva © (2008-08-07 11:33:00)
>Чтобы нормали имело смысл усреднять, их надо сделать единичной длины

нормали не бывают «не единичной длины». «нормаль не единичной длины» называется «перпендикуляр». %-)

---
Understanding is not required. Only obedience.


 
Псалтырь ©   (2008-08-07 13:19) [34]


> ketmar ©   (07.08.08 12:43) [33]

Нормаль - это вектор. Перпендикуляр - это прямая. Не так ли?


 
uw ©   (2008-08-07 13:32) [35]

Нормаль - это вообще прямая. А вот орт - единичный вектор (например, в направлении нормали).


 
uw ©   (2008-08-07 13:32) [36]

А нормуль - это когда принял на грудь, и хорошо...


 
@!!ex ©   (2008-08-07 13:34) [37]

Жесть.. я когда в школе учился, мне тоже было лень разбираться во всей этой зауми, и я спрашивал на форумах...
А когда мне отвечали, что нормаль - это вектор получаемый векторным произведением двух векторов параллельных двум сторонам треугольнкиа, я ничего не понимал, обижался и уходил. :))))
А то, чего автор хочет добится - это сглаженные нормали.
Считаем нормаль для каждого треугольника.(Векторное произведение + нормализация помогут)
Потом складываем вектора и делим(Обычно нахождение среднего арифметического).
Получаем для каждого треугольника три разных нормали. По одной на каждую вершину.
В итоге освещение посчитанное по этим нормалям получается значительно более качественным.
3ds Max умеет делать это все сам.. Поэтому в моем коде, единственное место где считаются нормали - это расчет теневых объемов. Все остальное грузхится из моделей...


 
Сергей М. ©   (2008-08-07 13:36) [38]


> ketmar ©   (07.08.08 12:43) [33]

http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C


 
Псалтырь ©   (2008-08-07 13:43) [39]

То есть лента Мёбиуса - пример неориентированной поверхности?


 
ketmar ©   (2008-08-07 13:52) [40]

>[38] Сергей М. © (2008-08-07 13:36:00)
мда. ты прав, я ошибся. извиняюсь.

---
All Your Base Are Belong to Us



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2008.09.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.047 c
15-1217821033
Slider007
2008-08-04 07:37
2008.09.28
С днем рождения ! 4 августа 2008 понедельник


15-1217687510
BlueDragon
2008-08-02 18:31
2008.09.28
Ноутбук Dell


2-1218991194
Rembo
2008-08-17 20:39
2008.09.28
Проблема с указателями


15-1217828621
начинающий
2008-08-04 09:43
2008.09.28
PS/2 мышь и клавиатура выделываются


3-1206953949
leonidus
2008-03-31 12:59
2008.09.28
Получение первой записи в таблице





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский