Space Engine — Вселенная на ладони

My God, it’s full of stars!
Arthur C. Clarke

Кто из нас в детстве не мечтал «бороздить просторы вселенной», как капитан Пикард, прогуливаться по неизведанным планетам далёких миров, встречать рассветы двойных или тройных звёзд, погружаться в атмосферы газовых гигантов, ронять корабли в чёрные дыры? Конечно, частично эту мечту воплощали книги, фильмы и «Элит»-ные игры. Но вся романтика в них разрушалась банальными купи-продай и «пиу-пиу» в «жидком» космосе на скоростях самолётов времён первой мировой войны. Да и тем немногим виртуальным миркам не хватало свободы, детальности и масштабов реальной вселенной. Но совсем другое дело — . Эта программа способна просто взорвать мозг и размазать его по полу своим масштабом и невероятной детализацией.

Space Engine — компьютерная игра в жанре космического симулятора, позволяющая исследовать Вселенную в трех измерениях. В отличие от большинства симуляторов, пространство вселенной Space Engine не ограничивается пределами Солнечной системы или Млечного Пути, а имеет размеры, сопоставимые с размерами реальной видимой Вселенной. Все изученные звезды и присутствуют в Space Engine, а для неизученных областей космоса применяется  галактик, туманностей, звезд, планет и прочих космических объектов. Space Engine вышла в раннем доступе 11 июня 2019 года.

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

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

 

Посмотреть эту публикацию в Instagram

 

Space Engine — Вселенная на ладони. http://texno.info/vw/space-engine-vselennaja-na-ladoni/ Кто из нас в детстве не мечтал «бороздить просторы вселенной», как капитан Пикард, прогуливаться по неизведанным планетам далёких миров, встречать рассветы двойных или тройных звёзд, погружаться в атмосферы газовых гигантов, ронять корабли в чёрные дыры? Конечно, частично эту мечту воплощали книги, фильмы и «Элит»-ные игры. Но вся романтика в них разрушалась банальными купи-продай и «пиу-пиу» в «жидком» космосе на скоростях самолётов времён первой мировой войны. Да и тем немногим виртуальным миркам не хватало свободы, детальности и масштабов реальной вселенной. Но совсем другое дело — Space Engine. Эта программа способна просто взорвать мозг и размазать его по полу своим масштабом и невероятной детализацией. #space #games #astronomy #космос #астрономия #игры

Публикация от Alex Rufus (@alex_rufus)

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

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

Конечно, в Space Engine, как и в любом другом уважающем себя планетарии, есть и отображение орбит космических тел и подробной информации по ним, и управление временем, и различные затмения (в том числе от планетарных колец), и возможность рендерить в проекции «рыбий глаз» для проекторов планетария. Но, самое главное то, что он не ограничен каталогами звёзд HIPPARCOS и галактик NGC/IC (которые тоже есть), а генерирует вообще всю обозримую вселенную со всеми типами объектов, что в ней можно встретить. Но при этом основывается исключительно на научных данных и актуальных теориях и моделях, что позволяет использовать Space Engine как полноценное (и безумно красивое) пособие по астрономии.

Тут можно своими глазами увидеть космического pac-man-а. Хотя на самом деле, это чёрная дыра с гравитационной линзой на фоне голубого сверхгиганта:

Встретить восход двойной звезды (встречаются даже восьмикратные системы):

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

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

К Space Engine также можно скачать официальные дополнения с текстурами планет Солнечной системы и некоторых их спутников в высоком разрешении (HD и ULTRA) — это несколько десятков гигабайт информации.

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

Вселенная Space Engine создаётся практически одним человеком, нашим соотечественником из Питера, Владимиром Романюком. Он по образованию и профессии – астроном, так что в научной достоверности всех моделируемых объектов и процессов можно быть уверенным. Сообщество, сложившееся вокруг его программы, помогает поддерживать каталоги галактик, звёзд и экзопланет в актуальном состоянии, так как их открывают чуть ли ни каждый день. Также поклонники создают модели кораблей, шаттлов и прочие мелочи для наполнения вселенной.

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

Триллионы планет ждут своих первооткрывателей. В SpaceEngine представлены все известные типы планетарных объектов: газовые гиганты и астероиды, засушливые пустыни и планеты-океаны, безвоздушные луны и планеты земного типа, заселённые  жизнью. Каждая планета уникальна и имеет реальный размер и реалистичный внешний вид. Системы спутников, кольца, орбитальное движение и суточный цикл — всё основано на реальных законах астрофизики.

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

Миллиарды галактик, заполненные миллиардами звезд. Каждая звезда имеет свою уникальную планетную систему, которую можно посетить. Объёмные модели галактик и туманностей генерируются в реальном времени. Реальные масштабы и расстояния, от камней на планетах до невероятно огромных войдов Вселенной: вы никогда представляли себе, насколько Вселенная огромна!

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

Звездолеты и челноки с уникальным физически корректным дизайном ждут вас. Ньютонова физика с инерцией, сложное орбитальное движение в космосе, реалистичная аэродинамика в атмосфере, уникальная механика межзвездного полёта — всё это проверит ваши навыки космического пилота.

Почти всё в SpaceEngine может быть модифицировано. Новые модели галактик и туманностей, текстуры высокого разрешения для Земли и других планет, свои собственные планетные системы и модели космических кораблей. Присутствует удобная система скриптов для описания объектов с подробной документацией. Вы можете импортировать любые научно-фантастические франшизы: модели космических кораблей, солнечные системы и даже целые галактики, а затем взять контроль над вашим любимым кораблём и начать исследование!

Игровой процесс

Программа представляет собой симулятор свободного перемещения в космическом пространстве.

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

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

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

В планетарии представлено множество типов космических объектов: планеты, луны, астероиды, кометы, звёзды (а также нейтронные звезды и черные дыры), звёздные скопления, туманности, галактики. Галактики, звезды и планеты в Space Engine разделены на классы. Например, галактики делятся по последовательности Хаббла. Звезды делятся по классам светимости и цвету (например, «красные гиганты», «желтые карлики», «голубые сверхгиганты» и так далее). Для планет используется собственная классификация: «терра» — землеподобные планеты с жидкой водой на поверхности, «океанида» — планеты-океаны, «пустыня» — каменистые планеты с атмосферой, «селена» — безатмосферные каменистые планеты, «ледяной мир» — твёрдые ледяные планеты, «титан» — ледяные планеты типа Титана с жидкими углеводородами на поверхности, «ледяной гигант» — газово-ледяные планеты типа Нептуна, и «газовый гигант» — газовые гиганты типа Юпитера.

В Space Engine есть планеты с жизнью. В настоящей версии это проявляется только в наличии текстурной растительности на поверхности планеты. Вероятность наличия жизни на планете во вселенной SpaceEngine невелика и зависит от класса звезды, класса планеты и её температуры, а также от возраста системы.

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

Управление

Управление в симуляторе сводится к свободному полету в космическом пространстве. Полет реализован в трёх основных режимах:

  • Свободный режим — наиболее простой режим, в котором пользователь перемещается в любом направлении без инерции
  • Режим космического корабля — сложный режим управления, который имитирует механику реалистичного полета в космическом пространстве (сохраняется скорость движения и угловая скорость вращения, а направление движения не привязывается к ориентации камеры). При этом, как и во всех остальных режимах, не учитывается гравитация и отсутствуют реалистичные ограничения на скорость и ускорение.
  • Режим самолёта — режим управления, при котором имитируется поведение самолета в воздушном пространстве (сохраняется скорость движения и угловая скорость вращения, однако направление движения следует за ориентацией камеры). При этом не имитируется замедление движения от трения с предполагаемым воздухом.
  • Игровой режим — в этом режиме можно управлять одним из космических кораблей Space Engine. В текущей версии отсутствует какая-либо механика космического полёта, управление аналогично режиму космического корабля, за исключением влияния гравитации планет на траекторию. Аэродинамика в атмосферах планет не моделируются, отсутствует ограничение на скорость и ускорение.

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

Скорость перемещения по вселенной Space Engine может варьироваться в очень широких пределах: от 1 м/с до 1 гигапарсека в секунду. Масштабы исследуемых областей настолько же гибкие: от рассматривания деталей рельефа отдельных планет и астероидов до обзора всей вселенной SpaceEngine сразу. Для достижения такой масштабируемости используется процедурная генерация объектов, то есть неизученные участки Вселенной, галактики, планеты и их рельеф создается «на лету» самой программой.

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

Вам не составит труда исследовать вселенную SpaceEngine. Просто повернитесь к цели с помощью мыши и летите кнопками W, A, S, D, как в играх от первого лица. Настройте скорость полёта с помощью колесика мыши. Щёлкните левой кнопкой по любому объекту и нажмите кнопку G, чтобы автоматически перелететь к нему. Никогда прежде планетарием не было так легко управлять! Используйте множество инструментов, чтобы исследовать Вселенную: браузер звёзд и планет, поиск объекта по имени, контроль времени, линии орбит и многое другое.

Координаты

Одной из проблем было представление координат объектов в пределах вселенной. Кто плотно работал с числами с плавающей запятой, знает, как быстро они теряют точность с расстоянием от нуля. А точность в несколько килопарсек на краю вселенной – совсем не дело. Поэтому, для хранения координат используются 64-битные числа с фиксированной запятой, и иерархическое представление объектов. То есть координаты галактик описываются абсолютно, звёзд – относительно центра галактики, а планеты — относительно звезды. Конечно, при рендеринге приходится всё переводить в числа с плавающей запятой, но преобразование в координаты относительно камеры рассчитывается в целых числах. Да и сам рендеринг происходит слоями, так как никакой точности z-буфера не хватит для учёта размеров вселенной.

Звёзды и галактики

Звёзд в галактике сотни миллиардов, а значит для того чтобы их все отобразить, потребуется сгенерировать и отрендерить терабайты данных. Конечно, для реального времени это не подходит. Казалось бы, ну ладно, ограничим расстоянием до камеры и будем генерировать и рендерить звёзды только в небольшом объёме. Но тут возникает еще две проблемы. Во-первых, алгоритм должен быть детерминированным, то есть, несмотря на то, что звёзды создаются случайно, они должны появляться всегда на одном и том же месте. Иначе будет странно, если мы улетим от звезды, а потом на её месте будет пустота. Во-вторых, звёзды имеют разную яркость и видны на разных расстояниях. Тусклые коричневые карлики быстро пропадают из виду, а яркие голубые гиганты видны почти через всю галактику. Для решения обеих проблем используется октодерево (octree), узлы которого хранят сид для генерации нижележащих уровней, а так же предельную яркость звёзд в данной ячейке. При этом более яркие звёзды генерируются на более высоких уровнях иерархии, так как их значительно меньше, чем менее ярких. Таким образом, генерация звёзд становится абсолютно детерминированной и зависит лишь от сида корня дерева и текстуры распределения звёзд в галактике. А так же позволяет достаточно быстро генерировать звёзды с указанной предельной видимой яркостью (которая зависит от расстояния и абсолютной яркости) на любом расстоянии от камеры.

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

Планеты

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

Но равномерно разбить кубик на сегменты не достаточно. Так как планета большая и сгенерировать её с максимальной детализацией для полётов над поверхностью будет не возможно (потребуются опять же терабайты данных). На помощь приходят ЛОДы. Реализованы они следующим образом. Каждая грань куба — корень квадродерева (quad tree). Каждый узел дерева — квадрат с фиксированным разрешением сетки и текстуры. При необходимости (при приближении камеры), узел делится на четыре, тем самым увеличивая детализацию в два раза. И так до тех пор, пока в данной точке не будет достигнута требуемая детализация.

Карта высот и текстура для каждого узла дерева создаются полностью на GPU с использованием пиксельных шейдеров 3-й версии (поэтому запустить SE на видеокартах, которые их не поддерживают, не получится). Алгоритмы генерации замечательно описаны в книге от создателей MojoWorld — «Texturing and Modeling: A Procedural Approach». То есть это знакомые большинству шумы Перлина и Ворлея, а так же их вариации и различные способы фрактализации. Отдельным алгоритмом создаются крупные циклоны для приливно-синхронизованных планет.

Но, чисто процедурные ландшафты обычно выглядят слишком искусственно. Дело в том, что на планетах с атмосферой они подвергаются значительной эрозии, которая существенно меняет очертания гор и долин. К сожалению, классические итеративные алгоритмы эрозии довольно сложно масштабируются между ЛОДами, и на данный момент еще не реализованы. Но есть более простой (позиционный) способ имитации этого явления. Если кратко, то для генерации ландшафта используется не только шум Перлина, но и его производная, которая позволяет построить градиент в каждой точке ландшафта и имитировать вымывание или, наоборот, наплывы грунта сдвигом координат базового шума по этому градиенту. Такой подход уже позволяет создавать довольно симпатичные планеты.

Для моделирования атмосферы используется метод Eric Bruneton-а, который был адаптирован для других планет с разным давлением и составом.

Разработка

Программа находится в разработке с 2008 года и первоначально являлась закрытым хобби разработчика. С 2011 года проект стал публичным, обзавелся сайтом и начал сбор средств. По состоянию на 2017 год методом краудфандинга было собрано более 50 000 долларов США под реализацию конкретных технических и игровых задач, таких как звуковые эффекты, поддержка Linux и macOS, реализация 3D-воды, облаков и колец планет, протопланетных дисков, погодных явлений, тектонических процессов.

Отзывы

Одним из главных достоинств Space Engine обычно называют качество графики. Так, журнал «Лучшие » отмечает, что «на фоне красот Space Engine бледнеют достоинства других планетариев», а по поводу поверхности планет отзывается следующим образом: «поверхность их тоже моделируется процедурно, и так реалистично, что скриншоты порой напоминают картины художников-фантастов». Аналогично отзываются в статье, опубликованной в Канобу: «если быть предельно честным, то это самая красивая игра-программа которая есть на сегодняшний день <…> Таких красивых закатов и текстур космических объектов нет даже в коммерческих играх с многомиллионными бюджетами и огромным штатом людей». Обе публикации называют проект Space Engine самым амбициозным проектом в своей тематике.

Часто отмечается нестабильность работы программы, выражающаяся в частых вылетах программы. «При близком исследовании планет пять минут без вылета на рабочий стол — уже хороший результат» — отзывается журнал «Лучшие компьютерные игры». Тем не менее, после выхода версии 0.96 число аварийных завершений значительно сократилось. Также делаются замечания по поводу высоких и постоянно растущих системных требований для работы с программой.

Веб-сайт проекта Space Engine стал победителем в номинации «открытие года (лучший сайт-новичок года)» в интернет-конкурсе «ЗАРЯ-2011 (Звезды АстроРунета и Я — 2011)» проекта «Астротоп России»

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

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

Ссылки
  • Space Engine — планетарий, космический симулятор;
  • Celestia — планетарий;
  • Stellarium — планетарий;
  • Orbiter — планетарий, космический симулятор;
  • MojoWorld — генератор процедурных планет;
  • Kerbal Space Program — аркадный космический симулятор с конструктором кораблей;
  • Infinity — MMO с процедурными планетами;
  • Outerra — планетарный с возможностью процедурной детализации поверх реальных текстур.

По материалам: spaceengine.org, habr.com, wikipedia.org

 

Posted on 20.07.2019

Оставить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *