Russian Qt Forum
Ноябрь 22, 2024, 16:31
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Разное
>
Говорилка
>
Геометрия (задачки)
Страниц:
1
...
6
7
[
8
]
9
10
...
24
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Геометрия (задачки) (Прочитано 226275 раз)
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Геометрия (задачки)
«
Ответ #105 :
Февраль 05, 2015, 15:14 »
Я имел в виду подобное строение материалов на макроуровне:
Но, тут можно, конечно, измельчением сетки и нормалями всё допилить.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Геометрия (задачки)
«
Ответ #106 :
Февраль 05, 2015, 15:40 »
Цитата: __Heaven__ от Февраль 05, 2015, 14:48
Однородность это
http://www.ngpedia.ru/id206466p1.html
Видимо авторитетность источника оценивается по принципу "у кого денег больше"
Цитата: __Heaven__ от Февраль 05, 2015, 15:14
Но, тут можно, конечно, измельчением сетки и нормалями всё допилить.
То измельчение обойдется в мульены полигонов, поэтому такие мелочи делают bump'ом. Вообще микродетали - интереснейшая тема, но там обычно первую скрипку играет specular (аттач). Диффуза слишком вялая для этого
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Геометрия (задачки)
«
Ответ #107 :
Февраль 06, 2015, 14:28 »
Ну вот и ответы иссякли
Ладно, посмотрим какие объяснения дает автор блога
Цитировать
В общем случае скалярное произведение может быть отрицательным, если угол между векторами больше 90 градусов. Отрицательные значения нам нужно отсечь. Поэтому выберем максимальное значение между скалярным произведением и нулем:
max(dot(n_normal, lightvector), 0.0)
По существу это утверждение "источник не освещает заднюю (по отношению к нему) сторону объекта". Что справедливо для большинства материалов - но далеко не для всех
1) (полу)Прозрачные объекты, напр стакан из которого пьем чай или водку. Очевидно часть света проникает и на заднюю сторону
2) Многие "organic" объекты/материалы. Напр листья деревьев (или даже лист бумаги если не плотный ватман) непрозрачны (мы не видим перекрытые ими объекты), но свет пропускают. А у некоторых растений задняя сторона листьев выглядит даже ярче передней.
3) Мрамор - ну он-то точно непрозрачный и света не пропускает, но.. некоторые детали подсвечены - хотя и отвернуты от света. Поэтому мраморную статую легко легко отличить от гранитной. Этот эффект имеет более сложную природу.
Ну и так далее
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Геометрия (задачки)
«
Ответ #108 :
Март 02, 2015, 12:04 »
#11) Продолжим тему шейдеров. Вторая формула - расчет specular (бликов) также давно стала канонической и переписывается из поколения в поколение
Цитировать
float specular = k_specular * pow( max(dot(lookvector,reflectvector),0.0), 40.0 );
Источник
тот же
. Вместо 40 чаще юзают 200 (или песню с "блинном") - но не суть.
Собственно это ничем не плохо, но узковато, бедно. На всех картинках мы ясно видим: светит "точка" напр солнце или лампочка. Но всегда ли это так? Если мы в комнате - светит окно, а это прямоугольник. Какая формула для этого?
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Геометрия (задачки)
«
Ответ #109 :
Март 02, 2015, 12:19 »
Кажется, это называется Cube Map Texturing
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Геометрия (задачки)
«
Ответ #110 :
Март 02, 2015, 12:23 »
Хотя, возможно, заблуждаюсь
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Геометрия (задачки)
«
Ответ #111 :
Март 02, 2015, 14:30 »
Попробуйте погуглить opengl car reflection
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Геометрия (задачки)
«
Ответ #112 :
Март 03, 2015, 10:44 »
См схемку (из того же блога Андрея). Как бы нам вместо лампочки (вверху слева) зарядить окно? Просто так не выходит, окно имеет площадь, поэтому какого-то одного выходящего вектора для окна нет. Поэтому давайте трассировать не от источника, а наоборот - от камеры (глаза). Тогда отразится не синий луч, а красный - см второй аттач. Итого: есть точка и луч исходящий из нее. Найти попадает ли этот луч в заданное окно.
Ну что - все равно никак?
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Геометрия (задачки)
«
Ответ #113 :
Март 03, 2015, 12:36 »
Может поможет...
https://prezi.com/dpejfl_wkxml/opengl-reflections/
http://artis.imag.fr/Recherche/RealTimeShadows/pdf/stencil.pdf
- страница 24
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Геометрия (задачки)
«
Ответ #114 :
Март 03, 2015, 13:34 »
Цитата: __Heaven__ от Март 03, 2015, 12:36
Может поможет...
https://prezi.com/dpejfl_wkxml/opengl-reflections/
http://artis.imag.fr/Recherche/RealTimeShadows/pdf/stencil.pdf
- страница 24
Этот топик создавался не для того чтобы мне помогали
Это "задачки" - простые и (надеюсь) интересные. Не надо воспринимать их с позиции OpenGL и немедленно чего-то "прикручивать". Если решение ясно - можно и перевести на GLSL (напр в данном случае это несложно), но необязательно. В любом случае сначала разрабатывается алгоритм, а потом уже его железячная реализация.
Возвращаясь к окну. Reflection map (карта отражения) отражает "окружение" (часто небо) которое "бесконечно далеко", но совсем не окно комнаты имеющее реальные размеры. Напр для объектов вблизи окна наш specular большой, для дальних маленький. А если объект поместить достаточно "вбок" от окна то вообще specular'а не увидим. Reflection map ничего этого не делает.
Просьба думать самостоятельно а не рыться в гнусном OpenGL отстойнике, ничего хорошего там нет.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Геометрия (задачки)
«
Ответ #115 :
Март 10, 2015, 09:44 »
12) Опять шейдеры. Как уже упоминалось, wireframe (проволочный каркас) может освещаться. Но по каким-то причинам это не выглядит "так уж хорошо" (левая картинка). Вот если мы заменим каждый сегмент на модельку цилиндра - тогда другое дело (правая картинка). Увы, такая замена - операция совсем не мгновенная и очень дорогостоящая, объем данных вырастает в десятки раз. Отсюда 2 квешнза:
- а почему линии/проволока так уныло, тускло рендерится?
- а не сбацать ли нехилый шейдерок чтобы рендерил линии как справа?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Геометрия (задачки)
«
Ответ #116 :
Март 13, 2015, 12:05 »
Ну вот, опять нет смелых
Ладно, попробуем оживить. Два момента
1) Заверяю что OpenGL познания здесь НЕ требуются, его технические подробности здесь совершенно ни при чем. Вот если дело дойдет до конкретной GLSL реализации - вот тогда надо будет читать ихние опусы, может спрашивать на gamedev (где в лесах много диких обезьян) и.т.п. А на уровне разработки алгоритма/решения ничего этого нет (и слава богу).
2) Утверждение "мы видим объекты" спорно. Мы видим как они освещены. Напр если нет никакого света - все черное, ничего не видим.
Ну, как говорят буржуины, "hope that helps"
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Геометрия (задачки)
«
Ответ #117 :
Август 16, 2015, 10:14 »
13) Как Вы знаете, 3D модель имеет данные нормалей (для каждого вертекса). Здравый смысл говорит что нормаль - это перпендикуляр к поверхности, поэтому "нормальные" нормали должны быть как на рисунке слева (ну может развернуты на 180). Однако иногда умышленно создают совсем другие нормали, как справа. (особенно этим любят заниматься с OpenGL
)
Зачем так делают ?
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Геометрия (задачки)
«
Ответ #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
Сообщений: 11445
Re: Геометрия (задачки)
«
Ответ #119 :
Август 17, 2015, 15:22 »
Цитата: Racheengel от Август 17, 2015, 15:03
В OpenGL освещение граней базируется на нормалях, насколько я знаю.
В "не OpenGL" тоже
Цитата: Racheengel от Август 17, 2015, 15:03
Таким образом можно различные эффекты получать.
Какой же полезный эффект мы получаем направляя нормаль вверх?
Записан
Страниц:
1
...
6
7
[
8
]
9
10
...
24
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...