Войти
ФлеймФорумПроЭкты

«Фантазёр» - язык разметки мультфильмов

#0
(Правка: 1 апр. 2018, 17:51) 13:41, 22 мар. 2018

«Фантазёр» - язык разметки сценок комиксов для случаев, когда быстренько надо сделать набросок идеи, но некогда заниматься прорисовкой сцены комикса.

«Фантазёр» - пробный проект описания мультяшных процессов на базе модифицированного движка «Глазури»…
«Фантазёр» использует специальный язык разметки анимационных сцен, в которых описываются в общих чертах как действия отдельных персонажей, так и процессы или явления погодных катаклизмов, например… В отличии от множества существующих студий создания 2D/3D анимации, где используется в основном строгий императивный подход, «Фантазёр» задуман именно как симулятор сценических процессов, где каждый из участников сцены имеет некоторую степень «свободы воли» и всё происходящее на экране в некоторой степени непредсказуемо и при каждом перезапуске будет проигрывать несколько различные результаты…
«Фантазёр» не использует в сценарии строгих указаний на использование каких-либо вычислительных действий…
«Фантазёр» относится к той категории программ, когда компьютер сам пытается фантазировать на тему, описываемую пользователем в комикс-сценарии.

Суть языка в том, чтобы не тыкать бесконечно мышкой в лабиринте ключевых сцен, а в наброске некоторого сценария действий и взаимодействий персонажей и объектов в целом.
В принципе, подобно квестам ШтЫрлиц или Grandad 2, только «наизнанку» («игрок» - программист-сценарист сюжета)…
Если подобных студий не существует, в этом теме планируется развивать синтаксис языка…

За основу мною взят GRASP с императивным описанием сцен с БЕЙСИК-подобным синтаксисом, так как наиболее подходит к концепции невизуального программирования анимации.
Сценарии описываются синтаксисом «Глазури»:

Сцена первая: Сюрпризы погоды --- вся строка является комментарием
1$ 0:01:30⇥     Длительность - 1 минута 30 секунд --- комментарий отделён вторичной табуляцией
⇥       Погода⇥ Используется внешний файл модуля синтеза погодных условий
⇥       ⇥       облачность 25-45%⇥      ⇥       устанавливаем облачность от 25% до 45% влажности
⇥       ⇥       1:30-3:30 стабильность⇥ ⇥       случайная стабильность погоды
⇥       ⇥       ветра_порывы 3-5m/s⇥    ⇥       порывы ветра от 3 до 5 метров в секунду
⇥       ⇥       дождя_осадки 1-2mm/s⇥   ⇥       осадки дождя от 1мм до 2мм в секунду
⇥       ⇥       2:00-3:00 продолжение⇥  ⇥       продолжение симуляции погоды от 2 до 3 минут
⇥       ⇥       ветра_порывы 1m/s⇥      ⇥       стабилизируем ветер
⇥       ⇥       дождя_осадки 1mm/h⇥     ⇥       осадки дождя ровно 1мм в течении часа
⇥       Город⇥  Используется внешний файл модуля организации городской обстановки
⇥       ⇥       траффика_аварии 1-5/h⇥  ⇥       аварии на дорогах в количестве от 1 до 5 в час
⇥       ⇥       траффика_смертность 0-1/h⇥      возможна единственная жертва
⇥       ⇥       забастовок_уровень 1-3/h⇥       могут быть от 1 до 3 разных забастовок где-то
⇥       Вася_Пупкин⇥    Управляем нашим героем
⇥       ⇥       жизни_угроза 0%⇥⇥       ⇥       устраняем риск попадания в аварию
⇥       ⇥       ехать_автобусом⇥⇥       ⇥       герой едет в автобусе маршрутом, указанным ниже
⇥       ⇥       4:00-5:00 продолжение⇥  ⇥       светофоры и ситуация на дорогах задержат его путь
⇥       ⇥       работать 75-100%⇥       ⇥       работать в офисе по приезду на все 75-100%
⇥       Вася_Пупкин⇥    Управляем настроением героя
⇥       ⇥       Погода.стабильность?⇥   ⇥       ожидание, пока погода стабильна
⇥       ⇥       злость 5-25%⇥   ⇥       ⇥       испытывать злость 5-25% от изменений погоды
⇥       ⇥       $1⇥     ⇥       ⇥       ⇥       возвращаемся на строку ожидания изменений погоды
На данный момент движок рисует небо с учитыванием сезонных особенностей оттенков рассветов и закатов, изменяет высоту солнца над горизонтом в зените, отрисовывает облака или тучи с дождём. Движок также рисует человечков, двигает их руками и ногами с использованием инверсной кинематики.
Планируется ввести отрисовку лугов, лесов, озёр, рек, деревни, мостов, города, транспорта, комнат и т.д…
А также, различных животных, птиц, рыб и насекомых…

Например, вот такой коротенький мультик Изображение проигрывался прямо на страничке редактора Изображение и захватывался с экрана в потоковое видео.
Если задействовать gif-библиотеку, то можно относительно просто автоматически сгенерировать gif-анимашку. Однако, требуется много ресурсов памяти и производительности. На практике, комикс размером 640x480 при запаковке в gif'ку просто невозможно нормально получить. Требуется снижать размер кадра…

P.S.: Торопился к 1 апреля и сильно устал… Многие вещи заняли уйму времени в отладке. Например, формирование красивых облачков или «обратная кинематика» рук человечков потребовала несколько часов отладки, что не позволило уложиться в срок и реализовать множество задуманных вещей. Таких, как трава, озеро, транспортный трафик или урбанизм…
P.P.S.: Когдa-то я думал, что установка 3D-Studio поможет создавать, пусть не крутую, но более-менее сносную анимацию. Однако, дальше технических роликов и обустройства комнат перед ремонтом дело не продвинулось.
Ставил всякие другие студии, но всё как-то не удалось в них освоиться.
Про флэш-анимацию - вообще молчу, так как Macromedia оказалась слишком тормознутой (против 3D-MAX) и тяжёлой к освоению.
Когда очень надо, просто запускаю MS Comic Chat в эмуляторе… А после - тупо в Paint окрашиваю… Но, это единичные случаи.
Но, когда освоился более-менее с Max-Scripts, то заметил, что анимацию в скриптах создавать легче и интереснее (вот одна из первых удачных)…
P.P.P.S.: В продолжение поддержки старых добрых технологий и идей, как «MS Comic Chat», «GRASP» и «Designer's Pencil», а также и многих других подобных…


#1
(Правка: 23 мар. 2018, 9:42) 13:42, 22 мар. 2018

Синтаксис


Подобно «Python», разметка базируется на отступах и является развитием «Глазурь-скрипта», так как принципиально продолжает идею «Глазури» от моргания сценария индикаторами на клавиатурах до «моргания» светофорами на виртуальных дорогах…

Числовые величины и интервалы


Числа могут указывать:

Разметка блок-структур


Блочные отступы в строках достигаются использованием символов табуляции. Причём, табуляция может быть «первичной» и «вторичной».
Первичная табуляция определяет уровень блочной вложенности операторов и начинается всегда с новой строки.
Вторичная табуляция отделяет операторы от комментариев, которые следуют далее.

Разметка временных интервалов


Каждый из блоков может иметь свою временную шкалу.
Так, «0:10» или «1:30» означает паузу в 10 секунд или 1 минуту 30 секунд, а «0:45-1:20» означает случайный интервал от 45 секунд до 1 минуты 20 секунд…

Когда нужно выполнить синхронно несколько действий в разных блоках с использованием случайного интервала, можно использовать имя метки или группу меток, определяемых шаблоном, обозначаемых символом «@» (циферблат).
Так, «0:15-0:45 изменение_погоды@»…

Раскадровки

#2
(Правка: 16:41) 13:42, 22 мар. 2018

Персонажи


Каждый из персонажей, помимо кучи gif-/svg-файлов под каждое действие или эмоцию, описывается отдельным файлом логики примитивов поведения.
Допустим, «удивление», «испуг», «раздражение», «злость», «усталость» и т.д. - это не только визуальное представление, но и описание факторов, от которых эмоции могут как кратковременно возникать («головная боль», «зубная боль», «отбитый палец») так и определать более продолжительное изменение его поведения («яркая простуда», «приличный ожог», «терпимый геморрой» и т.д.) или даже совсем изменять его характер («психическое растройство», «затяжная депрессия», «необратимое весёлое безумие», «инфаркт или инсульт» и т.д.)…
Так, если у персонажа имеется недуг «одышка», то ему свойственно после затяжных прогулок или краткой пробежки хвататься за грудь и тяжело дышать, когда счётчик недужности хорошенько накрутился… Специальными пилюлами его можно сбросить. Причём «пилюлами» могут служить как событие («родился сын», «получил повышение», «злой сосед утонул» и т.д.), так и «всяко разно» («кусок пирога», «палочка шашлыка», «обострение диареи», «романтическое рандеву» и т.д.)…
#3
13:42, 22 мар. 2018

reserved

#4
(Правка: 16:40) 16:39, 22 мар. 2018

reserved

#5
16:39, 22 мар. 2018

Синтаксис


Подобно «Python», разметка базируется на отступах:
+ Фильм

Раскадровки

#6
16:56, 22 мар. 2018

reserved
Список багов

#7
16:56, 22 мар. 2018

eserved
Лента новостей

#8
(Правка: 1 апр. 2018, 14:10) 20:41, 25 мар. 2018

С помощью специальной библиотеки можно генерировать gif-анимацию прямо в браузере.
Страничка проекта.

Мультик на 1 апреля:


Процесс генерации:

Кто пользовался «Глазурью» хоть разок, сразу поймёт, что этот «движок» - переделанная «Глазурь», так как делал всё быстро и в попыхах!

P.S.: Это убогий альфа-вариант лишь для того, чтобы продемонстрировать, что я имел ввиду и что хочу сделать!
Даже название пока не придумал…
Но, как я уже сказал, идея подобна «текстовым квестам», как Zork или Хоббит. Но, пользователь не играет, а составляет сценарий.
Компьютер же - напротив, синтезирует графическую сцену и анимирует её…
Вот что в конечном итоге я бы хотел добиться с экспортом в SVG, например.

#9
20:53, 25 мар. 2018
Alikberov
Ты слишком крут для этого сайта.
Прошло более 10 месяцев
#10
19:27, 24 янв. 2019

Я подобный разметочный язык писал ещё в бородатом 16-м. Там суть была в том что бы читать тексты правильно отформатированных пьес и делать из них примитивные спектакли. Бросил. Решил уйти в моделлинг. А теперь понятно что это Титаник.

#11
14:49, 25 янв. 2019

*Lain*
> Ты слишком крут для этого сайта.
+1

#12
15:20, 25 янв. 2019

#13
11:34, 18 мая 2019

Хoть «Фантазёр» слегка и подмёрз, но идеально было бы в перспективе в него интегрировать НеДоТрекер, чтобы оригинальную мелодию


можно было текстом набрать упрощёнными аккордами в таком духе:

ФлеймФорумПроЭкты