Avez vous déjà tenté de fabriquer un ralenti à partir d’une séquence de film capturée en 25 images par seconde ? Lorsque l’on étire ces 25 images par seconde pour ralentir le mouvement, on subit généralement un effet désagréable à l’image. En passant cette séquence de 1 à 2 secondes le temps s’étire mais le nombre d’image ralentit en passant à 12.5 par seconde. Cela donne une impression de clichés rapides qui décomposent le mouvement. En augmentant à 4 secondes ces 25 images, on est alors à 6 images par seconde et cela devient catastrophique.
Les logiciels de montage modernes proposent une solution pour lutter contre ce phénomène. Ils calculent des images intermédiaires entre deux images pour fluidifier le mouvement. Cette technologie fonctionne bien à condition de ne pas filmer d’éléments trop rapides et de bien séparer les sujets mobiles de leurs fonds. Filmer une course devant une foule et l’étirer de la sorte se passe en général très mal.
Le SteamVR motion smoothing veut faire exactement la même chose en inventant des images intermédiaires dans la réalité virtuelle. L’immersion proposée par ce type de contenu est souvent très mauvaise quand le nombre d’image proposées n’est pas fluide. Faites un mouvement rapide de la tête à 12 images par seconde et vous verrez le monde en séquence diapositive. L’idée est donc de doubler le nombre d’images par seconde pour éviter de le faire descendre trop bas. Si votre PC n’est pas au top des performances demandées pour la VR, cette technologie fluidifiera ainsi les événements.
En analysant chaque image, la technologie de Steam inventera des contenus intermédiaires… Si votre casque peut afficher 60 images par seconde et que votre PC peut en afficher 40, SteamVR motion smoothing inventera les 20 supplémentaires. Sur un casque HTC Vive Pro, le nombre d’images à afficher est de 90 par seconde. La solution augmentera donc l’affichage pour atteindre ce nombre. La technologie serait capable d’inventer jusqu’à trois étapes clé entre chaque images calculée réellement par votre machine.
Reste à savoir si la technologie sera apte à livrer une image fluide ET de qualité, les étapes clés trop éloignées pourraient être mal interprétées par le système qui analyse les deux dernières images affichées pour en inventer de nouvelles. Proposer une purée de pixels à la place d’éléments précis directement sous les rétines de telles images aurait un effet probablement pire que celui d’un affichage en cascade d’images…
Le gros intérêt de cette solution, si elle fonctionne, c’est qu’elle apportera un contenu fluide en VR pour des machines pas forcément hyper musclées en terme de capacités de calcul… Ce qui est en général le cas des minimachines. Valve précise que sa technologie est compatible uniquement avec Windows 10 pour le moment et requiert une solution graphique Nvidia. Elle ne fonctionne pour le moment qu’avec les casques HTC Vive et Vive Pro. Les solutions Oculus Rift ou les casques compatibles de réalité mixtes de Microsoft ne sont pas pris en charge.
Si cette techno SteamVR motion smoothing fonctionne bien, il serait intéressant de la voir se déployer dans d’autres formules. Pourquoi ne pas imaginer un tel traitement dans d’autres formats que la VR pour augmenter le nombre d’images par seconde d’un jeu par exemple ?
Source : Steam
2,5€ par mois | 5€ par mois | 10€ par mois | Le montant de votre choix |
Oculus Rift utilise une technique similaire mais plus basique depuis un bon moment : si le jeu ne tient pas 90fps, ça descends immédiatement à 45fps, et le driver Oculus invente une nouvelle image à partir des mouvements de la tête.
Cette technique ne cherche pas à faire de l’interpolation de mouvement pour fluidifier la trajectoire d’un objet en mouvement, ça peut seulement faire des déformation sur l’image précédente pour simuler les effets du déplacement/rotation de la tête.
En gros le monde virtuel tourne toujours à 45 fps, mais le joueur peut déplacer/tourner la tête à 90 fps.
Au repos, par exemple dans un endroit calme en bougeant seulement la main, on voit bien que ça tourne à 45 fps, le mouvement est plus décomposé qu’avec 90 fps.
Dans le feu de l’action, ça marche pas trop mal au centre de la vision : le fait que les objets bougent à 45 fps est moins gênant parce qu’il y a plus d’informations visuelles à traiter dans la scène, et le fait que les déplacements/rotations sont traités à 90 fps empêche la nausée/rupture d’immersion qui pourrait survenir si la VR tombait vraiment à 45 fps.
Par contre, le problème c’est en périphérie de la vision sur les rotations : l’image précédente peut être déformée, mais on peut pas créer magiquement les parties de la scène qui n’étaient pas visibles avant. Du coup ça fait des belles zones noires, en périphérie, et je trouve ça très gênant.
Du coup, en comparant avec la nouveauté de Steam, ça devrait permettre de fluidifier le mouvement des objets dans la scène, et peut être pouvoir produire des images intermédiaires de meilleure qualité (interpolation contre simple déformation), mais pour le dernier point, je pense que la technique de Steam ne pourra pas faire beaucoup mieux : à la rigueur ils peuvent remplacer les blocs noirs par une texture inspirée de la scène pour faire un truc qui attire moins l’oeil, mais quand la vraie scène sera chargée et qu’un bloc gris-bitume sera remplacé par un bleu-mer, ça vas quand même faire réagir.
@Alf: Merci de l’info. C’est dans les pilotes du Rift ?
Pour la dernière suggestion, ce serait sûrement bien pour éviter le tearing quand on n’a pas d’écran gsync/freesync.
Le jeu pourraut osciller entre 30 et 60 ips et l’écran recevoir toujours 60ips.
@Pierre Lecourt: Ce dont je parlais pour le Rift date de fin 2016 : https://developer.oculus.com/blog/asynchronous-spacewarp/
Et il y aura une évolution bientôt censée améliorer la qualité du résultat : https://uploadvr.com/oculus-rifts-asw-2-0-could-greatly-reduce-artifacts-on-low-end-systems/
Côté SteamVR, il y avait auparavant « Reprojection » qui apparemment (je me suis moins penché sur la question vu que je ne suis pas utilisateur contrairement au Rift) gérait seulement les rotations de la tête pour calculer la nouvelle image.
Pour le dernier paragraphe de l’article, effectivement on doit pouvoir remplacer les déplacements/rotations de la tête par les touches directionnelles et les mouvements de la souris, donc ça devrait pouvoir s’appliquer.
J’espère que les gens qui travaillent sur ces systèmes y ont pensé (souvent quand on le nez dans le travail, on oubli de reculer un peu et regarder autour pour voir les autres utilisations possible), et que ça se développera si c’est efficace.
C’est exactement le même principe que ce que fait le boitier du PSVR qui prend en entré un flux @60fps (ou moins) et l’interpole en 120fps (je dis 120 car lorsque je le branche a mon PC il se declare comme un moniteur 120fps)