Russian Qt Forum
Ноябрь 10, 2024, 22:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 6 7 [8] 9 10 ... 24   Вниз
  Печать  
Автор Тема: Геометрия (задачки)  (Прочитано 223972 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #105 : Февраль 05, 2015, 15:14 »

Я имел в виду подобное строение материалов на макроуровне:

Но, тут можно, конечно, измельчением сетки и нормалями всё допилить.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #106 : Февраль 05, 2015, 15:40 »

Однородность это http://www.ngpedia.ru/id206466p1.html
Видимо авторитетность источника оценивается по принципу "у кого денег больше"  Улыбающийся

Но, тут можно, конечно, измельчением сетки и нормалями всё допилить.
То измельчение обойдется в мульены полигонов, поэтому такие мелочи делают bump'ом. Вообще микродетали - интереснейшая тема, но там обычно первую скрипку играет specular (аттач). Диффуза слишком вялая для этого
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #107 : Февраль 06, 2015, 14:28 »

Ну вот и ответы иссякли Улыбающийся  Ладно, посмотрим какие объяснения дает автор блога

Цитировать
В общем случае скалярное произведение может быть отрицательным, если угол между векторами больше 90 градусов. Отрицательные значения нам нужно отсечь. Поэтому выберем максимальное значение между скалярным произведением и нулем:
max(dot(n_normal, lightvector), 0.0)
По существу это утверждение "источник не освещает заднюю (по отношению к нему) сторону объекта". Что справедливо для большинства материалов - но далеко не для всех

1) (полу)Прозрачные объекты, напр стакан из которого пьем чай или водку. Очевидно часть света проникает и на заднюю сторону

2) Многие "organic" объекты/материалы. Напр листья деревьев (или даже лист бумаги если не плотный ватман) непрозрачны (мы не видим перекрытые ими объекты), но свет пропускают. А у некоторых растений задняя сторона листьев выглядит даже ярче передней.

3) Мрамор - ну он-то точно непрозрачный и света не пропускает, но.. некоторые детали подсвечены - хотя и отвернуты от света. Поэтому мраморную статую легко легко отличить от гранитной. Этот эффект имеет более сложную природу.

Ну и так далее  Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #108 : Март 02, 2015, 12:04 »

#11) Продолжим тему шейдеров. Вторая формула - расчет specular (бликов) также давно стала канонической и переписывается из поколения в поколение
Цитировать
float specular = k_specular * pow( max(dot(lookvector,reflectvector),0.0), 40.0 );
Источник тот же. Вместо 40 чаще юзают 200 (или песню с "блинном") - но не суть.

Собственно это ничем не плохо, но узковато, бедно. На всех картинках мы ясно видим: светит "точка" напр солнце или лампочка. Но всегда ли это так? Если мы в комнате - светит окно, а это прямоугольник. Какая формула для этого?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #109 : Март 02, 2015, 12:19 »

Кажется, это называется Cube Map Texturing
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #110 : Март 02, 2015, 12:23 »

Хотя, возможно, заблуждаюсь
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #111 : Март 02, 2015, 14:30 »

Попробуйте погуглить opengl car reflection
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #112 : Март 03, 2015, 10:44 »

См схемку (из того же блога Андрея). Как бы нам вместо лампочки (вверху слева) зарядить окно? Просто так не выходит, окно имеет площадь, поэтому какого-то одного выходящего вектора для окна нет. Поэтому давайте трассировать не от источника, а наоборот - от камеры (глаза). Тогда отразится не синий луч, а красный - см второй аттач. Итого: есть точка и луч исходящий из нее. Найти попадает ли этот луч в заданное окно.

Ну что - все равно никак?  Плачущий
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #113 : Март 03, 2015, 12:36 »

Может поможет...
https://prezi.com/dpejfl_wkxml/opengl-reflections/
http://artis.imag.fr/Recherche/RealTimeShadows/pdf/stencil.pdf - страница 24
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #114 : Март 03, 2015, 13:34 »

Этот топик создавался не для того чтобы мне помогали Улыбающийся Это "задачки" - простые и (надеюсь) интересные. Не надо воспринимать их с позиции OpenGL и немедленно чего-то "прикручивать". Если решение ясно - можно и перевести на GLSL (напр в данном случае это несложно), но необязательно. В любом случае сначала разрабатывается алгоритм, а потом уже его железячная реализация.

Возвращаясь к окну. Reflection map (карта отражения) отражает "окружение" (часто небо) которое "бесконечно далеко", но совсем не окно комнаты имеющее реальные размеры. Напр для объектов вблизи окна наш specular большой, для дальних маленький. А если объект поместить достаточно "вбок" от окна то вообще specular'а не увидим. Reflection map ничего этого не делает.

Просьба думать самостоятельно а не рыться в гнусном OpenGL отстойнике, ничего хорошего там нет.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #115 : Март 10, 2015, 09:44 »

12) Опять шейдеры. Как уже упоминалось, wireframe  (проволочный каркас) может освещаться. Но по каким-то причинам это не выглядит "так уж хорошо" (левая картинка). Вот если мы заменим каждый сегмент на модельку цилиндра - тогда другое дело (правая картинка). Увы, такая замена - операция совсем не мгновенная и очень дорогостоящая, объем данных вырастает в десятки раз. Отсюда 2 квешнза:

- а почему линии/проволока так уныло, тускло рендерится?
- а не сбацать ли нехилый шейдерок чтобы рендерил линии как справа?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #116 : Март 13, 2015, 12:05 »

Ну вот, опять нет смелых Плачущий Ладно, попробуем оживить. Два момента

1) Заверяю что OpenGL познания здесь НЕ требуются, его технические подробности здесь совершенно ни при чем. Вот если дело дойдет до конкретной GLSL реализации - вот тогда надо будет читать ихние опусы, может спрашивать на gamedev (где в лесах много диких обезьян) и.т.п. А на уровне разработки алгоритма/решения ничего этого нет (и слава богу).

2) Утверждение "мы видим объекты" спорно. Мы видим как они освещены. Напр если нет никакого света - все черное, ничего не видим.

Ну, как говорят буржуины, "hope that helps"  Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #117 : Август 16, 2015, 10:14 »

13) Как Вы знаете, 3D модель имеет данные нормалей (для каждого вертекса). Здравый смысл говорит что нормаль - это перпендикуляр к поверхности, поэтому "нормальные" нормали должны быть как на рисунке слева (ну может развернуты на 180). Однако иногда умышленно создают совсем другие нормали, как справа. (особенно этим любят заниматься с OpenGL  Улыбающийся)

Зачем так делают ?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #118 : Август 17, 2015, 15:03 »

В OpenGL освещение граней базируется на нормалях, насколько я знаю. Таким образом можно различные эффекты получать.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #119 : Август 17, 2015, 15:22 »

В OpenGL освещение граней базируется на нормалях, насколько я знаю.
В "не OpenGL" тоже  Улыбающийся

Таким образом можно различные эффекты получать.
Какой же полезный эффект мы получаем направляя нормаль вверх?
Записан
Страниц: 1 ... 6 7 [8] 9 10 ... 24   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.14 секунд. Запросов: 23.