Qu'il s'agisse d'un artiste VFX, d'un chercheur ou d'un amateur graphique, Blendernerf est le moyen le plus simple et le plus rapide de créer des ensembles de données Synthetic Nerf et Gaussian Splatting dans Blender. Obtenez des rendus et des paramètres de la caméra en un seul clic, tout en ayant un contrôle complet de l'utilisateur sur la scène 3D et la caméra!
Êtes-vous prêt à nerf? Commencez par un seul clic dans Blender en consultant ce tutoriel!
Les champs de radiance neuronale (NERF) visent à représenter une scène 3D comme un objet volumétrique dépendant de la vue à partir d'images 2D, parallèlement à leurs informations respectives de la caméra. La scène 3D est en rétrofacturation à partir des images d'entraînement à l'aide d'un simple réseau neuronal.
Les éclaboussures gaussiennes sont une méthode de suivi pour rendre les champs de radiance de manière ponctuelle. Cette représentation est hautement optimisée pour le rendu GPU et exploite des techniques graphiques plus traditionnelles pour atteindre des fréquences d'images élevées.
Je recommande de regarder cette vidéo YouTube par Corridor Crew pour une enquête passionnante sur quelques cas d'utilisation et les applications potentielles futures des NERF.
Le rendu est un calcul coûteux. Les scènes photoréalistes peuvent prendre des secondes à des heures à rendre en fonction de la complexité de la scène, du matériel et des ressources logicielles disponibles.
Les nerfs et les éclaboussures gaussiennes peuvent accélérer ce processus, mais nécessitent des informations sur la caméra généralement extraites via du code encombrant. Ce plugin permet à quiconque d'obtenir des rendus et des caméras en un seul clic dans Blender.
Bien que les versions de version de Blendernerf soient disponibles en téléchargement, elles sont principalement destinées à suivre les modifications de code majeures et à des fins de citation. Je recommande de télécharger directement le référentiel actuel, car les modifications mineures ou les corrections de bogues peuvent ne pas être incluses immédiatement dans une version.
Blendernerf se compose de 3 méthodes discutées dans les sous-sections ci-dessous. Chaque méthode est capable de créer des données d'entraînement et de tester des données pour le NERF sous la forme d'images d'entraînement et d'un fichier transforms_train.json respectivement transforms_test.json avec les informations de caméra correspondantes. Les données sont archivées en un seul fichier zip contenant des dossiers de formation et de test. Les données de formation peuvent ensuite être utilisées par un modèle NERF pour apprendre la représentation de la scène 3D. Une fois formé, le modèle peut être évalué (ou testé) sur les données de test (informations de la caméra uniquement) pour obtenir de nouveaux rendus.
Le sous-ensemble de cadres (SOF) rend toutes les n cadres à partir d'une animation de caméra et utilise le sous-ensemble rendu de trames comme données de formation Nerf. Les données de test enregistrées s'étendent sur toutes les cadres de la même animation de caméra, y compris les cadres de formation. Lorsqu'elle est formée, le modèle Nerf peut rendre l'animation complète de la caméra et est par conséquent bien adapté pour interpoler ou rendre de grandes animations de scènes statiques.
Les caméras de train et de test (TTC) enregistrent les données de formation et de test de deux caméras définies par l'utilisateur distinct. Un modèle NERF peut ensuite être équipé des données extraites de la caméra d'entraînement et être évaluées sur les données de test.
La caméra sur sphère (COS) rend les cadres de formation en échantillonnant uniformément des vues de caméra aléatoires dirigées au centre à partir d'une sphère contrôlée par l'utilisateur. Les données de test sont extraites d'une caméra sélectionnée.
Le panneau de propriétés complémentaires est disponible sous 3D View > N panel > BlenderNeRF (le panneau N est accessible dans la fenêtre 3D lors de l'appui N ). Les 3 méthodes ( SOF , TTC et COS ) partagent un onglet commun appelé BlenderNeRF shared UI avec les propriétés contrôlables répertoriées ci-dessous.
Train (activé par défaut): s'il faut enregistrer les données d'entraînement (rendements + informations de la caméra)Test (activé par défaut): s'il faut enregistrer les données de test (informations de la caméra uniquement)AABB (par défaut réglé sur 4 ): paramètre d'échelle AABB comme décrit dans NGP instantané (plus de détails ci-dessous)Render Frames (activés par défaut): s'il faut rendre les imagesSave Log File (désactivé par défaut): s'il faut enregistrer un fichier journal contenant des informations de reproductibilité sur l'exécution de BlendernerfFile Format ( NGP par défaut): s'il faut exporter les fichiers de la caméra dans la convention de format de fichier NGP ou defaut Nerf instantGaussian Points (désactivés par défaut): s'il faut exporter un fichier de points3d.ply pour des éclaboussures gaussiennesGaussian Test Camera Poses ( mannequin par défaut): que ce soit pour exporter un fichier de caméra de test factice ou l'ensemble complet de poses de caméra de test (uniquement avec Gaussian Points )Save Path (vide par défaut): chemin vers le répertoire de sortie dans lequel l'ensemble de données sera créé Si la propriété Gaussian Points est active, Blendernerf créera un fichier points3d.ply supplémentaire à partir de tous les maillages visibles (au moment du rendu) où chaque sommet sera utilisé comme point d'initialisation. Les couleurs de sommet seront stockées si elles sont disponibles et réglées sur noir autrement.
Le référentiel d'échalons gaussiens prend en charge nativement les ensembles de données NERF , mais nécessite à la fois des données de train et de test. L'option Dummy pour la propriété de la Gaussian Test Camera Poses crée un fichier de pose de caméra de test vide, dans le cas, aucune image de test n'est nécessaire. L'option Full exporte la pose de la caméra de test par défaut, mais nécessitera un rendu séparément d'un dossier test contenant tous les rendus de test.
AABB est limité à être une puissance entière de 2, il définit la longueur latérale du volume de la boîte de délimitation dans laquelle le NERF tracera les rayons. La propriété a été introduite avec la version NGP instantanée de NVIDIA de NERF.
La propriété File Format peut être NGP ou NERF . La convention de format de fichier NGP est la même que celle du NERF , avec quelques paramètres supplémentaires accessibles par NGP instantané.
Notez que chaque méthode a sa propriété Name distinctif (par défaut définie sur dataset ) correspondant au nom de l'ensemble de données et créé le nom de fichier ZIP pour la méthode respective. Veuillez noter que les caractères non pris en charge, tels que les espaces, # ou / , seront automatiquement remplacés par un soulignement.
Vous trouverez ci-dessous les propriétés spécifiques à chaque méthode (la propriété Name est laissée de côté, car déjà discutée ci-dessus).
Frame Step (par défaut réglé sur 3 ): n (tel que défini dans la section de réglage) = fréquence à laquelle les cadres de formation sont enregistrésCamera (toujours réglé sur la caméra active): Caméra utilisée pour enregistrer les données d'entraînement et de testPLAY SOF : Jouez le sous-ensemble de l'opérateur de méthode des cadres pour exporter les données NerfFrames (par défaut réglé sur 100 ): nombre de trames d'entraînement utilisées à partir de la caméra d'entraînementTrain Cam (vide par défaut): Caméra utilisée pour enregistrer les données d'entraînementTest Cam (vide par défaut): Caméra utilisée pour enregistrer les données de testPLAY TTC : jouez le train et testez l'opérateur de méthode des caméras pour exporter les données Nerf Frames du nombre de trames de formation seront capturés à l'aide de l'objet Train Cam , à partir du cadre de départ de la scène.
Camera (toujours réglé sur la caméra active): appareil photo utilisé pour enregistrer les données de testLocation (par défaut réglé sur 0 m vecteur): position centrale de la sphère d'entraînement à partir de laquelle les vues de la caméra sont échantillonnéesRotation (par défaut réglé sur 0 ° Vector): rotation de la sphère d'entraînement à partir de laquelle les vues de la caméra sont échantillonnéesScale (par défaut réglé sur 1 vecteur): vecteur d'échelle de la sphère d'entraînement dans les axes XYZRadius (par défaut réglé sur 4 m ): rayon scalaire de la sphère d'entraînementLens (par défaut réglé sur 50 mm ): la distance focale de la caméra d'entraînementSeed (par défaut réglé sur 0 ): graine pour initialiser la procédure d'échantillonnage de vue de la caméra aléatoireFrames (par défaut réglé sur 100 ): nombre de cadres de formation échantillonnés et rendus à partir de la sphère de formationSphere (désactivée par défaut): s'il faut montrer la sphère de formation à partir de laquelle des vues aléatoires seront échantillonnéesCamera (désactivé par défaut): s'il faut afficher la caméra utilisée pour enregistrer les données d'entraînementUpper Views (désactivé par défaut): s'il faut échantillonner les vues à partir de l'hémisphère d'entraînement supérieur uniquement (variante de rotation)Outwards (désactivé par défaut): s'il faut pointer la caméra vers l'extérieur de la sphère d'entraînementPLAY COS : jouez à l' appareil photo sur l'opérateur de méthode SPHERE pour exporter les données Nerf Notez que l'activation de la Sphere et des propriétés Camera crée respectivement un objet vide BlenderNeRF Sphere et un objet de caméra BlenderNeRF Camera respectivement. Veuillez ne créer aucun objet avec ces noms manuellement, car cela pourrait briser les fonctionnalités complémentaires.
Frames du montant des cadres de formation seront capturés à l'aide de l'objet BlenderNeRF Camera , à partir du cadre de démarrage de la scène. Enfin, gardez à l'esprit que la caméra d'entraînement est verrouillée en place et ne peut pas être déplacée manuellement.
NVIDIA fournit quelques conseils utiles sur la façon de former un modèle NERF à l'aide de NGP instantané. N'hésitez pas à visiter leur référentiel pour plus d'aide. Vous trouverez ci-dessous quelques conseils rapides pour le nerfing optimal tiré de l'expérience personnelle.
AABB aussi serré que possible à l'échelle de la scène, des valeurs plus élevées ralentiront l'entraînementAABB tout en gardant une puissance de 2Vertical conduit parfois à des volumes de nerf déformés, évitez-le si possible Si vous avez accès à un GPU NVIDIA, vous souhaiterez peut-être installer un NGP instantané sur votre propre appareil pour une expérience utilisateur optimale, en suivant les instructions fournies sur leur référentiel. Sinon, vous pouvez exécuter gratuitement Nerf dans un ordinateur portable Colab sur Google GPU avec un compte Google.
Ouvrez ce carnet Colab (également téléchargeable ici) et suivez les instructions.
Ce module complémentaire est en cours de développement comme un projet secondaire amusant au cours de plusieurs mois et des versions de Blender, principalement sur MacOS. Si vous rencontrez des problèmes avec les fonctionnalités du plugin, n'hésitez pas à ouvrir un problème GitHub avec une description claire du problème, avec laquelle la version Blendernerf a été rencontrée et toute autre information si pertinente.
Bien que cette extension soit destinée à la création de jeux de données synthétiques, les outils existants pour importer des données de suivi de mouvement provenant de caméras réelles sont disponibles. Un tel exemple est Tracky by Shopify , une application iOS open source et un plugin de mélangeur adjacent enregistrant les données de suivi de mouvement d'une session Arkit sur iPhone. Gardez à l'esprit cependant que les données de suivi peuvent être soumises à des dérives et des inexactitudes, ce qui pourrait affecter la qualité de reconstruction du NERF résultante.
Si vous trouvez ce référentiel utile dans votre recherche, veuillez envisager de citer Blendernerf en utilisant le bouton github dédié ci-dessus. Si vous avez utilisé cette extension pour vos projets artistiques, n'hésitez pas à partager une partie de votre travail en utilisant le hashtag #blendernerf sur les réseaux sociaux! :)