dimanche 11 février 2018

Vidéo 360 degrés et stéréo 360 degrés

Un mini prototype me permet de générer des images à partir des données produites par les différents générateurs. Avec une abstraction entre la génération de contenue et le rendu, il est assez simple de travailler sur la génération de contenue utilisant un rendu simple ou inversement sur l'amélioration du rendu sans avoir à modifié le contenue.

Ceci dit, un des buts est de générer des vidéos en stéréo 360 degrés afin de pouvoir les visionner via les différents casque de réalité virtuelle. Outre la complexité de générer le contenu en 3D, et ce en double ( chaque oeil ), les formats et outils ne sont pas encore répendus ni convivials.

Les appareils mobile on encore de la difficulté à décoder du vidéo 4K, et ceux qui le peuvent sont limités à 30 images secondes. Puisque les images 4K sont gourmandes côté bande passant, une compression x265 serait la bienvenue mais la plupart des appareils ne supporte pas encore nativement le x265. Sans parler du support pour le HDR qui est présent mais limité sous x264. Je ne crois pas qu'il y ai un casque de VR dont l'écran supporte le HDR de toute manière. Je n'ai pas regardé du côté du support de VP9.

Bien que FFMPEG peut générer le stream x264 ou x265, il ne peut spécifier les métadonnée pour indiquer que le type de vidéo est 360 degrés ou stéréo 360 degrés. Youtube fourni un utilitaire permettant d'ajouter les métadonnées nécessaires à un vidéo .mp4, donc une étape de plus dans le pipeline. Pour ce qui est des images, exiftool est recommandé pour ajouter les métadonnées nécessaires. Facebook donne un peu plus d'information sur le sujet.

Enfin, ce n'est pas encore au point mais avec povray, suffit d'ajouter 'spherical' comme attribut à la caméra et spécifier un angle de 360. De ce côté, au moins, c'est simple.

Prochaines étapes avant de mettre ici un films en 360 degree via youtube:

  • Déboguer l'utilisation du texte UTF8 et POVRAY
  • Générer les images en OpenEXR ( HDR )
  • Générer le film x264 30 fps a partir des OpenEXR
  • Ajouter via appel de commande l'injection de métadonnées pour le 360 degré
Il y aura peu de nouvelles incluses car le temps de rendu sur mon vieu i5-750, bien c'est long!



dimanche 4 février 2018

POV-Ray, je ne pensais pas m'en servir de nouveau!

Chose certaine, Python ne vient pas avec une excellent librairie graphique. PIL ( ou le fork Pillow ) permet un minimum de commandes de dessins et de manipulation d'image mais c'est assez limité. Sinon plusieurs ré-écrivent des commandes de base par dessus un array en numpy.

Anyway, comme je voulais avoir un prototype assez rapidement, je n'ai pas trop porté attention et me suis dit que j'implémenterais le minimum avec PIL le temps d'avoir un pipeline de création de contenu plus solide. Cependant PIL est vraiment, mais vraiment limité. J'ai décider de regarder rapidement pour interfacer un moteur de rendu et utiliserai PIL seulement pour la composition, si nécessaire. Ceci dit, j'ai pensé prendre Appleseed mais le moteur Python est sous 2.7 alors que mon projet est sous 3.6. Sinon Lux permet un integration avec Python 3 mais seulement pour permettre l'intégration avec Blender.

Finalement, il y a POV-Ray, le vieux raytracer qui continu de faire son petit bonhomme de chemin. Ce n'est pas un système moderne mais avec vapory, une mini librairie permettant de créer des fichier de scènes et d'appeler POV-Ray afin de générer l'image, c'est finalement juste assez performant et simpliste pour que je fasse le saut au 3D tout de suite. J'ai de toute manière une abstraction qui me permettra d'intégrer un renderer plus moderne le temps venu sans trop d'efforts.