Вверх ↑
Этот топик читают: Гость
Ответов: 632
Рейтинг: 4
#1: 2020-10-10 23:59:22 ЛС | профиль | цитата
Доброе время суток. Давно думаю как текст перевести в иллюстрацию. Недавно делал схему генерация маршрутов и мне пришла идея, как и на чём основать программу "Генератор иллюстраций". Самый простой способ оказался создание заранее готовых шаблонов. Причем мне кажется, что на один образ (действие) лучше иметь большой набор шаблонов, а решение какой использовать будет решать генератор случайных чисел. Сам используемый шаблон тоже не должен идеально рисоваться, а некоторые отличия должны быть. Это отличия шаблонов я уже сделал, использовал генератор случайных чисел, каждая точка может отличатся от оригинального шаблона. Выглядит не совсем так как хотелось бы.
Случайность шаблонов и эталон
Случайность шаблона
Эталон

От линии до многоугольника
Когда задумку начал оформлять в схему, я решил попробовать использовать линии. Когда иллюстрация усложнилось, было понятно, что если шаблоны будут внутри залиты цветом, иллюстрация выглядит лучше.
Сравнение старой схемы и новой
Старая схема и программа. https://cloud.mail.ru/public/2gsV/5wWYgvMYS
Новая схема и программа. https://cloud.mail.ru/public/27oE/57YVg29JR

Оптимизация
При внимательном осмотре схемы, видно что очень многое можно оптимизировать, уменьшить количество элементов. Сколько раз пытался некоторые очевидные места заменить. 4 math, 5 mathparse, 6 fastmathparse использовать всего 2 элемента. Программа перестает вообще работать или работает не так как запланирована. В программе есть очередность, если говорится сначала про небо, а потом про дерево, тогда небо будет выступать как задний фон для дерева, если наоборот сначала дерево, а потом небо, то дерево будет выступать как задний фон для небо, а небо полностью верхушку дерева закроет. В некоторых местах проще алгоритм я не знаю, но догадываюсь, что те кто опытней меня знают. Программа сложная и уникальная, даже похожих не видел.
Оптимизация

Контейнер шаблонов (Трава = травинка слева, травинка справа)
Кроме шаблонов ещё можно использовать контейнер шаблонов, то есть если мы напишем "звезда", то будет одна звезда, а если напишем звезды, то это контейнер. В каждом контейнере, перечислены шаблоны, местоположения их, цвета. Попытался контейнеры реализовать, но не совсем все работает так как в теории хотелось. То есть если использовать один контейнер и ничего больше не писать, то все работает как задумано, а если текст состоит не из одной травы, то уже происходят ошибки. Контейнеры будут полезны для увеличения деталей на некоторых шаблонах. Если напишем "дом", то будет облик дома, но сам дом без окон и без дверей. Если дом оформить в контейнер "дом", то вместо перечня "рама_окна, окно, дверь, ручка_двери, печная_труба", программа в таблице найдет ключ и нарисует детали дома. Если написать "ручка двери", то программа не нарисует ручку двери, потому что программа все слова перебирает через пробел, а словосочитание "ручка_двери" не будет найдено, если в списке ключей записать через пробел. Это проблема, которую нужно решить. Если сократить словосочетание до "ручка", то как программе понять какая эта ручка, дверная или шариковая?
Контейнер шаблонов
Без контейнера

Создание нового шаблона
Для создания нового шаблона в программе сделана галочка "рисуем". Если поставить галочку "рисуем", откроется окно, там будет список координат будущего шаблона, чтобы их нарисовать нужно поставить галочку "Окно визуализации" и в открывшемся окне рисовать будущий шаблон.
Создание нового шаблона
Универсальность шаблонов

Озвучка текста
У меня реализована озвучка текста через сайт http://5btc.ru/voice/ . Пока в отдельной программе.
Программа и схема. https://cloud.mail.ru/public/2dF4/hCvExacpV
1. Дополнительные компоненты. https://cloud.mail.ru/public/5eFA/3Q6j7Fo2N
2. Дополнительные компоненты. https://cloud.mail.ru/public/3GnX/3cT7PeeQS

Программа рисует хорошие иллюстрации
В итоге думаю сделать некую анимацию. То есть дается программе текст и она рисует иллюстрации. Каким-то методом она определяет законченность иллюстрации, переходит к новой иллюстрации. Возможно по абзацам, но скорее всего есть более правильное решение определения готовности иллюстрации.

Программа сгенерирует мультик
Когда программа будет показывать иллюстрации, сохранять их, она будет читать текст, сохранять озвучку. Программа готовые иллюстрации сохранит в видео с озвучкой. Сделать это можно с помощью FFmpeg, через командную строку. То есть текст прочитан, иллюстрации все показаны, сразу программа посылает через командную строку FFmpeg "Превратить набор картинок в видео (ffmpeg -f image2 -i image%d.jpg video.mpg)" и "Добавить звук к видео (ffmpeg -i son.wav -i video_origine.avi video_finale.mpg)".
ffmpeg https://cloud.mail.ru/public/2oQq/46WhBQqpu

Архив с программой, схемой, компонентами, скриншотами и ffmpeg. https://cloud.mail.ru/public/3Hi8/52GQBerfr
Распакованный архив. https://cloud.mail.ru/public/2fcu/5rs8fcdtr
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 2059
Рейтинг: 131
#2: 2020-10-11 02:11:04 ЛС | профиль | цитата
В качестве примера-шутки.
https://yadi.sk/d/p9fbeHknIyGJhw - генератор деревьев для леса (жать пробел).
https://yadi.sk/d/OQWUw8hJxewZwQ - Генератор сюжетной линии
https://yadi.sk/d/sPnOlWPeFVvT0Q - Генератор карт фентезийных миров.
https://yadi.sk/d/10tE0Idlg4mOIw - фрактальный генератор цепи островов в океане, с помощью шума Перлина.
https://yadi.sk/d/JqHKT7OSupO8bg - Генератор карт локаций для рогаликов.
https://yadi.sk/d/kJy-Y9DeTPiCMg - 3D генератор голов (Мультимординг) кнопки F1...F5 и стрелочки.
https://yadi.sk/d/Dgn5UVRg2TGFUA - Генератор Normal и Height анимированной водной поверхности
https://yadi.sk/d/Rw8EJQ_SXpJguA - генератор туннеля без шейдеров.
https://yadi.sk/d/OlRYQIH72QIXjg - генератор процедурных текстур. пример использования: TFScript.exe Ground.tfs получаем текстуру Ground.tga
Если интересно, то у меня есть более 200 генераторов на разные темы.
Даже есть генератор рассказов в стиле sci-fi (пока в работе). Вот примеры текстов:
https://yadi.sk/d/TPD_Oce35VXq4g и https://yadi.sk/d/P0dUpqLanZEWTw
Хочу приспособить его для генерации сюжетов и диалогов для игрушек.
И если удачно проголосуют, https://gamedev.ru/projects/forum/?id=255353 (я седьмым номером иду) то сделать игрушку с рандомным сюжетом, локациями, квестами и диалогами.

Редактировалось 6 раз(а), последний 2020-10-11 02:22:29
карма: 6

1
Голосовали:Konst
Ответов: 632
Рейтинг: 4
#3: 2020-10-11 18:27:35 ЛС | профиль | цитата
flint2, все посмотрел и все понравилось. Потом решил подумать, что и для чего может пригодиться для "генератора иллюстраций по тексту".

Генератор сюжетной линии можно использовать как генератор текста. Из прошлой не решённой темы вы говорили о генерации текста по шаблону. Можно в программе сделать генерацию текста и сразу его иллюстрировать.
шаблон
|25 21 19 1 46 35||26 24 21 19 1 35||4||25 21 19 3 35|и|25 21 19 3 35|,что|25 22 19 1 35||40 37 35 31 19 2 22 21 23 41|на|28 22 20 1 35|.
Голова рыбины настолько неприятная и злобная, что яд стекает на зубы.

Генератор деревьев для леса, если можно быстро его приспособить для любого шаблона (генератор дома, травы, звезды и любые другие) использовать для создание 3D шаблонов, тогда можно создавать 3d иллюстрации. Если как-то можно добавлять анимацию любому объекту (например: шевеление листьев на дереве), то тогда можно будет генерировать 3D полноценные мультфильмы.

Мультимординг, возможно, может пригодиться для генерации персонажей иллюстрации.

Зашел на сайт gamedev.ru, нашел тебя, но не понял как проголосовать.
карма: 0

0
Ответов: 2059
Рейтинг: 131
#4: 2020-10-11 20:35:04 ЛС | профиль | цитата
Vadimluk1 писал(а):
Зашел на сайт gamedev.ru, нашел тебя, но не понял как проголосовать.

Там только участники конкурса могут голосовать.
----------------------------------------------------------
Скоро выложу компоненты для написания генерации рассказов.
1. Компонент склонение, спряжение всех существующих слов.
Например по такому шаблону:
шаблон
25 21 19 1 46 35||26 24 21 19 1 35||4||25 21 19 3 35|и|25 21 19 3 35|,что|25 22 19 1 35||40 37 35 31 19 2 22 21 23 41|на|28 22 20 1 35|.
2. Компонент Создание генерация сюжета по заданным (сеттинг) параметрам, по формуле.
3. Создание фабулы по формуле сюжета.
4. Компонент лингвистической модели смысл<=>текст.
5. Тезаурус смысловых понятий в виде дерева - база для SQLite.
6. Генератор диалогов по ситуациям. С элементами вот этого https://nickm.com/curveship/
7. Компонент нейросети с обратным распространением ошибок.
Есть ситуации с омонимией:
пример
знать=знати,знати,знать,знатью,знати,знати,знати,знатей,знатям,знати,знатями,знатях,знатях
и
знать=знал,знала,знало,знали,знаю,знаешь,знает,знаем,знаете,знают,знающий,знающего,знающему....
знавшиеся,знавшихся,знавшимся,знавшиеся,знавшимися,знавшихся,знавшихся,знавшеюся,знавшись,знаясь,знайся,знайтесь,
Но вроде задачу решил.
Когда всё доделаю, так выложу.

Редактировалось 8 раз(а), последний 2020-10-11 21:00:07
карма: 6

0
Ответов: 8886
Рейтинг: 823
#5: 2020-10-16 13:06:44 ЛС | профиль | цитата
flint2 писал(а):
есть генератор рассказов в стиле sci-fi
Показал эту пару набросков внучке (она лингвист) на рецензию
"Ближе к графоману, чем к писателю. Ошибки есть, да и женщина говорит не по-женски, а как мужчина."
Удивилась, что написано программой. Надо чуть подшлифовать
карма: 19

0
Ответов: 2059
Рейтинг: 131
#6: 2020-10-16 14:33:28 ЛС | профиль | цитата
Леонид писал(а):
Ошибки есть

Есть такое дело, нужна вычитка. Много опечаток в словаре склонений и шаблонах.
А возможно ошибки и из-за того, что не верно соединяются корни, окончания и суфекесы.
Потому, что вот это применял: https://yadi.sk/d/jH7F-krgw9huSg
Сейчас переделываю спрягатель\склонятель на других принципах.
Скоро выложу, неплохо-бы потестировать и указать мне ошибки!
Ближе к графоману, чем к писателю.

Ну во первых, сценарий это не книга, а сценарий для игры это сценарий не для фильма, тут свои законы и правила, причём для каждого жанра свои.
(Если интересно, могу выложить много хорошей литературы и статей по этой теме).
(Сценарий это не сюжет и не фабула и тем более не рассказ).
Соглашусь, что стилистика, это отдельная тема...
Тут куда не копни - всё глубокая тема и белые пятна на карте.
Одна тема понятий чего стоит и по объёму данных огромна + модели смысл<=>текст.
Думал, что генерация сценариев легко дастся - куда там...
До сих пор пилю.
Но кое чего уже работает. Уже две игрушки две команды пилят по моим сценариям и генератором диалогов и квестов(заданий).
Генератор диалогов по ситуации тоже terra incognita.
Всё что есть в этом направлении в сети - примитивно и вызывает только улыбку. Принципиально не тот подход к проблеме.
Хочу сделать РПГ, рогалик, или текстовую новеллу с генерацией сюжета при каждом начале новой игры.
По этому пилю игровой(а не просто графический) движок, что тоже тормозит основную разработку.
Но перемена задач даёт башке отдохнуть и посмотреть на проблему с другого ракурса.

Редактировалось 1 раз(а), последний 2020-10-16 14:36:55
карма: 6

0
Ответов: 8886
Рейтинг: 823
#7: 2020-10-16 15:09:59 ЛС | профиль | цитата
flint2, удачи и новых идей в работе!
карма: 19

0
Ответов: 2059
Рейтинг: 131
#8: 2020-10-16 16:01:29 ЛС | профиль | цитата
Спасибо Леонид!
карма: 6

0
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)