Blog: Alter World

Виртуальный мир является своеобразным Alter Ego мира реального…

Скрипты для Stellarium'а

26 комментариев 1 августа 2012, 22:25 • Stellarium

В конце этой недели я планирую выпустить очередную тестовую версию Stellarium'а для того, чтобы поклонники этого планетария могли проверить что мы в него добавили и насколько корректро это новое работает. В предыдущем месяце в ядре Stellarium'а мы практически не копались — так, исправляли ошибки и делали кое-какие косметические улучшения, до которых дошли руки. Среди таких вот косметических улучшений оказалось расширение набора сценариев (скриптов), которые поставляются в одном пакете со Stellarium'ом. Планировал я это сделать ещё к предыдущему релизу, но тогда до них руки так и не дошли, зато в следующем они будут.

Итак, пройдусь по всем добавленным на этот момент новым сценариям.

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

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

Затмение 10 января 2068 года с горы Олимп — этот сценарий позволит вам оказаться на самой большой вершине Солнечной системы — горе Олимп — и полюбоваться марсианским солнечным затмением.

Покрытие Земли и Юпитера в 2048 году — сами по себе покрытия Земли и Юпитера Фобосом не редкость для наблюдателя с Марса, но вот чтобы оба небесных тела оказались покрыты в течении одного дня — это действительно редкое событие!

Пятикратное затмение на Деймосе в 2027 году — этот сценарий демонстрирует поочередно серию из пяти затмений — сперва Фобос дважды затмевает Солнце, потом Солнце и Фобос оказываются за Марсом и под финал Фобос успевает попасть в тень Марса ещё раз!

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

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

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

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

Если у кого-то появятся идеи относительно того, чтобы ещё такого интересного астрономического продемонстрировать или может остро не хватает каких-то функций в скриптовом движке Stellarium'а, то дайте нам знать — вполне возможно, что они появятся в следующей версии планетария.

Ещё заметки на эту тему:

Метки: ,

26 комментариев

Вы можете подписаться на комментарии к этой статье через RSS или отправить к ней TrackBack.

  1. John Doe • 3 августа 2012 г. в 17:50

    ОК, как насчет виртуального тура на модную тему «Вселенная. Почуствуй себя ничтожеством»?)) Будет неплохо сочетаться с видеороликами, во множестве выложенными в Инет (на, ютьюб, в частности) и демонстрирующими относительные размеры небесных тел и звезд. Начиная со старушки-Земли и заканчивая гигантами и сверх-гигантами типа Бетельгейзе, Антаресом и т.п. Нельзя забыть также и ближайшие звезды (долететь к которым есть хоть какой-то шанс) — Альфу Центавра, например. Не забыть еще Шедар\Альфу Кассиопеи)) И тур по прочим знаменитым звездам. Соеденить бы это еще с аудиолекциями и презентациями ... (надеюсь, мечтать не вредно7).))

    А парады планет? А знаменитые «явления» знаменитых комет — «вестников войн»?

  2. Александр Вольф • 3 августа 2012 г. в 18:00

    Первая часть предложения больше соответствует возможностям Celestia — у нас же планетарий, он физически не умеет «летать» к звёздам, а вот в Celestia такое есть.

    За парады планет спасибо, это вполне себе хорошая идея для скрипта.

    С кометами идея хороша, но пока её лучше не трогать — наши кометы хвостами ещё не обзавелись.

  3. John Doe • 7 августа 2012 г. в 15:05

    Не, не ... я имел ввиду не полеты к звездам, в том виде, в котором можно перемещаться между объектами виртуальной солнечной системы в Celestia. Я имел ввиду обычный показ перечисленных звезд на небе. Типа — «Вон, видишь вон ту звездочку на небе — это гигант ... класса, размером в ... раз больше нашего Солнца». И так по нарастающей, до вылезания глаз на лоб.)) Хотелось бы без привязки к конкретной дате, конечно ... чтоб в любой момент можно было сопоставить положение объектов в виртуальном планетарии и на небе. Ну, уж как получится!

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

  4. Александр Вольф • 7 августа 2012 г. в 17:17

    Да, в таком виде это хорошая идея для сценария и она вполне реализуема для Stellarium'а.

    В теории Stellarium умеет воспроизводить видео и аудио, но на практике очень многое упирается в драйвера на соответствующее оборудование, из-за чего аудио может воспроизводится только на 32-битных Windows (если речь идёт только о Windows-порте) на примерно 20% аудиокарточек.

  5. John Doe • 8 августа 2012 г. в 14:36

    Извините за назойливость любопытствующего. А не предусмотрена ли возможность в информации об объектах, всплывающей в окне Stellarium, при указании на оные, иметь ссылку, скажем, на внешние интернет-источники (Wikipedia и etс.), базы знаний (в онлайн или локальные, скачиваемые и подключаемые к Stellarium)?

    Или смысла особого нет? Проще в браузере воспользоваться поиском? Просто копание в ссылках на страницах результатов поиска в поисковых системах иногда затягивается ... а тут, вроде как, компетентные люди могут дать ссылку на проверенную информацию.

  6. Александр Вольф • 8 августа 2012 г. в 14:40

    Нет, такой возможности нет и в ближайшем будущем не планируется. Когда-то такое обсуждали в команде разработчиков, но потом отложили в долгий ящик.

  7. ivan • 8 сентября 2012 г. в 16:44

    такой вопрос по стеллариуму: хочу иметь возможность расставлять произвольное количество геостационарных меток по небу. скажем, пометить положение солнца 1 сентября в 12 часов UTC (над 8.03 северной широты и 0.04 западной долготы), причем чтобы метку можно было нарисовать произвольного размера и цвета. соответственно, чтобы при перемещении точки наблюдения по земле эта метка смещалась по небу, оставаясь над заданными координатами земли.

    это можно сделать как-то типа сценариями или вроде того?

  8. Александр Вольф • 8 сентября 2012 г. в 17:01

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

  9. ivan • 8 сентября 2012 г. в 23:09

    а как писать плагин? нужно ставить среду разработки (какую?), писать по ихнему API, компилировать динамические библиотеки?

  10. Александр Вольф • 8 сентября 2012 г. в 23:23

    IDE можно использовать почти любую, но мы предпочитаем QtCreator. Плагины пишутся на C++ — причем можно делать как статические, так и динамические плагины. Подробности есть в нашей вики.

  11. ivan • 9 сентября 2012 г. в 03:22

    спасибо

  12. Di • 20 февраля 2015 г. в 18:03

    Здравствуйте, никто не подскажет литературы по созданию скриптов для stellarium?

  13. Александр Вольф • 21 февраля 2015 г. в 01:38

    специальной литературы по созданию скриптов в Stellarium'е нет, но есть документация разработчиков на сайте планетария, где написано как делать скрипты. Если что-то не получается, то нужна какая-то конкретика, иначе помочь проблематично.

  14. Di • 26 февраля 2015 г. в 05:01

    Спасибо большое) Например, как в zodiac сделать задержку на каждом из созвездий? И можно как-нибудь качественно сделать захват видео из stellarium'а, чтобы получался как видеофильм?

    P.s. буду ОЧЕНЬ благодарна за ответ!

  15. Александр Вольф • 26 февраля 2015 г. в 11:01

    Задержка делается при помощи функции core.wait ();, где в качестве параметра указывается время задержки в миллисекундах. Качественный захват видео — один из вариантов — делать скриншоты (прямо из скрипта) и потом из них собрать ролик.

  16. Di • 4 марта 2015 г. в 16:06

    Спасибо))

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

  17. Александр Вольф • 4 марта 2015 г. в 22:29

    Это всё делается масштабированием. В качестве примера можете взять скрипт Constellations Tour — он довольно короткий и простой для понимания.

  18. Di • 22 апреля 2015 г. в 17:29

    Спасибо огромное!!! А не подскажете функцию которая меняет частоту кадров?

  19. Александр Вольф • 22 апреля 2015 г. в 17:38

    Очевидный метод — stellarium.org/doc/head/c...3c9544ab30f50ede

  20. timk • 30 марта 2025 г. в 20:15

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

    Возник вопрос, связанный с разработкой плагинов и пр.

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

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

  21. Александр Вольф • 30 марта 2025 г. в 22:05

    Инструкции по сброке планетария есть в файле BUILDING.md (т.е. в дереве исходного кода) — а вот ссылку на него на странице документации плагинов не поправили.

    В целом инструкции остались верными в части последовательности шагов, разве что SVN следует заменить на Git, да и динамические плагины сейчас де-факто работают только в Linux/BSD (на macOS их никогда и не делали, а на Windows их нужно чинить, но т.к. интерес разработчиков сторонних плагинов околонулевой, то и не занимаемся этим).

    Со статическими плагинами все просто: в дереве исходного кода создается каталог для плагина и по аналогии с другими плагинами добавляются соответствующие правки в CMakeLists.txt и StelApp.cpp файлы. Пример совсем недавно добавленного плагина: github.com/Stellarium/stellarium/pull/4005

  22. timk • 30 марта 2025 г. в 23:00

    Спасибо большое, попробую!

  23. timk • 31 марта 2025 г. в 01:31

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

    Пробовал использовать FOVCircularMarker из SpecialMarkersMgr, однако это не подходит (круг двигается, если двигать поле зрения), и просто MarkerMgr.markerObject, но с большими значениями size маркер становиться расплывчатым.

    Нашёл класс StelCircleArcRenderer, но его можно использовать только в плагинах, как я понял.

    Подскажите, пожалуйста!

  24. timk • 31 марта 2025 г. в 03:28

    Здравствуйте! Подскажите пожалуйста, как можно нарисовать малый круг заданного радиуса вокруг звезды используя скрипты stellarium.

  25. Александр Вольф • 31 марта 2025 г. в 10:06

    Два подхода рисования кружков — либо текстуру (пример использования в плагине «Навигационные звезды» — метод void NavStars::draw (StelCore* core)), либо примитив (пример использования в отрисовке маркеров объектов глубокого космоса — метод void Nebula::renderRoundMarker (StelPainter& sPainter, const float x, const float y, float size, const Vec3f color, const bool crossed) const)

  26. Александр Вольф • 31 марта 2025 г. в 10:09

    Теперь по скриптам — тут только то, что объявлено как public — и, соответственно, MarkerMgr.markerObject. Для скриптов рисования примитивов не добавляли.

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

XHTML: Вы можете использовать эти тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>