Космический Двигатель – Вселенная На Ладони



Космический двигатель – Вселенная на ладони

Боже мой, здесь полно звезд! Артур Кларк Кто из нас в детстве не мечтал «путешествовать по просторам Вселенной», как капитан Пикард, гулять по неизведанным планетам далеких миров, видеть рассветы двойных или тройных звезд, погружаться в атмосферы газовых гигантов, сбрасывать корабли в черные дыры? И я тоже не исключение.

Конечно, частично эту мечту осуществили книги, фильмы и «облегченные» игры.

Но всю романтику в них разрушили банальные купи-продай и «пиу-пиу» в «жидком» космосе на скоростях самолетов времен Первой мировой войны.

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

В начале тысячелетия я познакомился с MojoWorld и был потрясен его возможностями.

Наконец-то можно было побродить по другим планетам и сфотографировать местные достопримечательности.

Он стал первым признаком надежды на то, что полномасштабные космические миры технически возможны.

Но, к сожалению, производительности оборудования десятилетней давности оказалось недостаточно, чтобы передать всю красоту в реальном времени.

А планеты остались лишь мертвыми ландшафтами.

Но потом, чуть больше года назад, я совершенно случайно наткнулся на вселенную Space Engine, и она просто взорвала мне мозг и размазала по полу своим масштабом и невероятной детализацией.



Как все это выглядит?

Первое, что бросается в глаза, — это реальные размеры нашей Вселенной.

Что такое сотни миллиардов галактик и сотни миллиардов звезд в каждой из них? — просто сухие цифры в учебнике астрономии.

Но здесь все это ощущается на собственной шкуре.

И начинаешь понимать, насколько ничтожно наше человечество со всеми его мелкими проблемами и мышиными войнами по сравнению с величием и непостижимостью Вселенной.

Нет, мы не песчинки и даже не пылинки, мы вообще ничто.

И никто даже не заметит, если завтра наше солнце вдруг погаснет и другая цивилизация канет в Лету, не оставив после себя никакого наследия.

Кроме того, удивляет абсолютная свобода передвижения.

Вы можете летать куда угодно с плавными переходами между поверхностями планет, орбитами, звездами и галактиками.



Космический двигатель – Вселенная на ладони

Да, это не заставка «по вселенной», здесь можно побывать у каждой проходящей звезды, побродить по ее планетам, их спутникам и астероидам.

Конечно, в Space Engine, как и в любом другом уважающем себя планетарии (например, недавно упомянутой «Селестии»), есть и отображение орбит космических тел и подробная информация о них, и тайм-менеджмент, и различные затмения (в том числе от планетарных колец), а также возможность рендеринга в проекции «рыбий глаз» для проекторов планетариев.

Но, самое главное, он не ограничивается каталогами звезд HIPPARCOS и галактик NGC/IC (которые тоже существуют), а вообще генерирует всю наблюдаемую Вселенную со всеми типами объектов, которые можно в ней найти.

Но при этом он основан исключительно на научных данных и современных теориях и моделях, что позволяет использовать Space Engine как полноценный (и невероятно красивый) учебник по астрономии.

Здесь вы сможете увидеть космического pac-man своими глазами.

Хотя на самом деле это черная дыра с гравитационной линзой на фоне голубого сверхгиганта:

Космический двигатель – Вселенная на ладони

Наблюдайте за восходом двойной звезды (есть даже восьмикратные звезды):

Космический двигатель – Вселенная на ладони

Посетите соседние и не очень соседние галактики, туманности, звездные скопления.

Узнайте, как выглядят красные гиганты, нейтронные звезды и многое другое.

Не буду спойлерить слишком много, просто оставлю несколько фотографий.



Космический двигатель – Вселенная на ладони



Космический двигатель – Вселенная на ладони



Космический двигатель – Вселенная на ладони



Космический двигатель – Вселенная на ладони



Космический двигатель – Вселенная на ладони

Кстати, как вы думаете, как будет выглядеть планета, если одна из ее сторон всегда обращена к звезде? Встречайте приливно-синхронизированную (оказывается, так она называется) пустыню.

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



Космический двигатель – Вселенная на ладони

Так же, как и в Celestia, вы можете скачать официальные дополнения для Space Engine с текстурами планет Солнечной системы и некоторых их спутников в высоком разрешении.

Например, базовый пакет весит 500 МБ, а общий размер всех дополнений составляет примерно 10 ГБ.



Чего еще не хватает?

К сожалению, впереди еще много всего.

Космос гораздо разнообразнее и удивительнее всего, что уже реализовано в Space Engine, но с каждой версией автор бережно переносит в свою вселенную частичку настоящего.

Например, на картинке с черной дырой и голубым гигантом для полного счастья не хватает аккреционного диска и джетов, которые пока в планах.

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

Так что работы еще много.



Что еще можно сделать?

На данный момент программа представляет собой бесплатный интерактивный планетарий с зачатками космического симулятора (то есть теперь можно летать на шаттле над поверхностями планет и сбрасывать корабли в черные дыры).



Космический двигатель – Вселенная на ладони

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

Никакой телепортации, «жидкого» пространства и голливудских «пиу-пиу».

А что делить в такой огромной вселенной? Для того, чтобы летать между планетами и звездами, вам придется помнить хотя бы основы астрономии, траектории небесных тел, что такое первая, вторая, третья космические скорости, характерная скорость, удельный импульс и другие атрибуты реального космического путешествия.

.

Вам также придется следить за расходом топлива и реактивной массы (да, это потенциально разные вещи), чтобы не остаться «вдруг» в открытом космосе без возможности вернуться в обитаемые системы.

Также планируется проектировать корабли, как и в Кербальской космической программе, с расчетами основных динамических характеристик, а также прочности и устойчивости конструкции.

Единственное «фантастическое» предположение — это гипердвигатель, обеспечивающий сверхсветовые полеты.

Без этого ММО будут невозможны.



Как все это возможно?

Вселенная Space Engine создана практически одним человеком, нашим соотечественником из Санкт-Петербурга Владимиром Романюком ( Космический инженер ).

По образованию и профессии он астроном, поэтому вы можете быть уверены в научной достоверности всех моделируемых объектов и процессов.

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

Фанаты также создают модели кораблей, шаттлов и других мелочей, чтобы наполнить вселенную.

Создатель не скрывает техническую составляющую своего мира и делится своими выводами с форумчанами.

Перечислю некоторые основные моменты и проблемы, которые необходимо было решить для реализации движка.



Координаты
Одной из проблем было представление координат объектов во Вселенной.

Любой, кто близко работал с числами с плавающей запятой, знает, как быстро они теряют точность с увеличением расстояния от нуля.

Но точность в несколько килопарсеков на краю Вселенной не имеет большого значения.

Поэтому для хранения координат используются 64-битные числа с фиксированной запятой и иерархическое представление объектов.

То есть координаты галактик описываются абсолютно, звезд – относительно центра галактики, а планет – относительно звезды.

Конечно, при рендеринге приходится всё переводить в числа с плавающей запятой, но преобразование в координаты относительно камеры вычисляется целыми числами.

А сам рендеринг происходит послойно, так как никакой точности z-буфера не хватает, чтобы учесть размеры вселенной.



Звезды и галактики
Вторая проблема — рождение звезд и галактик.

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

Конечно, для реального времени это не подходит. Казалось бы, ладно, давайте ограничимся расстоянием до камеры и будем генерировать и рендерить звезды только в небольшом объеме.

Но здесь возникают еще две проблемы.

Во-первых, алгоритм должен быть детерминированным, то есть, несмотря на то, что звезды создаются случайным образом, они должны всегда появляться в одном и том же месте.

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

Во-вторых, звезды имеют разную яркость и видны на разном расстоянии.

Слабые коричневые карлики быстро исчезают из поля зрения, а яркие голубые гиганты видны почти по всей галактике.

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

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

Таким образом, генерация звезд становится абсолютно детерминированной и зависит только от семени корня дерева и текстуры распределения звезд в галактике.

Также он позволяет быстро генерировать звезды с заданной максимальной видимой яркостью (которая зависит от расстояния и абсолютной яркости) на любом расстоянии от камеры.

Технология рендеринга галактик и туманностей аналогична рендерингу объёмных облаков.

То есть это набор спрайтов, которые для ускорения будут предварительно отрисованы в импостеры или скайбоксы, в зависимости от того, где мы находимся: внутри или снаружи.



Планеты
Принцип моделирования аналогичен MojoWorld. Его идеи были подхвачены многими проектами с процедурными планетами, такими как Outerra и Infinity. Как это работает? Берем обычный куб, делим каждую его грань на несколько сегментов, а затем сферифицируем его, то есть как бы надувая изнутри.

В результате получается шар с топологией куба.

Это позволяет использовать квадратные текстуры с максимальной эффективностью и минимальными искажениями.



Космический двигатель – Вселенная на ладони

Но равномерно разделить куб на сегменты недостаточно.

Поскольку планета большая, сгенерировать ее с максимальной детализацией для полетов над поверхностью не удастся (опять же потребуются терабайты данных).

ЛОДы приходят на помощь.

Они реализованы следующим образом.

Каждая грань куба является корнем дерева квадроциклов.

Каждый узел дерева представляет собой квадрат с фиксированной сеткой и разрешением текстуры.

При необходимости (при приближении камеры) узел делится на четыре, тем самым увеличивая детализацию вдвое.

И так до тех пор, пока в данной точке не будет достигнута необходимая детализация.



Космический двигатель – Вселенная на ладони

Карта высот и текстура для каждого узла дерева полностью создаются на графическом процессоре с использованием пиксельных шейдеров версии 3 (поэтому вы не сможете запускать SE на видеокартах, которые их не поддерживают).

Алгоритмы генерации чудесно описаны в книге от создателей MojoWorld — « Текстурирование и моделирование: процедурный подход То есть это знакомые большинству шумы Перлина и Уорли, а также их вариации и различные методы фрактализации.

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

Дело в том, что на планетах, имеющих атмосферу, они подвергаются значительной эрозии, которая существенно меняет очертания гор и долин.

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

Но есть более простой (позиционный) способ смоделировать это явление.

Это особые виды шума, подробно описанные в статья .

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

Такой подход уже позволяет нам создавать довольно красивые планеты.



Космический двигатель – Вселенная на ладони

Метод, используемый для моделирования атмосферы: Эрик Брюнетон , адаптированный для других планет с другим давлением и составом.



Вместо заключения

Уже сейчас Space Engine превосходит большинство планетариев и реалистичных космических симуляторов (Celestia, Stellarium, Orbiter) по богатству и красоте космоса.

И это только начало пути.

Если хотя бы половина того, что запланировано , будет реализован, Space Engine станет наиболее полной моделью нашей Вселенной, аккумулирующей все современные знания человечества из области астрономии.

И, несмотря на то, что автор планирует оставить код закрытым, каждый может внести свой вклад в создание самого большого виртуального мира, существующего на данный момент. PS: всё спасибо автору программы Космический инженер .

Думаю, он сможет ответить на некоторые вопросы по двигателю, если таковые возникнут.

Ссылки
Теги: #планетарий #космос #игры #симулятор #Разработка игр
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.