Page du projet • ARXIV • Demo • FAQ • Citation
Paint3D est un nouveau cadre génératif grossier qui est capable de produire des cartes de texture UV 2K à haute résolution, sans éclairage et diversifiées pour les mailles 3D non texturées conditionnées sur les entrées de texte ou d'image.
Nous présentons Paint3D, un nouveau cadre génératif grossier à fin qui est capable de produire des cartes de texture UV 2K à haute résolution, sans éclairage et diverses pour les mailles 3D non texturées conditionnées sur des entrées de texte ou d'image. Le principal défi relevé est de générer des textures de haute qualité sans informations d'éclairage intégrées, ce qui permet aux textures d'être réévaluées ou rééditées dans les pipelines graphiques modernes. Pour y parvenir, notre méthode exploite d'abord un modèle de diffusion 2D pré-formé en profondeur pour générer des images conditionnelles de vue et effectuer une fusion de texture multi-visualités, produisant une carte de texture grossière initiale. Cependant, comme les modèles 2D ne peuvent pas représenter complètement les formes 3D et désactiver les effets d'éclairage, la carte de texture grossière présente des zones incomplètes et des artefacts d'éclairage. Pour résoudre ce problème, nous formons des modèles de diffusion UV à UV séparés et de diffusion UVHD spécialisés pour le raffinement conscient de la forme des zones incomplètes et l'élimination des artefacts d'éclairage. Grâce à ce processus grossier à fin, Paint3D peut produire des textures UV 2K de haute qualité qui maintiennent la cohérence sémantique tout en étant sans éclairage, faisant progresser considérablement l'état de l'art dans la texture des objets 3D.

Le code est testé sur CentOS 7 avec Pytorch 1.12.1 CUDA 11.6 installé. Veuillez suivre les étapes suivantes pour configurer l'environnement.
# install python environment
conda env create -f environment.yaml
# install kaolin
pip install kaolin==0.13.0 -f https://nvidia-kaolin.s3.us-east-2.amazonaws.com/{TORCH_VER}_{CUDA_VER}.html
Pour ControlNet de position UV, vous pouvez le trouver ici.
Pour utiliser les autres modèles ControlNet, veuillez le télécharger à partir de la page Face étreinte et modifier le chemin ControlNet dans le fichier de configuration.
Ensuite, vous pouvez générer une texture grossière via:
python pipeline_paint3d_stage1.py
--sd_config controlnet/config/depth_based_inpaint_template.yaml
--render_config paint3d/config/train_config_paint3d.py
--mesh_path demo/objs/Suzanne_monkey/Suzanne_monkey.obj
--outdir outputs/stage1
et la texture raffinée via:
python pipeline_paint3d_stage2.py
--sd_config controlnet/config/UV_based_inpaint_template.yaml
--render_config paint3d/config/train_config_paint3d.py
--mesh_path demo/objs/Suzanne_monkey/Suzanne_monkey.obj
--texture_path outputs/stage1/res-0/albedo.png
--outdir outputs/stage2
Facultativement, vous pouvez également générer des résultats de texture avec un contrôle de position UV uniquement, par exemple:
python pipeline_UV_only.py
--sd_config controlnet/config/UV_gen_template.yaml
--render_config paint3d/config/train_config_paint3d.py
--mesh_path demo/objs/teapot/scene.obj
--outdir outputs/test_teapot
Avec une condition d'image, vous pouvez générer une texture grossière via:
python pipeline_paint3d_stage1.py
--sd_config controlnet/config/depth_based_inpaint_template.yaml
--render_config paint3d/config/train_config_paint3d.py
--mesh_path demo/objs/Suzanne_monkey/Suzanne_monkey.obj
--prompt " "
--ip_adapter_image_path demo/objs/Suzanne_monkey/img_prompt.png
--outdir outputs/img_stage1
et la texture raffinée via:
python pipeline_paint3d_stage2.py
--sd_config controlnet/config/UV_based_inpaint_template.yaml
--render_config paint3d/config/train_config_paint3d.py
--mesh_path demo/objs/Suzanne_monkey/Suzanne_monkey.obj
--texture_path outputs/img_stage1/res-0/albedo.png
--prompt " "
--ip_adapter_image_path demo/objs/Suzanne_monkey/img_prompt.png
--outdir outputs/img_stage2
Pour les points de contrôle dans Civitai avec seulement un fichier .Safetensor, vous pouvez utiliser le script suivant pour les convertir et les utiliser.
python tools/convert_original_stable_diffusion_to_diffusers.py
--checkpoint_path YOUR_LOCAL.safetensors
--dump_path model_cvt/
--from_safetensors
@inproceedings { zeng2024paint3d ,
title = { Paint3d: Paint anything 3d with lighting-less texture diffusion models } ,
author = { Zeng, Xianfang and Chen, Xin and Qi, Zhongqi and Liu, Wen and Zhao, Zibo and Wang, Zhibin and Fu, Bin and Liu, Yong and Yu, Gang } ,
booktitle = { Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition } ,
pages = { 4252--4262 } ,
year = { 2024 }
}Grâce à la texture, text2tex, diffusion stable et contrôlet, notre code leur emprunte partiellement. Notre approche est inspirée par Motiongpt, Michel-Ange et DreamFusion.
Ce code est distribué sous une licence Apache 2.0.
Notez que notre code dépend d'autres bibliothèques, y compris Pytorch3d et Pytorch Lightning, et utilise des ensembles de données qui ont chacun leurs propres licences respectives qui doivent également être suivies.