Как я заявлял в ВК, клип на "Годы пройдут" должен быть готов к 26 апреля - чтобы вся работа над ним заняла ровно 3 месяца. Поначалу этот срок мне показался взятым с немалым запасом: в целом клип уже готов, и если бы я был халтурщиком, я мог бы выложил его уже сегодня. Почти никто бы не заметил большинства тех ошибок, о которых я знаю.
Позавчера (12 апреля) я взял практику публиковать в
вк-сообществе Complex Numbers текущее состояние todo-списка: что ещё осталось сделать. Сегодня я продолжу эту практику, но пока хочу поделиться впечатлениями от работы по одной группе его пунктов: стандартизация палитр. Группа эта откровенно перфекционистская: большинству авторов достаточно, чтобы каждый кадр смотрелся хорошо и более-менее в едином стиле. А то, что в соседнем кадре те же объекты нарисованы цветом, отличающимся на пару процентов - плевать.
Но мне в идеале хотелось, чтобы на экране всегда присутствовали только те цвета, кодировка которых оканчивается на F (кроме отсутствия цвета, который 00). Однако против этого работали несколько факторов.
1. Есть сцены с туманом, который представляет собой последовательность белых слоёв, каждый из которых на определённый процент приближает цвет к FF. Например, на 50% (рис. 1).
2. Есть сцены смены времён суток, где цвет непрерывно эволюционирует между несколькими ключевыми точками. Всё небо и земля разбиты на дискретно отличающиеся слои (см все рисунки), но каждый слой непрерывно меняет цвет по определённой программе.
3. Есть сцены с эффектами затемнения через Brightness и Opacity. В том числе - плавные во времени.
4. Есть линии (толщиной 5 пикселов - это единый стандарт у меня), которые при удалении от зрителя становятся прозрачными. Например, линии световых следов от фар автомобилей (имитация долгой выдержки кадра). Ясно что глаз не видит их вдали как тонкие, он видит их как менее яркие и размытые (рис. 4).
Проблема 1
Чтобы решить первую проблему, я вычислил, какие цвета должны иметь объекты, чтобы туман не выводил их за рамки целочисленной палитры. Например, если на ближнюю сцену накладывается засветление 25%, то её объекты могут иметь лишь цвета FF, BF, 7F, 3F, 00. В результате, они станут FF, CF, 9F, 5F, 3F. А если объект расположен далеко, и туманные слои последовательно осветляют его на 25, 33, 50 и 50% (в 8 раз), то допустимы лишь 3 варианта цветов: FF, 7F, 00. На выходе получатся FF, EF, DF.
Я попробовал это реализовать на практике, провозился значительную часть дня (рис. 2) и понял: это не вариант. Мало того, что Икарус пришлось сделать белым (бывали и такие). Мало того, что оба автобуса из-за бедности палитры стали выглядеть очень чётко и совсем не туманно. Главное, что дальний план потерял загадочность. Мозг воспринимает белый цвет как дефолтный, и в такой светлой сцене даже EF кажется значительным отклонением от FF. Сцена картонна, в ней нет таинственности и атмосферности. По крайней мере, если туман белый (а значит, меняет все три регистра сразу), как в этой чёрно-белой сцене. Сначала мне захотелось забить на туман, вернуться к изначальному варианту и смягчить весь принцип палитр: *F - это параметры, которые я ввожу руками. Но если потом палитра выходит за эти рамки в результате простых преобразований (изменение яркости на 50% - что можно придумать проще?) - то это уже вопрос не ко мне. Будем считать, что сами объекты нарисованы идеально, просто расположены в атмосфере, которая усложняет, но углубляет сцену.
Тем не менее, перфекционист во мне продолжил бунтовать и предоложил компромисс: если цвет слишком светлый, то допускаются дополнительные градации E7 и F7. Они позволили гораздо ближе к изначальной задумке реализовать сцены с туманом (рис. 3), и теперь я ими доволен. В них больше глубины, чем при ограничении палитры *F, но выполнен важный принцип: на любом кадре две соседние области заметно отличаются на глаз. И изначальные цвета объектов стали богаче. При новых правилах, если даже если туман осветляет объект в 8 раз, то на входе допустимы FF, BF, 7F, 3F, 00. А если объект находится на слой ближе, и туман осветляет его в 4 раза, то можно использовать FF, DF, BF, 9F, 7F, 3F, 00 (но не 5F, 1F, так как они трансформируются в D7 и A7, которые по-прежнему не допускаются). Это довольно много градаций.
Так мне удалось сцены с туманом привести к требуемой единой палитре - пусть и ценой включения в неё E7 и F7. Икарус и Газель вновь обрели туманную палитру. Может даже более туманную, чем раньше. Интересно, а какая из картинок лично вам нравится больше: 1 (как было до стандартизации), 2 (жёсткая стандартизация), или 3 (компромиссная стандартизация)?
Проблема 2
Потом я попробовал ещё более безумное начинание: дискретизировать все сцены с постепенными изменениями цветов. Было ясно, что это куча работы. Ведь в каждой такой сцене придётся автоматические плавные переходы заменять кучей статичных ключевых кадров. Поначалу результат мне понравился: в сцене медленного рассвета отдельные полоски на небе в дискретные моменты времени становились немного ярче, к ним подтягивались другие, создавая картина всё того же постепенного, пусть и немного ступенчатого рассвета. Ступеньки можно было бы привязать к ударным, что дополнительно увеличило бы ритмичность клипа.
Но затем я попробовал подобную фишку на сценах быстрого изменения палитры. Например, закат солнца длиной в 7 кадров, за которые синее небо сменяется красным, а затем тёмно-синим, а земля от зелёной становится почти чёрной. Если мыслить формально, то в таких ситуациях каждый кадр надо делать ключевым. Учитывая небольшое количество кадров, это возможно. Но тогда получится, что в одних сценах всё меняется дискретно, а в других - непрерывно (мы не воспринимаем кадры как статичные, хотя и их частота у меня довольно мала). Принцип "все кадры в одной палитре" был бы выполнен, но глубинный смысл за ним - дискретность не только пространства, но и времени - не выполнен. Точнее, выполнен на одних сценах и не выполнен на других. Причём, ценой большой работы.
Чтобы устранить этот разнобой и облегчить работу, я решил даже быстрые сцены дискретизировать с частотой всего лишь в половину удара басового барабана (1/8 музыкальная нота). Пусть даже за это времея палитра успевает сильно измениться. Синий - красный - сразу ночной тёмно-синий. Я попробовал это, и только тогда понял главный изъян всей борьбы с проблемой 2. В клипе и так достаточно дискретных изменений и мало непрерывных. В нём мало классической непрерывной анимации. Если я сделаю пошаговыми даже изменения цвета земли под солнцем, то клип ещё более станет похож на слайдшоу. А это не моя цель. Я решил полностью забить на проблему 2 ограничившись лишь дополнительной стандартизацией ключевых кажров в аналогичных сценах. В ключевом кадре я всегда ввожу цвета *F, но между ними комп волен менять их как хочет. Дискретность во времени потеряна - но она потеряна и так благодаря наличию движущихся объектов. Зато сохранена важная другая дискретность: на каждом отдельном кадре все участки имеют заметно отличающиеся цвета (что, не выполнялось в тумане, поэтому он был более важной проблемой).
Проблемы 3 и 4
Третью проблему я решил согласно принципам, уже выработанным при решении проблем 1 и 2. В статичных сценах преобразования не должны выбрасывать палитру за выбранные рамки. Например, на рис 4. для этого я изменил цвет панелей домов с CF на BF (ибо 13 - простое число, которое не делится ни на 2, ни на 4). Но на наличие постепенных переходов я забил - как и на любое постепенное изменение цветов в проблеме 2.
На четвёртую проблему я решил вообще забить. И соображения тут просты. Я рассматриваю размер 5 пикселов как основной квант размера. С оговорками, но всё же. Если некий объект имеет форму линии уже на ближних планах (те же фары от машин), то по мере его удаления от зрителя, его яркость (точнее, непрозрачность) может упасть и в 4, и 8 (рис. 4), и даже в 16 раз. Здесь не оттелаться введением в палитру 2 дополнительных градаций. При этом, потеря непрозрачности имеет свой художественный смысл: это некоторое размытие, dithering далёких линий, не укалывающихся в выбранную сетку. Зато приведение всего этого к жёсткой палитре, как и в случае с туманом, грозит потерей глубины.
Таким образом, основной результат стандартизаций палитры будет в том, что любые два цветовых поля размерами более 5 пикселов имеют заметно отличающиеся цвета. То есть исключаются градиенты. На рис. 4 видны и некоторые другие неожиданные результаты этой стандартизации. Раньше там дорога и дома тупо затемнялись в 4 раза. Дома после этого выглядели терпимо, а на земле и дороге создавалось непонятное нагромождение тёмных оттенков. Теперь же на дальних рубежах дороги вылез аккуратный космический синий отсвет от неба, как будто она немного мокрая.
Кроме того, теперь все аналогичные сцены будут иметь аналогичную палитру, если против этого нет художественных или когнитивных возражений. Например, если общая сцена светлая, то привычный объект в привычной палитре может показаться темноватым, и наоборот. Но, например, для ключевых кадров аналогичных природных сцен я выработал одинаковую палитру. Это можно увидеть например, на рассветных сценах на рис 5 и 6. Их палитры одинаковы, разве что на рис. 5 горизонт ниже, и потому в кадр попадает более синий фрагмент неба, чем на рис. 6. Но это именно на ключевых кадрах. А за их пределами можно будет найти и точки с нестандартными цветами.
По крайней мере, пока что я решил взять за основу именно такие компромиссные стандарты.