Russian Qt Forum
Ноябрь 01, 2024, 07:28
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Поверхность моря
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Поверхность моря (Прочитано 7300 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Поверхность моря
«
:
Декабрь 25, 2014, 11:16 »
Добрый день
Навеяно этим
Цитата: ibnz от Октябрь 20, 2014, 16:24
Надобно отобразить бесконечную водную поверхность (желательно не статичную)
Мне кажется - интересная задача. Как же ее нарисовать? Тащить текстуры и всю "кухню" - толку мало, поверхность-то бесконечная, да еще и не статичная. Не, ну конечно на океанские волны мы не претендуем, но просто спокойную поверхность с какой-то рябью и бликами - неужели это так сложно? Что предложите?
Спасибо
Записан
DarkHobbit
Самовар
Offline
Сообщений: 194
Re: Поверхность моря
«
Ответ #1 :
Январь 05, 2015, 02:05 »
В качестве затравки можно посмотреть
исходники клиента Second Life
. Если я правильно понял, оно там сделано на шейдерах. Море не очень сложное, скорее, штилевое, но красивое.
Это картинка, не видео, но можете поверить - оно динамическое. Скриншот не с самого официального клиента, а с одного из его форков, kokua, но в части поверхности моря у них вроде бы всё одинаково.
Записан
Мои проекты на Qt:
DoubleContact
,
LInvert
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Поверхность моря
«
Ответ #2 :
Январь 05, 2015, 09:00 »
Цитата: DarkHobbit от Январь 05, 2015, 02:05
В качестве затравки можно посмотреть
исходники клиента Second Life
. Если я правильно понял, оно там сделано на шейдерах.
Ну изучение исходников нельзя назвать дешевым/простым решением, скорее наоборот. Вообще в последнее время слово "ШЕЙДЕР" звучит прямо-таки с мистическим оттенком. Типа вышак к которому должны стремиться
Но, насколько мне известно, это всего лишь callback, сам по себе он ничего не делает. Программист писавший шейдер моря наверняка имел теорию, др словами просто знал как шейдить. Так не отшейдить ли самому - вместо трудоемкого ковыряния в чужом коде?
И зачем здесь OpenGL? Вот если бы надо было рисовать напр черную курточку героя - тогда да, минимум нужна модель. Но море - просто бесконечная плоскость, что мешает нарисовать его в QImage по пикселям? И даже с приличным fps
Записан
DarkHobbit
Самовар
Offline
Сообщений: 194
Re: Поверхность моря
«
Ответ #3 :
Май 09, 2015, 12:23 »
Цитата: Igors от Январь 05, 2015, 09:00
И зачем здесь OpenGL? Вот если бы надо было рисовать напр черную курточку героя - тогда да, минимум нужна модель. Но море - просто бесконечная плоскость, что мешает нарисовать его в QImage по пикселям? И даже с приличным fps
Ну вот в практическом приложении, каким является SecondLife, нужно нарисовать и то, и другое, причём на одной сцене
А с тем, что не стоит придавать слишком уж большое значение "волшебным словам" вроде шейдеров, я согласен. Это просто способ описания. Ставший, тем не менее, практически стандартным.
Записан
Мои проекты на Qt:
DoubleContact
,
LInvert
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Поверхность моря
«
Ответ #4 :
Май 09, 2015, 13:44 »
Цитата: DarkHobbit от Май 09, 2015, 12:23
Ставший, тем не менее, практически стандартным.
Вот и удивляюсь как же он стал "практически стандартным" если о собственно шейдинге никто и не слыхал? Ну давайте хоть что-то отшейдим - ответил аж один человек и то, посоветовал изучать "великую игру"
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Поверхность моря
«
Ответ #5 :
Июнь 10, 2015, 00:44 »
не люблю шейдеры. считаю это "поворотом не туда" в 3д графике...
Записан
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: Поверхность моря
«
Ответ #6 :
Июнь 10, 2015, 06:13 »
Цитата: Racheengel от Июнь 10, 2015, 00:44
не люблю шейдеры. считаю это "поворотом не туда" в 3д графике...
НУ вообще-то никакого поворота не было, "процедуральные текстуры" всю жизнь были. Просто OpenGL извратил это до полной неузнаваемости
Записан
Hrundel
Гость
Re: Поверхность моря
«
Ответ #7 :
Июнь 10, 2015, 22:00 »
Цитата: Igors от Июнь 10, 2015, 06:13
Цитата: Racheengel от Июнь 10, 2015, 00:44
не люблю шейдеры. считаю это "поворотом не туда" в 3д графике...
НУ вообще-то никакого поворота не было, "процедуральные текстуры" всю жизнь были. Просто OpenGL извратил это до полной неузнаваемости
Ну, почему извратил. Шейдеры были реализованы исключительно для GPU. Очень быстро работают и этим они и прекрасны. Я дипломную по шейдерам писал - очень понравилась концепция. Реализовывать бывает жесть как геморойно. Но это в зависимости от задачи. Правда если быть честным, не затянуло. Написал дипломную и забыл.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Поверхность моря
«
Ответ #8 :
Июнь 11, 2015, 00:17 »
Дык, ассемблерный код тоже очень быстро работает. А если еще и симды впрячь - так вообще песня
Только кодить на таком уровне жуть как уже неохота (хотя иногда и нужно бывает - компайлеры не идеальные в смысле параллелизации). Вот с шейдерами примерно так же, только еще и концепт "через задницу", пардон. Именно что "Реализовывать бывает жесть как геморойно"
Записан
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: Поверхность моря
«
Ответ #9 :
Июнь 11, 2015, 10:26 »
Цитата: Hrundel от Июнь 10, 2015, 22:00
Ну, почему извратил. Шейдеры были реализованы исключительно для GPU.
Году эдак в 93-94 шейдеры уже писались вовсю (хоть для того же 3ds), а многие (включая меня) и не слыхали о GLSL, Да и OpenGL помнится был под вопросом - надеялись на QuickDraw3D
Цитата: Racheengel от Июнь 11, 2015, 00:17
Вот с шейдерами примерно так же, только еще и концепт "через задницу", пардон. Именно что "Реализовывать бывает жесть как геморойно"
Совершенно верно, программирование на GLSL "очень специфично" (мягко говоря). Но ведь туда лезть никто не заставляет. Думайте проще - вот есть просто "картинка" (QImage) и мне надо как-то ее нарисовать. В данном случае чтобы выглядела как поверхность моря. Как это сделать? Ну а нарисовать плоскость в перспективе можно и без OpenGL. А потом уже (может быть) перевести на GLSL - это как раз техническая часть работы, там есть много специалистов. Было бы что переводить, т.е. "содержательная часть".
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...