[Из песочницы] Image Processing изображений из космоса для CG
Приветствую! Меня зовут Тим, я CG артист, режиссёр и автор научно-популярного проекта SGR A. В этой статье я хотел бы рассказать как создаю текстуры космических тел как для своих проектов, так и для кино, используя реальные снимки космических аппаратов.
Большое красное пятно сделано симуляцией дыма и частиц на основе оригинального изображения* (C4D+Octane+x-particles)
Сразу хочу предупредить что статья не является рекламой. Я лишь хочу поделиться результатами своей работы.
Некоторое время назад я увлёкся обработкой изображений с различных космических аппаратов. Довольно занятная штука. Всё началось с того что мне понадобились текстуры планет в очень высоком разрешении. Но их почти нигде не оказалось. И тогда я решил сделать свой собственный сборник текстур Солнечной Системы в 16к. Это оказалось совсем не так просто, как кажется…
Дело в том что нельзя просто скачать обработанные картинки с сайта НАСА и использовать их в своих целях, особенно если речь идёт о коммерческом использовании. Потому что каждый обработанный исходник изображения из космоса имеет авторские права человека, который совершил эту обработку. Прошерстив кучу официальных и неофициальных форумов по этой теме, я понял что самым активным и уважаемым в этом деле считается некий Bjorn Jonsson.
Предположительно он работает в НАСА и ему принадлежит большинство обработанных изображений и составленных карт различных планет и спутников. Именно поэтому мной было принято волевое решение делать практически всё с нуля и использовать сырые исходники, на которые никакие авторские права не распространяются (т.к. изображения сделаны в космосе).
Планеты пришлось собирать буквально по кусочкам, используя изображения на подобии таких:
Кусок поверхности Европы
Изображения с разных космических аппаратов в основном очень низкого качества и чёрно-белые. В идеале должно быть три чб снимка одной области для красного, зелёного и синего каналов, но к сожалению их очень непросто найти и над цветом приходится работать отдельно.
Поиск изображений на сайте OPUS выглядит примерно так:
:)
Проблему с низким качеством изображений мне помогают решать нейросети. В частности используется софт от Topaz Labs. Каждый исходник чистится от шума, апскейлится в несколько раз и приобретает резкость с помощью трёх разных нейросетей и фотошопа.
Ниже представлен процесс на примере одного изображения части поверхности Ио:
Поверхность Ио до обработки нейронными сетями (800×800)
Поверхность Ио после обработки нейронными сетями (4800×4800)
На основе обработанного изображения создаются каналы Color, Roughness, Normal и Displacement
Финальный результат (C4D+Octane)
Но это только часть космического тела. А нам нужны полноценные текстуры. Поэтому после обработки исходников нейронками, мы начинаем их склеивать в мозаику…
Тут возникает один болезненный момент — полюса планет. Так как для текстуры на шар нам требуется сферическая проекция, то создание полюсов приходится совершать в несколько этапов.
Первым этапом склеиваем полюса во фронтальной проекции с альфа-каналом:
Один из полюсов Юпитера
Далее переходим в 3д редактор и натягиваем их на сферу:
Создаём сферическую камеру и рендерим картинку 360 с пропорциями 2 к 1:
Теперь остаётся только совместить изображения центральной области и полюсов:
Финальный результат текстуры Юпитера
После завершения создания основной карты Color, приступаем к созданию каналов Normal, Roughness, Specular и Displacement.
В этом нам помогает Photoshop. На выходе получаем пять таких вот текстур:
По порядку: Color, Normal, Roughness, Specular и Displacement
Таким образом я сделал коллекцию семи планет Солнечной системы, одного Плутона и шести различных лун в 16к.
Теперь нам остаётся только создать шейдер нашей планеты в любом 3д редакторе и наслаждаться красотой космоса. Тут уже всё зависит от вашего воображения:
Юпитер (C4D+Octane)
Ио (C4D+Octane)
Так-же производились тесты в Unreal Engine 4, предварительно уменьшив размер текстур до 8к. Результат очень порадовал:
Один из примеров использования текстур созданных таким способом можно увидеть в моём короткометражном фильме о космических путешествиях или в тестовом шоте с пролётом мимо Европы
P.S. На самом деле нюансов в разы больше. Например Displacement map, в идеале должна быть 32 битной EXR. Недавно я придумал способ создавать такие карты. Но об этом напишу если только эта тема в принципе кому-то зайдёт.
Спасибо за внимание! Надеюсь что было интересно.