Безумные идеи Моногатари
Oct. 3rd, 2003 01:08 pmТак как я сейчас делаю новый сериал (см. несколько последних записей
monogatari), у меня появилась идея написать программу, которая по заданному сценарию сама рисовала бы кадры комикса.
Прежде всего, нужно придумать язык описания сюжета. Мне кажется, это должно быть что-то объектно-ориентированное. То есть, для начала задаются объекты-сцены, участвующие в комиксе, как например: "Комната Гамлета", "Зал во дворце", "Лужайка" и т.д.
Потом объекты-персонажи: "Гамлет", "Полоний", "Тень отца Гамлета",...
У каждого такого объекта могуть быть свойства: самые важные из них - это из каких картинок состоит человек (голова, туловище, руки, ноги), и из каких картинок состоит сцена.
Другими свойствами могут быть "время суток", "время года" и тому подобное у сцен, а у людей это может быть, скажем, "настроение" или "действие". Так, если человек прислушивается, то голова его должна быть наклонена в сторону собеседника. Если он объясняет, то рука должна указывать куда-то.
Само собой, для кадров должен быть задан текст, который произносят персонажи, и программа должна уметь расположить его таким образом, чтобы не слишком закрывать рисунок.
Нужно также уметь задавать множество эвристик. Например, какие предметы должны стоять на столе, а какие на полу. Что должно висеть на стене, что человек может держать в руках. Если кто-то говорит по телефону, то программа сама должна вкладывать ему трубку в руку и прикладывать к уху.
Кроме того, она должна уметь задавать расположение предметов на оси Z, то есть, что на переднем плане, а что на заднем.
Обязательно нужно разрешить программирование "низкого" и "высокого" уровня. Причём "высокий" уровень может быть как угодно высоким. Вот что я имею в виду:
На низком уровне у меня должна быть возможность задавать, какие именно предметы я хочу видеть в той или иной сцене, на каких местах (возможно даже с помощью координат) и т.д. Я должен уметь задавать интенсивность освещения, шрифт текста речи персонажей и тому подобное.
На более высоком уровне, я могу писать просто "комната во дворце", а программа эвристическим путём должна подобрать подходящие картинки и расположить их соответствующим образом. Могу написать "ночь", и программа сама зажжёт свечи или лампы и нарисует месяц за окном.
Конечно же, необходима обширная база данных с картинками и эвристиками.
На ещё более высоком уровне я вообще не должен разбивать сценарий на кадры. Если я пишу, что "двое разговаривают по телефону", то программа может решить создать несколько кадров - один из комнаты первого персонажа с телефоном в руке и соответствующим текстом, второй - из комнаты второго персонажа с телефоном в руке и текстом и так далее. Конечно же, должна отслеживаться последовательность в использовании предметов. Если для одного из персонажей выбран красный телефон, то он должен оставаться с ним на протяжении всех кадров.
Программа также должна уметь выбирать подходящие ракурсы и "наезды камеры" или позволять указывать такие вещи в качестве hints.
Всё это я очень хорошо себе представил именно потому, что расписал свой сценарий по кадрам, а теперь на 80% выполняю чёрную работу - то есть леплю готовые персонажи на готовые сцены, изменяя ракурсы, некоторые предметы в комнате и время суток. Кроме того, большая морока изменять положение рук, ног, головы и тому подобного.
Я очень ясно вижу, что такая работа хорошо поддаётся объектно-ориентированному подходу и модульной архитектуре, то есть от низкого уровня описания к высокому.
Вот бы такой процесс автоматизировать - и тогда каждый сможет моментально реализовывать какой-нибудь свой сценарий.
no subject
Date: 2003-10-02 10:37 pm (UTC)no subject
Date: 2003-10-02 11:21 pm (UTC)no subject
Date: 2003-10-02 11:26 pm (UTC)Да, конечно, это возможно только на теоретическом уровне, сделать что-то по-настоящему серьёзное - это уже почти AI :)
no subject
Date: 2003-10-03 01:54 am (UTC)Начни с системы "под себя", не заморачивайся с "общим случаем" - скоро увидишь множество камней и методов их обхода. Все перепишешь. И так 7 раз :)
Я не уверен в реальности "самого общего подхода" - иначе мы докатимся до кнопки "закачать роман и смотреть комиксы по нему". Это примерно так же далеко от реальности как "сгенерить видео по сценарию".
no subject
Date: 2003-10-03 05:56 am (UTC)no subject
Date: 2003-10-03 05:08 am (UTC)no subject
Date: 2003-10-03 06:19 am (UTC)no subject
Date: 2003-10-03 07:24 pm (UTC)no subject
Date: 2003-10-04 07:50 am (UTC)no subject
Date: 2003-10-05 06:05 pm (UTC)Но я и не говорю, что можно генерировать интересные картинки. Это задача такого же уровня сложности, то есть разницы я никакой не вижу. Я же просто хочу описывать картинки, и генерировать их по описанию.