menu

Андрей Климковский - композитор, астроном, бегун-марафонец | творческий сайт и блог
Андрей Климковский - композитор, астроном, бегун-марафонец
творческий сайт и блог       russian | english
          Андрей Климковский - один из ведущих российских композиторов работающих в электронном музыкальном пространстве. Созданные им образы - "Музыка Небесных Сфер", "Звездное небо", "ALEALA" и "DreamOcean" стали классикой жанра получив известность как в России, так и за рубежом. Музыкант регулярно дает феерические живые концерты и сотрудничает со многими другими представителями российской электронной сцены, ведет популярное сообщество о синтезаторах и рабочих станциях, участвует в астрономических экспедициях и практикует здоровый образ жизни.
             

5 мая 2014 г.

Анимация звездного неба в Bryce 3D

          Какая-то имитация звезд на виртуальном небе программы 3D-моделирования Bryce была уже в 4-й (или даже в 3-й) версии. В 5-й версии разработчики прощаясь с добрым домом компании Metacreation и готовясь к передаче проги Корелу прикрутили реалистичную (с точки зрения взаимного расположения звезд) карту неба. Относительно, конечно. Потому, что кое-какие ошибки в положении даже ярких звезд на ней есть, а вот Млечного Пути, увы, нет. Но все же это был шаг вперед.

Анимация звездного неба в Bryce 3D

          А когда прога на несколько лет зависла в Кореле и никак не развиваясь, приходилось радоваться и такому - ведь, не сделали бы этого перед продажей, не сделали бы вообще никогда. Поэтому общем-то не приходилось жаловаться на то, что все в Bryce 3D анимируется, а звездное небо - нет. Оно не вращается, созвездия не восходят и не заходят, даже нельзя сделать так, что бы звезды вдруг появились или пропали с неба с восходом Солнца (Восход сделать было несложно еще с самых ранних версий).

          С другой стороны, этого вполне хватало, что бы делать какие-то фантастические картины или анимации в космосе - вдали от Земли, где суточное видимое вращение небосвода теряет свой смысл и надобность.

          Можно было извернуться ужом и в согласии со всеми законами природы заставить вращаться не небо, а Землю - камеру, плоскость горизонта, горные ландшафты, строения городов, сотни деревьев и автомобилей - под самым неожиданным углом - все только для того, что бы воссоздать видимое вращение всего одного объекта - небесной сферы, но ведь именно так происходит все в природе!

          Этот способ был весьма неудобен и в виду значительной технической сложности, и еще потому, что тогда терялась возможность управлять Солнцем, зарей, дымкой и туманом - все это оказывалось совсем в другой плоскости и выглядело нереалистично.

          Был еще способ, и я им пользовался - раздобыть где-нибудь полную прямоугольную развертку звездного неба в хорошем разрешении и текстурировать ей сферу, которая будет окружать собой всю сцену, вращаться вокруг нужной оси и представлять собой ту небесную сферу, о которой тут идет речь. К сожалению найти развертку подходящего разрешения так и не удалось до сих пор. И то, что при таком подходе творится на полюсах, выглядит просто страшно.

          Между тем, решение, как часто бывает, все это время лежало на поверхности, но подступиться к его реализации мешала лень или нерешительность. И вот вчера я решился.

          Суть решения: Базовый образ существующего в программе Bryce 3D звездного неба надо хитро 6 раз рендерить в шести перпендикулярных направлениях. Сделать рендер северной полярной области, южной полярной области, отрендерить 4 экваториальные зоны направленные на 0 часов, 6 часов, 12 часов и 18 часов по прямому восхождению. Прямое восхождение это астрономическая координата родственная географической долготе, и конечно в самой программе никак не упоминается, но разбираться в этом необходимо для того, что бы правильно сориентировать камеру. А поскольку среди пользователей этой программы разбирающихся немного, то метод, который я описываю так и не нашел широкого применения. Ведь кроме необходимых знаний по геометрии надо еще и астрономией владеть...

          Кстати, о геометрии. Мне не сразу удалось определить угол поля зрения камеры для этой подготовительной процедуры рендеринга. Конечно, можно было бы тригонометрически высчитать его, если бы я точно был уверен, что правильно понимаю саму концепцию определения поля зрения воплощенную разработчиками. Но я этого не понимаю и по сей день - что они имели в виду под той величиной, которая обозначена в атрибутах камеры как FOV? - это вряд ли кто-то вообще ясно себе представляет. Понятно, что она связана с величиной поля зрения, которое имеет зачастую разную форму и по сути величина соотносимая с площадью - двумерная. У разработчиков же она линейная. И что бы не углубляться в дебри еще и этих исследований я решил найти ее методом тыка.

          Для тыка я создал Куб, поместил точно в его середину камеру и подбирая значения FOV добился того, что бы в квадратный имидж рендера вписалась ровно одна грань губа, наблюдаемого камерой изнутри - ни больше, ни меньше, а точно грань. И тогда поперечник поля зрения камеры составил 112,5 градусов.

          Когда рендеры всех 6-ти направлений неба были готовы (я выбрал для них наибольшее разрешение - 4000х4000 точек при наилучшем качестве обсчета и супер-антиалайзинге) я немного разогнал цвета звезд (в Брайсе звезды цветные, но очень слегка) в программе Corel Photo-Paint, хотя то же самое можно было бы сделать и в Фотошопе или любом другом графическом редакторе функцией "Saturation", и сохранил в формате PNG - так они меньше места занимают не теряя в качестве. Теперь предстояло использовать эти 6 имиджей для тектурирования другого куба, который будет изображать из себя небесную сферу. Это кажется смешным - куб изображает сферу - но лучшего решения я не нашел - правильно оттекстурировать сферу или цилиндр в Bryce 3D куда сложнее.

          С Кубом тоже не все просто и оттекстурировать цельный Куб 6-ю разными имиджами - по одному на каждую его грань - в Bryce 3D нельзя. Зато можно собрать свой собственный Куб из 6-ти отдельных плоских квадратов, оттекстурировать каждый по отдельности своим собственным имиджем не составит труда. Важно при этом следить лишь за тем, что бы картинки неба срослись правильно. Но мне, как астроному, проконтролировать это было нетрудно.

          Существует множество вариантов настроек в лаборатории материалов программы Bryce 3D, которые подходят для текстурирования в данном случае. Хотя ключевые требования все же таковы:

  • текстурная карта должна быть назначена на Ambient (а Ambient в лаборатории неба должен быть выведен на максимум)
  • материал должен быть прозрачным

          Как Вы конкретно будете добиваться прозрачности - ваше личное дело, а объяснение этих азов - тема отдельной статьи (и у меня где-то такая была). Но понятное дело, что никакие преломления, отражения, рельефность и прочие свойства, порой столь необходимые другим материалам, звездному небу не нуждны. А то, что показалось нужным мне, я приведу в качестве иллюстрации и отправной точки поиска своих параметров:

и

          Закончив этап работы с текстурированием и настройкой его параметров я сгруппировал эти 6 квадратов в один Куб, который был принужден вращаться вокруг оси наклоненной от вертикали на 34 градуса - именно такой угол наклона по отношению к горизонту имеет ось вращения Земли на широте Москвы. Конечно, московский пейзаж по горизонту рисовать мне было некогда и я обошелся тем, что создал одну гору-остров в бескрайнем море - это как-то наполнило вселенскую пустоту смыслом.

          Должен добавить, что размер куба собранного из этих 6-ти отдельных граней я увеличил до 1000 условных единиц принятых в системе координат Bryce 3D с расчетом на то, что все мои объекты созданной сцены окажутся внутри него. При этом Солнце и облака немного против природы будут дальше звезд, но если мы делаем фильм не в стереоскопическом формате с крайне широкой стереобазой, то зритель этот недочет никогда не обнаружит. Ну и исходное "Брайсовское" звездное небо надо не забыть отключить.

          С анимацией восходящего Солнца и движением облаков я не напрягался нисколько - просто задал первые-попавшиеся параметры и даже для первого раза не стал гасить на небе звезды - восход Солнца произошел прямо при них - фантастическая картина.

          Для того, что бы самому понять, насколько хорошо все это вышло, финальный рендеринг я осуществил с нормальными настройками антиалайзинга и разрешением Full HD - 1920x1080 (16x9), причем безо всякого сжатия. Ролик продолжительностью 1 минуту (25fps) обсчитался компьютером за 11 часов, покадрово. После сложения кадров весил 8 Гб, но Youtube его принял (вкачал примерно за час) и довольно скоро уже перекомпрессировал по-своему со вполне приемлемым качеством в HD варианте просмотра.

          Вот и Вам я его рекомендую смотреть в HD и Full Screen:

          Приятного просмотра.

          Сцену прилагаю:

Stellar Animation | Скачать