Journal Croissance d'un projet open source - WiVRn

Posté par  . Licence CC By‑SA.
Étiquettes :
25
1
jan.
2025

Bonjour nul, depuis quelques temps je développe un logiciel pour utiliser les casques de réalité virtuelle autonomes depuis un PC Linux : WiVRn. La première version publiée était bien entendu très limitée mais en deux ans les évolutions sont notables.
mascotte de WiVRn

Les avancées techniques

Je ne vais pas détailler toutes les évolutions depuis le précédent journal, parmi celles importantes on a le chiffrement, de nettes améliorations de fluidité, une meilleure gestion du son, une interface graphique pour le contrôle du serveur, la gestion de la transparence et le support d'extensions OpenXR supplémentaires.

La distribution du logiciel a aussi beaucoup évolué, initalement disponible seulement sous forme de sources, le serveur est maintenant disponible sur Flathub. Des paquets sont aussi disponibles sur AUR (Arch Linux), Guru (Gentoo), NixOS et Fedora. Le client, qui s'exécute sur le casque, est disponible sur le store Meta.

La communauté

Croissance

Après un début très confidentiel, le nombre d'utilisateurs n'a cessé d'augmenter. D'après les données de téléchargement des fichiers apk, seul moyen d'installer avant la publication sur le magasin d'applications, la version 0.10 de janvier 2024 est téléchargée 140 fois, en mai la 0.15 atteint 170, 240 pour la 0.16 du mois suivant jusqu'à plus de 500 pour la 0.22 en décembre.

Le nombre d'étoiles sur Github montre lui aussi cette évolution:
nombre d'étoiles

La démographie est assez intéressante, initialement la quasi totalité des utilisateurs tombait sur le projet parce que VRchat fonctionne plutôt mal sur SteamVR. On avait donc principalement des furrys et anime girl, il semble maintenant que les utilisateurs sont plus diversifiés.

Contributions

La première contribution majeure et surprenante est un don de matériel : l'image sur les casques HTC était désespérément noire, un généreux donateur a offert un casque neuf, sans garantie de succès. Quelques heures après avoir reçu le matériel, le bug est contourné, il s'agissait d'une non conformité du logiciel HTC qui n'ignore pas le canal alpha alors qu'il le devrait, on initialise maintenant la valeur et ça fonctionne. J'attends toujours une correction du bug côté HTC.

Le projet a aussi reçu des contributions sous forme de code, la plupart pour des petites corrections, mais aussi des fonctionnalités entières comme le suivi des yeux. Il n'y a pas encore de contributeurs externe majeurs, je ne sais pas si c'est dû à la complexité du code, manque de documentation, ou tout simplement que le projet reste peu connu.

Nous avons aussi quelques traductions, mais avec peu de documentation sur comment contribuer, ni une visibilité sur les langues manquantes, peu de langues sont disponibles.

Enfin, plusieurs utilisateurs avaient demandé tôt dans le projet acceptait des dons, ce qui est le cas depuis quelques mois, la cagnotte permet déjà d'acheter un casque pour tester sur du matériel plus récent. C'est un peu ironique, le projet a commencé pour le pas avoir à acheter de jeux sur la plate-forme de Facebook et finalement on va racheter un casque de la marque.

Les projets connexes

Monado

Monado est la base sur laquelle est construite WiVRn, les développeurs sont très ouverts et acceptent volontiers les modifications nécessaires pour WiVRn. Collabora réalise la majorité du développement et est membre de Khronos, ce qui leur permet de participer au développement d'OpenXR et valider la conformité.

OpenComposite

OpenComposite est une couche de compatibilité pour traduire les appels OpenVR and OpenXR, néccessaire pour une grande partie de la bibliothèque d'applications actuelle.

Envision

Envision est une interface graphique principalement pour compiler, démarrer et configurer les runtimes OpenXR. Elle permet d'automatiser des changements de fichiers de configuration, patcher pressure vessel pour rendre OpenXR visible aux jeux lancés via Steam. Le projet semble assez populaire bien que je trouve l'idée contraire à la cohérence que j'aime dans une distribution Linux, où le gestionnaire de paquets et des corrections dans les différents projets seraient plus justes.

WlxOverlay

WlxOverlay permet d'afficher le bureau en réalité virtuelle et interagir avec les manettes, avec aussi d'autres fonctionnalités qui en font pratiquement un shell pour la VR.

La suite

Les fonctionnalités de base sont maintenant robustes et il faut maintenant rendre le tout plus simple à utiliser. Quelques changements sont nécessaires sur d'autres parties de l'environnement.

  • Permettre au GPU de correctement sélectionner son niveau de puissance: ici
  • Apprendre à pressure vessel - utilisé pour lancer les jeux dans Steam - à donner accès à OpenXR: ici
  • De même pour flatpak, non commencé
  • Rendre disponible le serveur sous forme de paquet pour plus de distributions, ce qui demandera de charger dynamiquement x264 pour des raisons de brevets

Il reste bien évidemment beaucoup de fonctionnalités à améliorer, d'extensions OpenXR à gérer, le support Vulkan video encode à finaliser.

  • # Excellent projet !

    Posté par  (site web personnel) . Évalué à 4 (+1/-0).

    Comment ça fonctionne? Il faut un casque particulier?

    Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

    • [^] # Re: Excellent projet !

      Posté par  . Évalué à 6 (+5/-0).

      Ça marche avec n'importe quel casque qui fournit un runtime OpenXR et avec des manettes comparables à celles Quest.
      Seule la version Android est complète, une version Linux existe mais ne gère pas le son ni la décompression matérielle.

      Je n'ai pas inventé le principe de base, d'autres logiciels comme Virtual Desktop ou ALVR le faisaient avant. On utilise le réseau pour synchroniser l'état entre le serveur (PC) et le client (casque), les images sont compressées (résolution réduite sur les bords) et encodées (h264 généralement, mais des options pour h265 ou AV1 existent) pour pouvoir être transférées en un temps raisonnable.

      Toute la difficulté est de se battre contre la latence, on arrive à 55ms de latence totale entre le moment où un mouvement est enregistré par le casque et celui où il est physiquement visible à l'écran.

      Pour ça toutes les techniques sont autorisées: les mouvements des casques et manettes sont envoyés avant que l'application les demande avec une prédiction de déplacement. La vidéo est découpée en blocs pour commencer à envoyer et décoder une image avant que l'ensemble ne soit encodé, les statistiques du temps des différentes phases sont enregistrées pour commencer les calculs juste à temps et minimiser le temps où une image décodée attend d'être affichée.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.