Página do projeto • ARXIV • Demo • Perguntas frequentes • Citação
O Paint3D é uma nova estrutura generativa grossa para a fila que é capaz de produzir mapas de textura UV de alta resolução, sem iluminação e diversos 2K para malhas 3D sem textos condicionadas em entradas de texto ou imagem.
Apresentamos o Paint3D, uma nova estrutura generativa grossa para a fila que é capaz de produzir mapas de textura UV de alta resolução, sem iluminação e diversos 2K para malhas 3D não textidas condicionadas em entradas de texto ou imagem. O principal desafio abordado é gerar texturas de alta qualidade sem informações de iluminação incorporada, que permitem que as texturas sejam re-limpadas ou reeditadas nos pipelines de gráficos modernos. Para conseguir isso, nosso método primeiro aproveita um modelo de difusão 2D pré-treinado, com credibilidade de profundidade, para gerar imagens condicionais e executar a fusão de textura com várias visões, produzindo um mapa de textura grosso inicial. No entanto, como os modelos 2D não podem representar totalmente as formas 3D e desativar os efeitos da iluminação, o mapa de textura grosso exibe áreas incompletas e artefatos de iluminação. Para resolver isso, treinamos modelos separados de que incluem UV e UVHD, especializados no refinamento de áreas incompletas e à remoção de artefatos de iluminação. Através desse processo grosso para o Fine, o Paint3D pode produzir texturas UV de 2K de alta qualidade que mantêm a consistência semântica e sem iluminação, avançando significativamente o estado da arte em texturar objetos 3D.

O código é testado no CentOS 7 com o Pytorch 1.12.1 CUDA 11.6 instalado. Siga as seguintes etapas para configurar o ambiente.
# 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
Para o Controlnet da posição UV, você pode encontrá-lo aqui.
Para usar os outros modelos ControlNet, faça o download da página de face Hugging e modifique o caminho do ControlNet no arquivo de configuração.
Em seguida, você pode gerar textura grosseira 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
e a textura refinada 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
Opcionalmente, você também pode gerar resultados de textura apenas com o controle de posição UV, por exemplo:
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
Com uma condição de imagem, você pode gerar textura grosseira 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
e a textura refinada 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
Para pontos de verificação em Civitai com apenas um arquivo .Sesetensor, você pode usar o seguinte script para convertê -los e usá -los.
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 }
}Graças à textura, text2tex, difusão estável e controlnet, nosso código está parcialmente emprestado deles. Nossa abordagem é inspirada em MotionGPT, Michelangelo e Dreamfusion.
Este código é distribuído sob uma licença Apache 2.0.
Observe que nosso código depende de outras bibliotecas, incluindo Pytorch3D e Pytorch Lightning, e usa conjuntos de dados que têm suas próprias licenças respectivas que também devem ser seguidas.