Lucy dans Space Engine
Comment pimper Space Engine pour visualiser une mission spatiale
Pour une vidéo que j’ai en cours de préparation au sujet de mon voyage en Espagne avec la NASA (vous pouvez lire le détail en deux parties de mon périple ici et ici, et si vous voulez en savoir plus sur la mission en elle-même, c’est par ici), je voulais montrer les troyens de Jupiter, l’astéroïde Polymèle et la sonde Lucy. Pour ça, j’ai demandé à And0uille qui m’a aidée à tout mettre en place dans le logiciel Space Engine. Voici son explication de comment on peut ajouter tout ce qu’il faut dans le logiciel Space Engine pour illustrer le principe de la mission Lucy.
Installation de Space Engine sur Debian
La bonne nouvelle pour commencer, c’est qu’il est bien possible de faire tourner Space Engine 0.990 sur Debian (testé sur Debian 11) !
Il faut tout d’abord installer Steam en suivant les instructions données ici. Il faut ensuite acheter le jeu (environ 20€) et lancer le client Steam. Pour le rendre “installable” sur Debian, aller dans le menu Steam > Settings > Steam Play et cocher “Enable Steam Play for all other titles”. Dans le menu déroulant juste en dessous (“Run other titles with”), choisir “Proton 6.3-7” (c’est à ce jour la version la plus récente).
Un redémarrage du client Steam est alors nécessaire. Une fois le redémarrage terminé, il est possible de lancer l’installation de Space Engine. Une fois Space Engine installé, cliquer sur “Play”. Une fenêtre apparaîtra pour demander l’installation de “Linux Steam Runtime - Soldier”. Laisser ce dernier outil s’installer, puis démarrer Space Engine !
Ajouter un astéroïde
On constate que par défaut, Polymèle n’existe pas dans Space Engine. On va donc créer un fichier définissant cet astéroïde, de façon à le rendre visible dans le logiciel. Pour ce faire, on s’appuie sur le guide de Space Engine décrivant comment créer une planète (c’est exactement le même fonctionnement pour la création d’un astéroïde). Dans le dossier [dossier steam]/common/SpaceEngine/data/catalogs/planets/
on créer le fichier polymele.sc
(téléchargeable ici).
Asteroid "Polymele/15094 Polymele (1999 WB2)"
{
ParentBody "Sol"
AsterType "JupiterTrojan"
AbsMagn 11.78
SlopeParam 0.15
Albedo 0.091
Radius 10.5375
RotationPeriod 5.8607
Orbit
{
Epoch 2459396.5
SemiMajorAxis 5.174
Period 4.3e+03
Eccentricity 0.0959
Inclination 12.99
AscendingNode 50.33
ArgOfPericenter 4.31
MeanAnomaly 354.19
PericenterDist 4.678
}
}
On trouve les informations concernant Polymèle par exemple sur sa page Wikipedia. La description des paramètres (fonction, unité…) est disponible dans la documentation de Space Engine. On pourrait créer un astéroïde de façon assez similaire sur Celestia, en plaçant au bon endroit un fichier décrivant les paramètres physique de Polymèle. Une des choses qui est cependant pratique avec Space Engine c’est qu’il est possible de voir les logs concernant le traitement de notre fichier “.sc” et de savoir quelle ligne est éventuellement mal formatée en allant voir le fichier de log [dossier steam]/common/SpaceEngine/system/se.log
.
On pourrait aller plus loin en créant une texture et une forme pour Polymèle mais on va se contenter d’une forme générique (on ne sait pas tellement à quoi il ressemble de toute façon). On arrive donc au résultat suivant :
Importer plein d’astéroïdes automatiquement
Maintenant qu’on a importé Polymèle dans Space Engine, on aimerait faire en sorte qu’il ne soit pas tout seul. Space Engine ne répertorie par défaut que 155 astéroïdes troyens, sur… beaucoup, et on ne va pas les importer uns par uns !
Il existe des bases de données en lignes, d’instituts publiques, qui répertorient (entre autre) les astéroïdes troyens et certaines de leurs propriétés connues. C’est notamment le cas de cette base (Jet Propulsion Laboratory de la NASA). Elle recense environ 10000 astéroïdes troyens de Jupiter. Pour chacun, elle contient des informations sur les l’ellipse, la taille, la magnitude etc…
On peut interroger cette base de données en sélectionnant les critères qui nous intéressent :
- Limit by Object Kind / Group - On choisit “object kind : asteroids”
- Limit by Orbit Class : “Jupiter Trojan”
- Output Selection Controls : c’est là qu’on va pouvoir choisir quelles informations nous intéressent pour chaque astéroïde.
Afin de pouvoir importer tranquillement nos astéroïdes dans Space Engine, on aura besoin, pour chacun, de :
- Date de première observation (date of first obs.) [DiscDate]
- Diamètre (diameter) [Radius] : une conversion sera nécessaire
- Magnitude absolue (H) [AbsMagn]
- Période de rotation (rot_per) [RotationPeriod]
- Oblicité (NO DATA) [Obliquity]
- Albédo (albedo) [Albedo]
- Description de l’orbite :
- Epoch (epoch) [Epoch]
- Demi grand axe (a) [SemiMajorAxis]
- Période de révolution (period) [Period]
- Anomalie moyenne (M) [MeanAnomaly]
- Argument du périastre (peri) [ArgOfPericenter]
- Excentricité (e) [Eccentricity]
- Inclinaison (i) [Inclination]
- Noeud ascendant (node) [AscendingNode]
- Periapside (q) [PericenterDist]
NB : Les noms des paramètres dans la base JPL sont notés entre parenthèses et ceux de Space Engine correspondant entre crochets.
Une fois que notre requête est formulée correctement, on peut télécharger le fichier JSON correspondant. Attention il est écrit “Download CSV-format” mais il s’agit bien de JSON. Il est possible de le faire via l’API, la commande correspondante est donnée plus bas.
J’ai développé un petit script python qui prend les données qu’on a téléchargé et qui les organise de telle façon que le résultat sera importable dans Space Engine.
Concrètement, les étapes sont les suivantes :
-
On télécharge la base d’astéroïdes troyens depuis le site web, sinon via l’API avec la commande suivante :
$ curl -s -X $'GET' 'https://ssd-api.jpl.nasa.gov/sbdb_query.api?fields=full_name,first_obs,diameter,H,rot_per,albedo,epoch,a,per,ma,w,e,i,om,q&full-prec=false&sb-class=TJN&sb-kind=a&www=1' -o JPL-trojans.json
-
On convertit cette base en un format compréhensible pour Space Engine
$ python3 create-se-trojans-db.py -i JPL-trojans.json -o trojans-asteroids-spaceengine.sc
-
On copie le fichier produit dans
[dossier steam]/common/SpaceEngine/data/catalogs/planets/
NB : le fichier polymele.sc
créé plus tôt peut être supprimé, étant donné que Polymèle est inclus dans la liste des troyens qu’on vient de créer (sous le nom “15094 Polymele (1999 WB2)").
On a ici un aperçu du système solaire avant et après l’ajout des troyens :)
Ajouter une étoile
Il nous faut maintenant ajouter l'étoile devant laquelle Polymèle est brièvement passée le premier octobre (voir l’article de blog). De la même façon que pour la définition d’un astéroïde, il faut un créer un fichier décrivant l'étoile. Celle qui nous intéresse a les coordonnées suivantes (indiquées sur le site de la mission Lucy) :
RA 04:21:15.8, Dec +23:13:24 (J2000).
On peut faire la recherche de cette étoile dans la base SIMBAD par coordonnées en saisissant les choses sous ce format : 04:21:15.8+23:13:24
par exemple. On arrive ici. On trouve sur ce site de quoi interpréter un peu les résultat de SIMBAD.
On peut reporter l’ascension droite, la déclinaison et la magnitude apparente. Une conversion est nécessaire pour obtenir la distance en parsecs entre cette étoile et le soleil.
Dans SIMBAD, les informations de “flux” correspondent la magnitude sur différentes longueurs d’onde. Un peu par défaut, on choisi “G” (“Normal star”).
On choisi également par défaut la sous classe “5V” (voir la documentation de Space Engine).
On arrive au fichier de description de l'étoile disponible ici (polymele-occultation-star.sc
). Et à l’aperçu en image suivant :
Ajouter Lucy
Pour finir, on va ajouter la sonde Lucy !
On télécharge d’abord le modèle 3D blender (gratuit) à cette adresse (credit murilo.kleine). Il est nécessaire de convertir ce modèle au format “obj” pour pouvoir l’importer dans Space Engine. On ouvre donc Blender et on fait simplement Fichier > Export to > obj. Deux fichiers sont créés : un au format “mlt” et le second au format “obj”. On aura besoin des deux.
On créer l’arborescence suivante :
[Steam]/common/SpaceEngine/addons/lucy/models/spacecraft/lucy.obj
[Steam]/common/SpaceEngine/addons/lucy/models/spacecraft/lucy.sss
[Steam]/common/SpaceEngine/addons/lucy/textures/spacecraft/lucy.mtl
Le fichier sss (pour “SpaceEngine Spacecraft Scheme”) est construit à partir de paramètres décrits dans la documentation de Space Engine. Pour construire celui founit, on peut partir de celui deja présent dans Space Engine nommé “Apollo Eagle”. On peut changer quelques paramètres si on le souhaite, mais pour celui fourni ici, on a changé que la “Classe” du vaisseau pour indiqué qu’il s’agit d’une sonde. Il y a surement beaucoup de chose à regarder sur le sujet mais ça sera peut etre l’objet d’un prochain article, pour le moment on se contentera de cette unique modification !
Lancer ensuite Space Engine afin de “construire” Lucy. Dans le menu de départ choisir “Flight Simulator”. La fenêtre “SpaceCraft Manager” s’ouvre. Choisir “Build”. On sélectionne le vaisseau qu’on veut importer et pour lequel on a créé le fichier sss et importé le modèle, puis on clique sur Build. On ferme la fenêtre, pour retourner dans le “Spacecraft Manager”, notre vaisseau a dû apparaître dans la liste. On le sélectionne et on peut dès lors aller le voir (Go to) !
Conclusion
On a maintenant accès dans Space Engine à quelques astéroïdes troyens supplémentaires, on distingue même plutôt bien les camps grecs et troyens ! On a aussi l'étoile qui a été occultée par Polymèle début octobre, et c’est quand même sympa de pouvoir expliquer un phénomène avec jolie vu 3D et la possibilité de naviguer dans l’espace. Et pour finir, il faut quand même dire que Space Engine est plutôt bien pensé. On a pu ajouter pas mal de choses (étoiles, astéroïdes, vaisseau à partir d’un modèle Blender…) sans que ce soit trop pénible. J’espère en tout cas que ces quelques lignes en aideront parmi vous à s’en sortir avec ces manips :)
Je n’ai pas encore vraiment creusé le système de scripts de scenario, qui permet de créer des “visites” dans l’espace. J’ai commencé à regarder mais… je ne suis pas encore hyper convaincue, à creuser ! Je ne sait pas non plus comment je pourrais faire en sorte de manipuler la sonde dans l’espace (lui commander un itinéraire, l’utiliser comme vaisseau spatial façon Faucon Millenium…), mais ça m’intéresse. A suivre !