|
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 71
|
|
Карта теней от солнца24.05.2020, 21:30. Показов 5616. Ответов 29
Добрый день, есть такой вопрос: как можно реализовать карту теней от солнца, единственное, что я нашел на просторах интернета это то, что можно использовать glOrtho, но как его использовать. Поясню, моё "солнце" записывается в шейдер как единичный вектор направления солнца, то-есть нет определенной позиции, как тогда мне отрисовывать карту теней, подойдет ли перемещение камеры на расстояние чтобы видеть весь мир в рамках картинки сверху, ну или под углом солнца?
0
|
|
| 24.05.2020, 21:30 | |
|
Ответы с готовыми решениями:
29
Карта теней Создать модель движения Солнца вокруг орбиты, Земли вокруг Солнца, Луны вокруг земли
|
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
||
| 26.05.2020, 23:21 | ||
glOrtho(-size, size, -size, size, -near, far);
0
|
||
|
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 71
|
|
| 26.05.2020, 23:29 [ТС] | |
|
zayats80888, за центр мира я беру координаты игрока (пока что) это примерно 512, 80, 512, вектор направления света я расчитываю через cos и sin угол меняется от 0 до 90и обратно от 90 до 0, поэтому направление (cos(angle), -sin(angle), 0), размер мира 256 на 256 на 256 координаты не имеют смысла ведь игрок в центре мира и он погружается и отгружается от позиции игрока, проекция света gluperspective(90, 1, 1, 1024) проекция камеры gluperspective(70, width / height, 0.05 1024), матрица вида света glrotate(90, 0, 1, 0), glrotate(90 * sin(angle), 1, 0, 0) gltranslate(-playerX + 256 * cos(angle), 256 * -sin(angle), -playerZ), матрица вида камеры gltranslate(0,0,-0.3) glrotate(xRot, 1,0,0) glrotate(yRot, 0,1,0) gltranslate(-playerX, -playerY, -playerZ) я пока с орто решил отложить работу, ибо там тоже самое, только похуже(всякие куски теневые по миру много и маленькие)
0
|
|
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
||
| 26.05.2020, 23:40 | ||
Сообщение было отмечено EggoYT как решение
РешениеПопробуй glOrtho(-256, 256, -256, 256, -256, 256)И для матрицы вида света glTranslate(-playerX, -playerY, -playerZ) (rotate оставь как есть)
1
|
||
|
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 71
|
|
| 26.05.2020, 23:51 [ТС] | |
|
zayats80888, не понимаю что странного, я завтра орто посмотрю, даже попробую скрины прислать
Добавлено через 6 минут zayats80888, если сделать такой транслейт, то свет просто переместится в точку игрока, а так я проверял я смотрел от источника света и прокрутка была с полным обзором на мир, но вот тени не послушные) Добавлено через 51 секунду Ладно я попробую, может орто иначе реагирует на матртцы трансформацти
0
|
|
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
||
| 26.05.2020, 23:52 | ||
|
0
|
||
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
||
| 26.05.2020, 23:53 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 71
|
|
| 26.05.2020, 23:58 [ТС] | |
|
zayats80888, здzayats80888, я записываю матрицы света и матрицы камеры а для теней как я понял нужно на gl_Vertex * gl_ModelViewMatrix это умножить на матрицы света и умножить на инвертированную матрицу модели камеры (по гайду пилил, но я думаю матрицу камеры можно оттуда вообще вырезать)
Добавлено через 33 секунды Antikl, и там и там перспектива, но вот заяц подсказал, завтра попробую орто Добавлено через 1 минуту И да я использую шейдер 120 версии
0
|
|
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
||
| 27.05.2020, 00:02 | ||
|
Там всё просто, передаёшь две MVP(отдельно) матрицы. В вершинном шейдере каждую точку умножаешь отдельно на каждую матрицу. Одна идёт в gl_Position, другая просто как out. В фрагментном шейдере сравниваешь глубину(с небольшими манипуляциями).
1
|
||
|
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 71
|
||||||||||||
| 27.05.2020, 10:45 [ТС] | ||||||||||||
|
zayats80888,
Тут уже рендер сцены с тенями, я достал LightMatrix из рендера карты теней (матрицы вытащил и сохранил), lightMatrix я подаю в шейдер
Источник откуда брал все материалы: https://www.gamedev.ru/code/articles/ShadowMapGLSL Добавлено через 12 минут zayats80888, Добавлено через 27 минут В общем всем спасибо, я сделал так, у меня мир на куски разбит и перемещение источника света происходит не на координаты игрока, а на координаты начала этого куска, также я вернул диффузное освещение и теперь все выглядит статично, спасибо! Сейчас буду думать как сделать тень плавной при перемещении солнца, ибо дергаица
0
|
||||||||||||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 28.05.2020, 09:41 | ||
|
Хранить в векторной форме координаты вершин треугольников и двигать их как функцию от положения тела… но вот отбрасывать они никуда не будут. Зато красивые и быстрые.
0
|
||
| 28.05.2020, 09:41 | |
|
Нет теней Центрирование теней Построение теней Где можно почитать о создании теней Создание теней для объектов в OpenGL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|