mercredi 29 décembre 2021

MFS 2020: Occasion manquée

J'étais prêt, j'étais lancé : en manque de X-Plane pour cause d'indisponibilité de mon PC le soir (l'ordinateur dort avec le bébé, ce qui n'est malheureusement pas optimal), je m'étais décidé à rattraper ce retard en m'offrant Microsoft Flight Simulator 2020 sur XBox. Je vois que c'est disponible pour XBox X et S, et ma XBox est une S, tout va bien, j'achète sur l'horrible site Microsoft (entre microsoft.com, xbox, com et live.com, démultipliés par le pays et la mauvaise ergonomie, c'est vraiment pas terrible !), je tente de lancer la chose sur la XBox, et là, on me dit que c'est incompatible !

Une petite recherche désespérée plus tard, et je comprends ma méprise : il ne faut surtout pas confondre la XBox One S, nouveau modèle de XBox One sorti en 2016, dont je suis l'heureux possesseur, et la XBox Series S, la version moins pêchue de la XBox Series X, sortie en 2020, que je n'ai pas. MFS 2020 (eh mes fesses 2020?) ne fonctionne bien évidemment que sur la deuxième.

Z'auraient pas pu changer de lettre ???

Annulé, remboursé, je retourne sur KSP (et ça rime).

mardi 28 décembre 2021

Réparation d'un Warthog Hotas

Voici un petit retour d'expérience sur la réparation d'une manette des gaz Warthog Hotas de chez Thrustmaster. Cet été, ma manette des gaz a soudainement commencé à refuser de fonctionner. Au branchement, j'avais les LED qui s'allumaient brièvement avant de s'éteindre, et le système d'exploitation me remontait des erreurs. Après avoir tenté plusieurs resets, j'ai contacté le support Thrustmaster.

J'ai été agréablement surpris de leur réactivité. Leur système de support est bien fichu, avec un système qui permet de leur envoyer des vidéos et des photos pour leur montrer le problème. Seul souci : leur système anti-spam est extrêmement agressif, et il m'a fallu envoyer mes e-mails plusieurs fois à chaque fois afin que cela finisse par passer.

Après avoir une nouvelle fois tenté un reset et une mise à jour du firmware, ils ont conclu que le circuit imprimé devait avoir grillé, et m'ont proposé soit de leur envoyer la manette, soit que eux m'envoient un nouveau circuit imprimé avec des instructions, en précisant bien que cela n'affectait pas ma garantie et que je pouvais toujours leur renvoyer la manette si la réparation ne fonctionnait pas. L'idée d'une part de trouver une boite et suffisamment de plastique à bulle pour envoyer un colis fort lourd sans rien casser, et d'autre part de voir ma manette disparaître pour une durée indéterminée (et puis un peu la curiosité de le réparer moi même) m'ont poussé vers la seconde option.

Et en effet, j'ai reçu une semaine plus tard dans une belle enveloppe renforcée avec une grosse étiquette "ne pas plier" (tu m'étonnes !) le nouveau circuit imprimé. Il m'a fallu redemander les instructions, qui avaient été mises sur un PDF un peu à la rache, mais au final ce n'était pas très compliqué: débrancher en repérant bien les fils, en rebrancher pareil. Je me suis fait un peu peur en rebranchant lorsque j'ai bien plié le connecteur, mais, "plié pas cassé", j'ai remis en place sans dommage: ne pas hésiter à utiliser un tournevis ou une pince pour pousser proprement les connecteurs dans leurs logements.

Redémarrage, miracle, ça fonctionne ! Je suis très content, et ils avaient l'air contents aussi !

mercredi 8 décembre 2021

Kerbal sur XBox

Une des raisons de mon silence ces derniers mois est en fait une nouvelle configuration de mes activités de geek, puisqu'à la suite d'un changement de configuration familiale, je n'ai plus accès à ma machine principale le soir. C'est plus compliqué pour poster, pour faire du Blender ou même pour coder, mais cela n'empêche pas de gamer, grâce à la petite XBox que je regardais de haut auparavant et qui finalement fait plutôt bien le boulot.

En particulier, je dois saluer la version de Kerbal Space Program sur XBox, qui est tout à fait remarquable ! Les contrôles sont vraiment bien faits, et même si on se bat un petit peu pour déplacer le curseur en mode construction, ils ont tout fait pour rendre le jeu aussi ergonomique que possible, avec une utilisation extensive des boutons au niveau des index pour comme modificateurs, et de menus de type roues quand il y a juste trop d'options disponibles.

En vol, tout se passe de manière très intuitive, avec un stick pour la vue, et l'autre stick plus les gâchettes pour les axes de lacet, tangage et roulis.

En mode manœuvre, il faut un peu jongler avec les boutons pour passer d'un mode à un autre et d'un axe à un autre, mais ça finit par venir, et j'ai réussi à gérer un rendez-vous orbital presque du premier coup.

Maintenant, il ne me reste plus qu'à saisir les arcanes des captures d'écran pour pouvoir partager un peu !

Ouh là là, que fais-je ?

Ça va faire 6 mois que je n'ai pas posté ! Honte à moi.

mercredi 16 juin 2021

Expérience en simulateur A320 full motion

Mes collègues m'ayant gentiment offert lors de mon pot de départ une "expérience" en simulateur A320 full-motion, j'ai enfin réservé. Ils avaient eu le budget pour 1 heure, mais j'ai rajouté une autre heure, ce qui au final a clairement valu le coup.

J'avais déjà eu l'occasion de faire 1 heure de simulateur statique Boeing 737, expérience sympathique, mais finalement pas si transcendante : on avait juste aligné les atterrissages dans des endroits rigolos, mais j'avais à peine touché autre chose que le yoke et la manette des gaz. Ici, je m'étais préparé. Déjà, avec une 50aine d'heures de Toliss sur X-Plane dans la ceinture, j'étais prêt. Ensuite, avec 2 heures réservées, j'avais amplement le temps de faire un vol complet en incluant la mise en route.

C'est ce que j'ai expliqué à l'instructeur: je voulais faire un vol complet, avec une météo un peu sympa histoire de profiter du mouvement. Je lui ai montré ma check-list, il m'a dit, super, je te laisse te débrouiller. Il m'a expliqué qu'il était d'abord un pilote B737, et avait juste fini une petite formation A320, je me suis rapidement senti plus calé que lui sur les détails de la machine. Comme ça, il m'a laissé faire tout ce que je voulais !

Direction le simulateur. Impressionnante bestiole! Grosse cabine, montée sur des vérins monstrueux, on y accède via un escalier et un petit pont-levis. À l'intérieur, plusieurs sièges réglables (les spectateurs ?), la console de contrôle de la simu, et enfin, le siège du commandant de bord. Je m'installe, et je commence à dérouler la check-list.

C'était vraiment un plaisir que de tripoter et d'appuyer enfin pour de vrai sur chaque bouton, sur chaque manette. L'instructeur me sort un plan de vol de Gatwick vers Orly, je rentre ça dans le MCDU, j'ai une discontinuité qui nous plonge lui et moi dans les affres de la confusion, mais on y va quand même (j'ai découvert pendant le vol que j'avais simplement oublié de renseigner la VIA dans ma STAR).

Et puis c'est parti ! Petit mal de coeur pendant le roulage lors des grands virages, mais dès que l'on décole, ça va beaucoup mieux. Les turbulences nous secouent comme des pruniers, mais qu'est-ce que c'est fun. Les graphismes ne sont pas terribles, mais c'est amplement rattrapé par le mouvement et l'ambiance sonore.

On continue à dérouler les procédures, et l'on s'approche d'Orly, de nuit dans le brouillard. J'approche des minimas, et je ne vois toujours pas la piste... Là, erreur grave, je continue malgré l'absence de visuel. Finalement, les phares éclairent enfin le sol, et quand je ne vois que des champs, c'est le gros coup de panique, j'annonce "Go around!", manette à TOGA, et on remonte. Après vérifications, il s'avère qu'Orly n'est pas un aéroport assez important, et que le simulateur ne propose donc qu'une seule piste ! On refait un tour, on vient s'aligner sur la piste disponible, et je me pose à la mano, un peu brutalement cependant, ayant tardé pour l'arrondi.

Puis comme il restait du temps nous avons fait des choses plus classiques, décollages suivi d'atterrissages dans divers endroits intéressants et avec des météos de plus en plus pourries, à Innsbrück, à Zurick, et enfin un atterrissage dantesque à Heathrow par un orage épouvantable, j'avais le manche pratiquement tout le temps en butée à droite et à gauche pour tenter de rester à peu près aligné, et les PAPIs étant absents, c'était vraiment du sport.

Voilà, en conclusion, une expérience inoubliable, même si, étant donné les tarifs (à peu près €1000 les 2 heures), je ne suis pas près de recommencer. Voilà ce que j'en retire:

  • 2 heures, c'est la bonne durée. Ça permet de faire un vol complet, sans stress, et d'avoir un peu de temps après pour continuer à s'amuser.
  • J'ai bien fait d'inverser la position de la manette et du joystick sur mon bureau la veille pour m'entraîner, j'avais peur d'une grosse perte de précision en tenant le stick de la main gauche à la place du commandant de bord, et puis finalement ça s'est bien passé.
  • Indispensable de débarquer avec sa propre check-list. Ils avaient peut-être quelque chose, mais au moins je savais exactement ce que j'avais à faire et j'avais pu m'entraîner
  • J'aurais du préparer un plan de vol à l'avance, et m'entraîner à l'ajouter au MCDU, ce qui m'aurait évité l'erreur du VIA
  • J'aurais du mieux penser à l'avance à ce que je voulais faire après le vol. Finalement, je me suis tiré de mon vol principal assez rapidement, et j'aurais du mieux optimiser le temps qu'il me restait. En y repensant, j'aurais du probablement demander à simuler une panne, comme un problème moteur au démarrage. Les atterrissages étaient sympa, mais ça aurait fait quelque chose d'autre à essayer.

vendredi 30 avril 2021

La Royal Air Force s'amuse

Ou plutôt, elle s'entraîne. Passant par hasard sur FlightRadar, j'ai eu la surprise de voir ce qui ressemblait à 2 Eurofighters et 1 A330 MRTT de l'armée de l'air britannique faire des cabrioles au dessus de la Mer du Nord.

Pour l'A330 MRTT, l'on voit très bien les beaux ronds au dessus de l'eau, les hippodromes pour le ravitaillement. Les Typhoons, eux, font certainement de la voltige et de l'entrainement au ravitaillement de nuit. Bon courage, déjà que le jour c'est pas évident...

mercredi 21 avril 2021

Short string optimisation - Comment l'observer ?

Alors, on l'a, ou on l'a pas ? Si vous avez un compilo récent sur un système d'exploitation raisonable, la SSO, vous l'avez. Si vous avez un compilo pas si récent sur un système d'exploitation trop raisonable (Red Hat, je te regarde, la compatibilité, c'est bien, mais je veux mon SSO !), alors vous ne l'avez pas. Mais comment être sûr ? Eh bien, logiquement, si vous avez la SSO, cela veut dire que la capacité de votre chaîne est strictement supérieure à zéro, même si elle vient d'être créée vide. Alors, essayons !

#include <string>
#include <iostream>


int main()
{
  std::cout << std::string().capacity() << std::endl;
  return 0;
}

On compile, on exécute, et chez moi ça donne 15. Yeah !

samedi 17 avril 2021

On traverse la manche en DC3

Je ne vous avais pas parlé de mon achat (pas si) récent du DC-3 (ou du C-47 dans sa dénomination militaire) de VSkyLabs ? Voilà un avion qu'il est beau. Voilà aussi un avion qu'il est difficile à manoeuvrer. Déjà, il faut arriver à démarrer les moteurs, en bidouillant la manette du mélange en même temps qu'on lance le starter. Ensuite, il faut se battre avec la manette des gaz, le frein différentiel et la commande de bloquage de la roulette de queue pour atteindre la piste de décollage. Et enfin, une fois qu'on est en l'air, on passe sa vie à bidouiller le trim pour garder une altitude et une direction à peu près constantes. Mais que c'est fun !

Je suis donc parti de Calais, et je suis parti plein Ouest pour viser l'aéroport de Lydd, dont la page Wikipédia nous apprend qu'il n'est pas étranger au DC3. L'on peut s'imaginer ramenant les boys à la maison, en 1944, après une bataille dans les Flandres. Un peu de radioguidage plus tard, l'aéroport est en visuel, je fais un petit circuit d'arrivée et je me présente sur la 03, je fais une approche aux petits oignons grace au PAPI (d'ailleurs, l'aéroport de Moscou est-il doté de PAPI Russes ?). Le toucher est plutôt aléatoire et je fais un petit tour sur moi même à l'arrivée, mais l'avion ne semble pas trop avoir souffert, et je m'en vais m'installer au parking. Ouf !

lundi 22 février 2021

Plaque un peu moins low-cost pour Warthog Hotas

Vous souvenez-vous de ma plaque pour Warthog Hotas faite avec du carton laminé ? Ayant récemment trouvé un service (Sculpteo, mais il en existe d'autres) qui propose gravure et découpe au laser de plaques en acrylique, j'ai décidé de sauter le pas et de voir ce que ça pouvait donner. Je viens de recevoir le résultat, et c'est plutôt sympa.

En terme de mise en œuvre, la profondeur de gravure est basée sur le style (typiquement, la couleur) du schéma de départ. On envoie le fichier SVG, et l'on peut ajuster dans leur interface les profondeurs de gravure. Ça m'a coûté 15€ la plaque plus 15€ de frais de port, comme quoi ça vaut probablement le coup d'en commander plus d'une à chaque fois. Une semaine plus tard, j'ai reçu ma plaque découpée.

Le résultat est très propre. Si je pinaille, je pourrais critiquer la très légère encoche dans mes ronds, certainement l'endroit où le laser a commencé sa découpe. En revanche, si la surface supérieure est impeccable, ce n'est pas la même chose avec la surface inférieure, qui est couverte de traces de brûlures, je suppose à cause du support sur laquelle elle était posée lors de la découpe. Ce n'est pas un souci pour moi puisque seul le dessus m'intéresse, mais c'est bon à savoir. Également, la plaque dégage une forte odeur de plastique brûlé, donc nettoyage obligatoire avant de faire quoi que ce soit avec !

Petit souci, en revanche : les gravures sont pratiquement invisibles. Est-ce mieux avec d'autres couleurs ou d'autres matériaux (bois ?) ? J'ai donc repassé les gravures au feutre de couleur, puis passé un chiffon imbibé de nettoyant, et j'arrive à un résultat bien plus lisible. Il faudra peut-être repasser régulièrement, mais ce sera sans doute l'occasion de changer de couleur.

mardi 16 février 2021

Enfin arrivé !

Enfin, j'ai aterri hier soir à JFK ! Après un vol en temps réel de plus de 8 heures (mais étalé par petits morceaux, sur plusieurs jours), je suis enfin arrivé à l'approche du grand aéroport New Yorkais. Le temps était beau, mais j'ai quand même réussi à me viander la première fois en me mélangeant les pinceaux avec les contrôles de pilote automatique. Sauvegarde, on recommence la finale, et là ça passe comme une lettre à la poste, photo finish. On roule jusqu'à la porte la plus proche, et on fait une extinction totale.

Plus qu'à le faire dans l'autre sens, maintenant.

vendredi 12 février 2021

Gros vol non moins tranquillou d'Orly à New York

J'aime bien l'idée du long-courrier. Se retrouver, un peu hors du temps, nonchalament dans son fauteuil, bercé par le ronronnement des moteurs, alors qu'au dehors on abat les kilomètres dans un environnement hostile et glacé me comble d'aise. Étrangement, j'éprouve des sentiments similaires en simulateur (pour nettement moins cher, cependant). Alors, de temps en temps, je démarre un vol, et une fois en croisière, je le laisse tourner le temps qu'il faut pour qu'il arrive. Pendant ce temps, je bosse, je vais manger, n'importe quoi d'autre, mais la pensée que je vais virtuellement quelque part me rend serein.

Quoi de plus idéal, donc, que le nouvel add-on de chez ToLiss, qui permet de transformer son A321 en A321 Neo, avec notamment les variantes LR et XLR (pour Long Range et eXtra Long Range), lesquelles permettent comme leur nom l'indique d'aller plutôt loin. Je me suis donc lancé hier dans un transatlantique, décollant de mon aéroport fétiche d'Orly, pour survoler le Royaume-Uni, l'Irlande, tout l'Atlantique nord, et atterrir à JFK.

Voyez ci-dessous mon bel avion avec Orly en arrière plan.

Alors, de temps en temps, je retourne dans le cockpit pour aller voir un peu là où j'en suis. Je regarde les cadrans, je vérifie les prédiction de carburant (oui, je suis court, va pas falloir rater son approche...), j'observe le rebalancement automatique des réservoirs, le compte à rebours égrennant les milliers de nautiques avant l'arrivée, je m'insurge contre ce fort vent de face, je m'émerveille de voir la consommation à 44 KG/min, si basse à cette altitude, et juste après je me désole de penser que sur l'ensemble du vol, ça fait quand même 25 tonnes de kérosène cramé dans l'atmosphère. Splendeurs et misères des turboréacteurs double-flux à haut taux de dilution...

mardi 9 février 2021

Petit vol tranquillou entre Tunis et Ajaccio

J'avais envie de me remettre doucement à l'excellent Eclipse 550NG et de faire un petit tour au dessus de la Méditerrannée. Départ de Tunis de bon matin, vol sans histoires, temps principalement passé à ajuster les vitesses d'ascension et de descente pour maximiser les performances. Aterrissage sans histoires à Ajaccio, sur la réserve, car, pas malin, j'étais parti avec un demi plein qui s'est avéré finalement très ricrac !

mercredi 3 février 2021

Cubemap complete

Et voilà, la logique de ma cubemap est complète ! J'ai perdu beaucoup de temps à tenter de projeter une texture dite "cyclique", mais finalement une vraie cubemap avec les 6 côtés, c'est beaucoup plus simple.

J'ai utilisé pas mal de trucs pour me simplifier la vie : le quad rendu en plein écran plutôt que de s'embêter avec un vrai cube, le quad généré à la volée dans le shader, le quad installé à distance 1 avec changement du test de profondeur z en <= plutôt que <.

Et voilà le résultat, mon astéroide au milieu des nuages. Et on peut tourner autour !

vendredi 29 janvier 2021

Afficher un quad plein écran avec OpenGL

Je suis en train de m'intéresser aux "skyboxes", c'est à dire l'affichage d'un environement tout autour de la caméra via une texture. En gros, l'idée est de créer un cube texturé qui suive la position de la caméra (voyez les explications techniques ici) pour afficher le "fond" du paysage, comme un ciel, une galaxie, un horizon urbain, qui remplisse le monde à peu de frais avant d'afficher les vrais objets à proximité. Manifestement, juste afficher un gros cube est maintenant dépassé, et bien plus recommandé est l'idée d'afficher juste un quad formé de deux triangles qui couvrent complètement l´écran, et de projeter la texture correctement. Je passe sur les détails de la projection avec lesquels je suis encore en train de me battre, pour vous parler plutôt de l'affichage du quad.

Comment afficher ce polygone ? La première idée qui vient, évidemment, c'est de créer les vertex buffers, les element buffers, de faire tous les appels à "bind" qui vont bien, et tout le toutim. Mais il semblerait qu'il y ait des solutions bien plus intelligentes...

En effet, pourquoi ne pas mettre toute la géométrie directement dans le vertex shader, puisqu'elle est fixe ? On sait que l'on veut des triangles étirés entres les coordonnées (-1, -1 ) et (1, 1), et l'on sait également quelles seront les coordonnées de textures voulues.

Le truc, c'est qu'un vertex shader a accès à l'index du vertex qui est en train d'être calculé. Donc, en incluant dans le shader un tableau qui indique pour chaque index quelles sont ses coordonnés de position et de texture, il n'y a plus qu'à retrouver les données à la volée, et c'est bon. Regardez moi ça, je vous le fais en simplifié :

Dans le code C++, on a un simple appel à draw, à poil, sans rien autour (à part la mise en oeuvre du shader)

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

Et dans le vertex shader, on utilise l'index gl_VertexID pour accéder aux coordonnées voulues dans les tableaux positions et coords, et on fixe notre z à 0.99 pour l'avoir au fond :

out vec2 textureCoords;

void main() {
    const vec2 positions[4] = vec2[](
        vec2(-1, -1),
        vec2(+1, -1),
        vec2(-1, +1),
        vec2(+1, +1)
    );
    const vec2 coords[4] = vec2[](
        vec2(0, 0),
        vec2(1, 0),
        vec2(0, 1),
        vec2(1, 1)
    );

    textureCoords = coords[gl_VertexID];
    gl_Position = vec4(positions[gl_VertexID], 0.99, 1.0);
}

Voilà, c'est incroyablement simple. Avec un seul appel OpenGL (1 ! UN !) on arrive à afficher le Quad qui va bien. Magique, non ?

(Plus d'infos, et plus d'approches supplémentaires, VBO, geometry shaders et tout le toutim, sur la sur la question StackOverflow qui va bien)

samedi 16 janvier 2021

Git et les sous-modules

Je viens de découvrir le concept des sous-modules dans Git, et je trouve ça vachement malin.

En effet, il fut un temps où pour construire une bibliothèque ou application tierce, il fallait commencer par aller chercher tout un tas de dépendances, les construire, les installer, et ainsi de suite, en espérant ne pas trop se tromper dans les versions. Un cauchemard.

Et pourtant, j'ai découvert que maintenant, nombre de projets sur Github incluent directement leurs dépendances sous forme de sous-modules, ce qui fait que l'on clone le dépôt, qui ensuite va cloner d'autres dépôts dans les répertoires qui vont bien, et ainsi de suite. Et surtout, le dépôt principal enregistre non seulement le lien vers le sous-dépôt, mais la version du code, ce qui permet de récupérer exactement la bonne version.

Voyez par exemple ce dépôt : dans son sous-répertoire "externals", il possède un lien vers les dépôts de gli et de glm, à une version donnée. Glm, par exemple, peut avancer, et produire un changement qui casse la compatibilité. Si je clone Vulkan-glTF-PBR en utilisant la commande "git clone --recursive", je vais récupérer la version ancienne de Glm. Je peux ensuite si je le souhaite bouger la version GLM pointée, corriger le code pour que ça compile, et envoyer la pull request.

J'ai commencé à utiliser cette approche pour séparer mon moteur de rendu de la démo qui l'utilise: ainsi, je peux avancer sur le moteur à travers une démo, puis créer une nouvelle démo qui pointe vers ce même moteur et avancer sur un autre point. Ainsi, le code du moteur reste propre, et il est particulièrement simple de cloner une démo et de commencer à coder. Pas besoin de gérer chemins ou variables d'environnement, tout est à la bonne place.

Bonne année !

Bonne année à tous, oh, vous lecteurs innombrables de mes petits billets par trop infréquents. Je vous souhaite une excellent année 2021, et vous fait de gros bisous !