Cette mission freelance Ă©tait lâoccasion pour moi de me plonger dans les mĂ©andres de ce nouveau format de modĂšle 3D et des moteurs graphiques.
Le problĂšme : pas le bon ordre
Dans la capture ci-contre, on voit deux statues. Celle accompagnĂ©e de boules rouges est au premier plan, alors quâelle est prĂ©sentĂ©e derriĂšre la statue au fond.
Quâest-ce qui se passe ?
Dans notre contexte, on peut rĂ©sumer les Gaussian splatting Ă des nuages de particules transparentes. Pour afficher correctement des objets transparents, il faut quâils soient triĂ©s du plus loin au plus proche de la camĂ©ra. Chaque modĂšle a son nuage et son propre shader pour faire le tri. Cependant, Aframe ne fait pas automatiquement le tri Ă lâĂ©chelle dâune scĂšne entiĂšre. Ce qui fait qu’un des nuages est considĂ©rĂ© premier dans l’ordre de proximitĂ© sans cohĂ©rence rĂ©elle avec la situation actuelle.
Le Depth Buffer Ă la rescousse
Des objets opaques affichĂ©s les uns sur les autres ? Ce problĂšme nâest pas nouveau dans lâhistoire de la 3D, câest pour cela que les moteurs 3D et les shaders intĂšgrent maintenant un Depth Buffer.
Câest une image qui contient uniquement une information de profondeur afin que les shader sachent si le pixel quâils sâapprĂȘtent Ă dessiner nâest pas masquĂ©.
Le hic de cette approche, câest que le Depth Buffer est une propriĂ©tĂ© binaire (soit tu es dessinĂ©, soit tu ne lâes pas). Alors quâun Gaussian Splatting nâest pas tout Ă fait un objet Opaque. Sur la photo Ă gauche, on peut bien voir que la bordure entre les objets nâa rien de net.
Certaines particules quasiment invisibles sortent du cadre du splatting, et empĂȘchent lâaffichage dâobjets lĂ©gitimes.
Objets opaques mais transparents
La solution que nous avons choisie est dâagir sur le Fragment Shader, qui permet de dĂ©cider si un pixel est dessinĂ© ou non avec la commande discard.
Nous avons exposé dans le composant Aframe une propriété qui discard toutes les particules qui auraient une transparence inférieure à celle que le développeur choisi.
Ce nâest pas une solution parfaite, car cela dĂ©grade lĂ©gĂšrement le modĂšle 3D. Pour cela, cette fonctionnalitĂ© ne doit servir quâen derniĂšre option.
Je recommande maintenant de traiter les Gaussian Splatting en amont en Ă©liminant les particules superflues directement dans un Ă©diteur de Gaussian Splatting.
TLDR
Individuellement, les Gaussian splatting proposent un rendu de captation unique par son rĂ©alisme. Mais dĂšs qu’ils sont mis dans le contexte d’une expĂ©rience 3D plus riche, la limite de l’usage de transparence Ă l’excĂšs pour donner une impression d’opacitĂ© devient vite Ă©vidente.
L’approche choisie n’est pas parfaite, mais avec plus de temps, nous pourrions arriver Ă un meilleur rĂ©sultat.