lundi 23 septembre 2019

Et on rebondit !

Voilà les principaux éléments mis en place: l'on a la balle, et la surface sur laquelle elle rebondit. Je lui ai donné un moment (c'est à dire une vitesse de rotation, pas une petite pause, hein...), histoire de rendre son mouvement plus intéressant.

J'ai modélisé la balle et la surface marbrée dans Blender, puis exporté au format GLTF. Ensuite, j'ai intégré les modèles au sein d'une architecture entité-composant-système où chaque entité (la balle et la surface) a un composant physique, utilisant le moteur physique Bullet, et un composant graphique, qui référence le modèle GLTF et l'affiche via mes primitives de rendu OpenGL.

L'on notera les bugs graphiques sur la balle. Je ne sais pas encore s'ils sont dus à mon modèle, à l'export, ou à mon lecteur de GLTF, il faudra que je creuse la question.

samedi 7 septembre 2019

Oeuf de canard - Petit exemple d'utilisation de la bibliothèque physique Bullet

Cela faisait longtemps que je n'avais pas pondu d'oeuf de canard. En voici un, qui n'est autre qu'une version simplifiée de l'exemple de base d'une balle rebondissant sur une boite.

Par rapport à l'original, je ne me suis tout d'abord pas embêté à construire les objets sur le tas. Bullet suit une règle simple: tout ce que l'on créé, on doit aussi le détruire. Il prend donc un peu partout des pointeurs à poil, et il ne faut surtout pas s'attendre à ce qu'il prenne la responsabilité d'en nettoyer la mémoire. Donc, pour faire plus simple, j'ai tout mis sur la pile, et passé les addresses là ou il fallait des pointeurs. Fuite mémoire impossible !

J'ai également apporté quelques changements supplémentaires, histoire de rendre la simulation un poil plus intéressante. Tout d'abord, j'ai défini une restitution, qui est grosso modo à quel point la surface rebondit. Et j'ai également donné une petite vitesse latérale.

En sortie, le vecteur position de la balle, que l'on peut tracer à l'aide du bon vieux Libre Office Calc.

Et voilà notre balle qui rebondit !

Prochaine étape : brancher Bullet dans mon moteur graphique, histoire de voir un peu ce que l'on fait. Mais ça, ce sera certainement un poil gros pour un oeuf de canard...

jeudi 29 août 2019

Steam, Proton, Linux, et DCS World

J'ai fini par découvrir qu'à côté de la simulation de vol civil, il y avait aussi un sacré poids lourd de la simulation de vol militaire, nommé DCS World. Construit autour d'un cœur gratuit, le principe est d'acheter des modules payants (plutôt chers au demeurant) proposant des avions, des lieux ou encore des missions, et d'aller larguer bombes et missiles seul ou à plusieurs. Bien que fournissant niveaux de difficulté ajustables et aides en tous genres, l'accent est mis sur le réalisme et l'immersion (au point que certains youtubers fournissent plusieurs heures de tutoriels vidéo rien que pour faire démarrer un Mirage 2000...).

Rudement intéressant, moi qui justement trouvait que X-Plane manquait un poil de chasseurs (le Rafale est incroyable pour un gratuit, mais n'a tout de même rien à voir avec le M-2000 ou l'A10 de DCS World), c'est l'occasion de voler dans des zincs un peu différents. Seulement... DCS World n'est disponible que sous Windows...

Alors, il y a de cela pas si longtemps, Valve a officiellement lancé le projet Proton, qui, si j'ai bien compris, vise à compléter et optimiser Wine, en particulier les appels DirectX à émuler vers de l'OpenGL ou du Vulkan, tout cela dans le but de pouvoir faire tourner ses jeux Windows directement sous Linux.

Certains jeux supportent officiellement Proton, tandis que d'autres sont justes répertoriés comme fonctionnant plus ou moins bien. Et justement, ProtonDB dit que DCS World fonctionne très bien, pour peu qu'on bidouille un petit peu avec protontricks, qui installe les dépendances qui pourraient manquer.

Et en effet, ça marche du tonnerre. En plein écran (1920x1080), avec les détails au max, eh beh ça tourne à 45 images par seconde, et X-Plane ne peut pas en dire autant.

Yay, DCS.exe dans mon Ubuntu !

Les contrôles fonctionnent impecc, tout du moins avec une manette de jeu. Maintenant, il faudrait essayer avec joystick, manette des gaz et palonnier, ainsi qu'avec un casque VR, mais c'est peut-être pousser les choses un peu loin avec son conjoint.

mardi 20 août 2019

Un autre petit vol dans les Alpes

Vol aux instruments dans les Alpes à bord du Diamond DA-62 d'Aerobask. Après avoir fait l'exégèse de la documentation de l'aéroport d'Annecy, j'ai tenté l'approche VOR/NDB (sauf que les avions modernes n'ont plus de NDB...), avec un atterrissage tout en douceur.

C'est surtout les paysages, mix de photos satellites et du plugin X-Europe2, qui rendent la ballade bien agréable. Tant qu'il fait beau !

dimanche 18 août 2019

Kerbal - Un minibus efficace

Le fer de lance de mes opérations spatiales, c'est ce petit vaisseau qui ne paie pas de mine: cockpit, 6 passagers, réservoirs et moteurs nucléaires installés sobrement sur les côtés, un port d'amarrage au dessus et un port d'amarrage au dessous, correctement éclairés histoire de faciliter l'amarrage dans la nuit, lorsque le soleil est de l'autre côté de la planète.

Amarrés à ma station spatiale autour de Kerbin (voir la capture d'écran), ils me permettent de remplir les missions de sauvetage autour de Kerbin, Mun et Minmus, de remplir les missions touristiques autour de ces mêmes astres, et finalement de transporter mes Kerbal d'une station à une autre. Grace à ses 3500m/s de delta-V, je peux aller à peu près n'importe où dans le système de Kerbin, et également rejoindre l'orbite de plusieurs autres planètes, à condition d'y avoir du ravitaillement pour revenir !

Ci-dessous, vous pouvez voir ma dernière mission de sauvetage autour de Mun. Je suis parti de mon spatioport en orbite basse de Kerbin, récupéré le Kerbal en orbite basse de Mun, rendez-vous avec une station spatiale sur Mun pour rajouter un peu de carburant, et retour en orbite basse de Kerbin et rendez-vous avec le spatioport. De là, j'ai un véhicule différent dont la seule mission est de décoller du centre spatial pour y rejoindre le spatioport avec personnel et carburant, et pour y retomber en toute sécurité avec les Kerbal suffisamment chanceux pour retourner se reposer sur Kerbin. La capture montre le moment où je m'éloigne de la station lunaire, une mocheté pourtant sacrément utile car elle me permet de raffiner le minerai que je récolte sur Mun.

dimanche 23 juin 2019

Configuration du FMS 737-Zibo

Une mini-vidéo pour montrer le setup de base du FMS du 737 Zibo de X-Plane, entre London Heathrow et Toulouse Blagnac. L'on voit bien à la fin de la vidéo que le top of descent a été correctement calculé.

mardi 18 juin 2019

Fembots and fast vehicules

C'est à partir de concepts plus virils que d'habitude que je me lance dans mon prochain projet d'animation avec Blender. Au menu, voici une tentative de modélisation de visage avec lequel j'essaie de créer une androïde.

J'ai également modélisé un petit véhicule rapide pour se déplacer dans le désert, nom de code "fennec".

Puisque l'on parle de désert, le défi principal sera d'en modéliser un qui ressemble à quelque chose. J'ai commencé à créer plusieurs modèles de cactus pour peupler un peu tout ça.

mardi 14 mai 2019

X-Plane - Appontage en Rafale


Petite vidéo d'un appontage réussi ! Bon, certes, je me suis d'abord crashé un bon nombre de fois avant que ça ne passe. L'occasion quand même de bien rigoler, et également de découvrir les capacités vidéo de X-Plane. C'est plutôt bien fichu : l'on peut rejouer le vol courant, autant de fois que désiré, en changeant de vue comme on veut. Je peux enregistrer la vidéo via le menu adéquat, une fois choisi ma vue, et je peux recommencer pour générer tous les points de vue qui m'intéressent : la vue du cockpit (celle d'où j'ai fait la manœuvre), la vue de côté, la vue de devant, et la vue depuis le porte avions. Après, tripatouillage rapide avec l'éditeur de vidéo de Blender, et c'est parti.

Avec un peu plus de temps, il pourrait être intéressant d'enregistrer chaque vidéo en partant pile du début, afin de pouvoir les synchroniser. Ensuite, l'on pourrait éditer la vidéo de manière à séparer l'écran en 4 avec une vue dans chaque coin, et une animation pour agrandir chaque vidéo au moment intéressant. Rajoutez une musique planante (normal, pour un avion !), et c'est tout bon. Peut-être la prochaine fois, avec un appontage de nuit, ou sous la pluie !

mardi 16 avril 2019

GLTF et worflow métallique

Je continue à explorer le format GLTF, et j'obtiens enfin quelque chose de potable avec des modèles exportés depuis Blender. La procédure est la suivante:

  • Créer un modèle dans Blender avec un matériau se basant sur le "Principled shader" dans lequel on aura fourni la couleur, la rugosité, l'aspect métallique ou non, et le déplacement des normales
  • Ajouter au matériau, mais sans les connecter à quoi que ce soit, des textures images pour la couleur, la rugosité, le métal, et les normales
  • Sélectionner chaque image à son tour, et générer la texture via l'option "bake". Attention, pour de meilleurs résultats, utiliser plutôt Cycles que Eevee. Attention également, il n'est pas possible de générer directement la texture métallique, il faut ruser en connectant temporairement l'arrivée métallique au nœud de rugosité et en générant celui-ci vers l'image métallique.
  • Appliquer à l'objet un nouveau matériau qui utilise un principled shader, et connecter chaque texture à son nœud. Astuces: utiliser le mode "non-color data" sur les textures autre que la couleur principale, et passer par un nœud "normal map" pour les normales
  • Exporter le modèle !

J'ai écrit un petit programme en C++ qui tente d'afficher le modèle en utilisant un shader PBR qui tente de se rapprocher de ce que l'on verrait dans Blender. Voici le résultat avec un tore "rouillé", où la partie principale du modèle est métallique et lisse, mais présente un aspect abîmée par endroits via un matériau non-métallique, non-lisse, et présentant un fort bruit dans les normales.

Voici également les textures utilisées: couleur, combinaison de métal / rugosité, et normales.

jeudi 28 mars 2019

Format GLTF

Je me lance dans l'écriture d'une petite bibliothèque pour charger un fichier au format gltf. Le format gltf a été inventé par Khronos Group pour permettre l'échange de scènes 3D, et pour l'instant je trouve que la spec se tient très bien, et (mais c'était l'idée) est particulièrement adaptée au chargement via une API OpenGL. Si l'on rajoute en plus que le plugin Blender pour exporter dans ce format est de qualité et supporte très bien les workflows PBR (rendu basé sur la physique) et les animations, alors ça donne vraiment envie.

mercredi 20 mars 2019

X-Plane - Vent de travers à Varsovie

Hier dans un sens, aujourd'hui dans l'autre, les atterrissages à Varsovie de sont pas de tout repos ! Je m'entraîne à "décraber" au bon moment, et surtout à ne pas me faire sortir de la piste une fois posé. En effet, le vent dans l'empennage a tendance à faire tourner l'avion, et à envoyer le nez face au vent dans les fraises. Faut pas faire semblant avec le palonnier...

mardi 26 février 2019

X-Plane - Graphismes au max

J'ai joué avec les paramètres graphiques d'X-Plane, pour me faire du mal et voir un peu à quoi ça ressemblerait si j'avais la carte graphique de furieux. Voici donc avec tout à fond, les scènes X-Europe et les photos satellites qui vont bien, ce que ça donne du côté d'Orly.

Alors, je trouve ça quand même hyper joli. Admirez les nuages, le nombre d'objets au sol, le bel antialiasing. En revanche, comme vous pouvez le voir, à respectivement 14 images par seconde et 7 images par seconde, c'est inutilisable. Mais bon, une fois en l'air, et surtout quand on vole sur un avion de ligne moderne très automatisé, on ne regarde pas tellement dehors !

samedi 16 février 2019

X-Plane et zPhoto

J'essaie d'améliorer le rendu (déjà plutôt sympa!) d'X-Plane. Tout d'abord, j'ai installé les bibliothèques X-Europe de SimHeaven, ce qui rajoute tout un tas de bâtiments, forêts, lignes haute tension, éoliennes... basées sur les données OpenStreetMap. Cela rend les villes beaucoup plus réalistes, avec des bâtiments plus nombreux, beaucoup mieux disposés.

J'ai également téléchargé quelques zones photos, et c'est encore une claque graphique supplémentaire. En effet, l'on se retrouve avec les vrais textures satellites, et c'est quand même beaucoup plus joli. Regardez donc autour de l'aéroport de Brest sur ces deux images. Sur la première, une texture d'herbe toute bête qui se répète. Sur la deuxième, les vrais zones d'herbe autour de l'aéroport, les chemins de terre qui mènent aux bâtiments, les zones de forêt bien différentes... Plaisant !

mardi 29 janvier 2019

LFBO LFMN - Petit à petit...

Pfiou, j'ai enfin réussi à faire atterrir mon A350 sans faire hurler mes passagers. Petit vol Toulouse Nice, suffisamment loin pour permettre d'atteindre une altitude correcte et que l'ordinateur de vol passe donc par toutes les phases du vol (montée, croisière, descente, approche), mais j'ai quand même raté l'accrochage de l'ILS et j'ai du finir encore une fois en manuel, avec les aérofreins sortis à fond, l'inversion de poussée, et les freins, m'arrêtant presque en bout de piste. C'est mieux que le vol précédent, où je m'étais retrouvé dans l'eau.

mardi 22 janvier 2019

Petite aventure avec X-Plane

Je continue à explorer X-Plane, et en particulier les aérodromes un peu bizarres. Voici donc un décollage de l'altiport de l'Alpe d'Huez, oui, celui qui est en pente.

Décollage tranquillou à bord de mon Cirrus SRG20, qui est quand même un poil gros pour la mini piste, puis navigation par balises radio jusqu'à l'aéroport de Genève.

Depuis, je me suis offert l'A350 de chez Flight Factor (oui, car X-Plane a 2 Boeing, mais aucun Airbus par défaut ! Sacrilège !), et je commence doucement à comprendre le pilote automatique et les plans de vol. Voici donc une image de mon dernier vol, de Paris Orly à Londres Gatwick (donc la, logiquement, on doit être au dessus de la Manche). C'est vrai que c'est beaucoup plus simple quand le pilote automatique s'occupe de tout, sauf que l'atterrissage, je l'ai fait full mimine, et c'était pas brillant. Il va falloir s'entraîner un peu plus...

vendredi 18 janvier 2019

Angel en deltaplane (pas d'inquiétudes, il a un casque)

Rendu final de ma dernière petite scène ! Après avoir modélisé Fluttershy, encore fallait-il la mettre quelque part. La voici donc se promenant dans les collines d'Equestria, avec son lapin Angel qui fait du deltaplane.

À noter l'utilisation d'une profondeur de champ honteusement faible histoire d'avoir un flou artistique sur l'herbe en premier plan, et d'une image d'environnement HDR qui se reflète très bien dans la visière du casque.

J'ai utilisé le denoising, car les reflets des armatures métalliques du deltaplane provoquaient beaucoup de bruit dans la voilure, ainsi que des lucioles sur Fluttershy, qui aime bien les animaux, mais pas à ce point.

Temps de rendu : environ 10 minutes.

vendredi 4 janvier 2019

Bonne année !

Je cherchais à faire un terrain herbeux qui soit joli, histoire d'installer Fluttershy dans une scène un peu sympa. Mais maintenant que j'ai de l'herbe (merci le tuto BlenderBrit), je me surprends à vouloir en mettre partout. Voici donc un petit message de nouvelle année, car je sens qu'elle va être longue et dure.