qwertyMAN 1 723 Опубликовано: 13 июня, 2020 (изменено) Добрый день, надеюсь не забыли обо мне! А я пришёл вам новую программу показать Давайте разбираться... Скрытый текст Пример работы: симуляция магнитного поля между двумя полюсами Описание: Программа написана на языке программирования lua и работает на движке love2d Визуализация использует GLSL шейдеры версии 3 Для хранения работ используются отдельные файлы с шейдерами, чтобы не трогать весь код программы Кнопки внизу экрана скрываются до наведения на них мышкой Кнопки хранятся как объект со своими функциями и свойствами внутри. И вкладываются в массив инструментария Скрытый текст Пример работы: волны искажений Возможности: Навигация и/или зуммирование на колесо мыши Несколько типов анимации. (на кнопку включается анимация движения волн, остальные типы пишутся в шейдерах) Сохранение кадра Сохранение анимации Настройка "шага волны" и скорости течения времени кнопками (обязательно необходимо для построения кадра) Видеообзор: Скрытый текст Готовые gif анимации: Рисунок электромагнитных полей: Скрытый текст Волновые искажения: Скрытый текст Цветные иллюзии: Скрытый текст Иллюзия в том, что кружков (кроме двойного) нет. На этих участках случайно совпадают цвета Прочее: Скрытый текст Обычные рисунки: Эксперименты над волнами: Скрытый текст История версий: Скрытый текст Первая версия: Я собирался написать шашки или шахматы. Сделал алгоритм рисованием шахматной доски. И в целях эксперимента вдруг обнаружил, что мой алгоритм может рисовать куда более интересные рисунки помимо шахматного узора. И тут понеслось... Я прикрутил небольшую Unix подобную консоль со всякими фишками вроде подсказок и автоввода, считая что консоль намного удобнее UI (как же я тогда ошибался) Консоль позволила в самой игре вводить формулы которые будут рисоваться, ввести цвет градиента. и прочее. Но сама игра оставалась очень примитивной. Она тормозила до 1-2 FPS из-за того, что все пиксели на экране высчитывались на ЦП в реальном времени Вторая версия: Переписал с нуля. Прикрутил отображение на канвасах. То есть теперь рисунок рисовался лишь раз, а дальше просто выводилась уже нарисованная картинка. Что давало больше 60 FPS при отображении. Но на генерацию новых картинок уходило много времени. Я даже сделал экран загрузки, чтобы видеть прогресс генерации анимации. Тогда и появились первые анимации с возможностью их сохранять в png. Чтобы потом склеить в gif. Но на этом все возможности программы заканчивались. Они была без консоли и UI. И именно эта версия была утеряна. Третья версия: Текущая! Опять с нуля переписал. Изначально писал игру "сапёр" с возможностью создавать свои правила игры. В основном для тестирования алгоритма ИИ который я хотел проверить. А потом понял что моя система навигации идеальна для моего старого проекта по визуализации и не стал реализовывать сапёра. Теперь камеру можно поставить в любую точку куда захочу! Добавил кнопочки и куча функций которые они могут выполнять. Добавил всплывающие подсказки! И самое главное - прикрутил шейдеры GLSL. Четвёртая версия: На самом деле я её уже начал писать. Реализовал окошки, систему загрузки модификаций и логирование в консоль каждого действия. Добавил поддержку кастомных изображений курсоров. (пока что только один) Ограничил FPS для меньшей нагрузки на комп. FPS тут искусственно ограничен до 60, но счётчик как-то по своему считает этот показатель Реализую более гибкую систему кнопочек. (в love2d движок нужно писать самому, тут ничего такого нет) Будет как минимум второй режим отображения, где можно будет расставить объекты на поле, которые будут передавать свои координаты на шейдеры для обработки Будет более гибкая система сохранений, с возможностью использовать например предустановленные настройки. Которые позволят посмотреть интересные места на поле без долгих поисков. Будут на кнопочки реализованы разные надстройки над шейдерами. Например: используемые цвета, используемая функция размытия волн. Кто-то тут может сказать: "а где ссылка на программу?" А её и не будет пока не реализую нормальную систему сохранений. Почему тогда я выкладываю недоработку? Потому что мне нужно рассказать о проекте для резюме. Это моя лучшая программа и я её люблю. Оттягивать нет смысла, первая версия разрабатывалась ещё полтора года назад. А значит до релиза четвёртой ждать ещё неизвестно сколько. Так что спасибо за внимание! Если вдруг кому-то тема визуализации так же интересна как и мне - пишите в ЛС. Было бы интересно обсудить. Изменено 14 июня, 2020 пользователем qwertyMAN Установка спойлера 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN Автор темы 1 723 Опубликовано: 13 июня, 2020 Поздравьте с тысячной публикацией!!! Скрытый текст 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hohserg 197 Опубликовано: 13 июня, 2020 В видеообзоре стоило бы показать как вводится формула и как от этого изменяется изображение Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 13 июня, 2020 37 минут назад, qwertyMAN сказал: Кто-то тут может сказать: "а где ссылка на программу?" А её и не будет пока не реализую нормальную систему сохранений. Жаль, что нет кода. В давние времена, когда я интересовался темой процедурной генерации графики, вдохновлялся этим сайтом http://arbuz.uz/x_vernisag.html 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN Автор темы 1 723 Опубликовано: 13 июня, 2020 (изменено) 38 минут назад, hohserg сказал: В видеообзоре стоило бы показать как вводится формула и как от этого изменяется изображение Добавлять консоль в новую версию - глупость, а старую прогу дорабатывать ради видео - провальная идея. @eu_tomat спасибо большое, эта статья по сути то что я делал. Но с разделением на цвета более плавно: http://arbuz.uz/s_uravnenie.html (скажу по секрету - такой стиль окраски можно будет скопировать и использовать как настройку стиля рисовки в четвёртой версии программы) Код рисунков как видишь не сложный. Более интересно было с математической точки зрения реализовать правильное зуммирование в моей проге. И я эту задачу решил! Я думаю как-нибудь видео по этой теме сделаю. Люблю объяснять решение математических задач в программировании. Кстати, может знаешь, может кто-то уже сделал такую программу как у меня с удобным управлением? Я видел в интернете всякие шейдеры и визуализаторы фракталов с маленьким экранчиком в браузере. Но такая штука нисколько не удобная и не интересная. По этому и взялся за написание своей программы и доволен результатом! Хоть они и не идеальна. Зато работает! Изменено 13 июня, 2020 пользователем qwertyMAN Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hohserg 197 Опубликовано: 13 июня, 2020 28 минут назад, qwertyMAN сказал: Добавлять консоль в новую версию - глупость, а старую прогу дорабатывать ради видео - провальная идея. Т.е. нельзя визуализировать произвольную функцию? В чем тогда смысл? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 13 июня, 2020 42 минуты назад, qwertyMAN сказал: Кстати, может знаешь, может кто-то уже сделал такую программу как у меня с удобным управлением? Я видел в интернете всякие шейдеры и визуализаторы фракталов с маленьким экранчиком в браузере. В те времена, когда эта тема была мне интересна, не встречал. Сам я писал визуализатор фрактала Жюлиа на HTML/JavaScript. В полный экран рисовал, но параметры я задавал через поля формы и адресную строку браузера. То есть, на управлении я не заморачивался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN Автор темы 1 723 Опубликовано: 13 июня, 2020 @eu_tomat @eu_tomat вот кстати поигрался с этой раскраской из статьи. По сути раскраска - стиль. И его можно будет применять к любой работе. Однако сейчас моя прога не поддерживает такое и нужно всё в одном файле прописывать. Скрытый текст 14 минуты назад, hohserg сказал: Т.е. нельзя визуализировать произвольную функцию? В чем тогда смысл? Смысл в том, что я постараюсь в новой версии учесть это и реализовать УДОБНЫЕ сохранения. Ты по сути пишешь один файл где творишь что хочешь (почти) А потом программа читает этот файл и всё реализует. Неужели ты думаешь, что одной формулой тут всё ограничивается? Так было только в первой версии. Но алгоритмы сейчас куда длиннее. Анимация выше - 27 строк кода. По факту 15 из них отвечают за сами вычисления. А добавлять текстовый редактор в свою программу я не собираюсь. Да и не нужно это. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hohserg 197 Опубликовано: 13 июня, 2020 2 часа назад, qwertyMAN сказал: Ты по сути пишешь один файл где творишь что хочешь (почти) А потом программа читает этот файл и всё реализует. https://www.shadertoy.com/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах