Paint3D 项目介绍
项目概述
Paint3D 是一个创新的生成框架,专注于为没有纹理的三维网格生成高分辨率、无光照的多样化2K UV纹理贴图。该项目可以基于文本或图像输入进行纹理生成,为现代图形管线中的三维对象重新着色或编辑提供了更多可能性。
技术细节
Paint3D 引入了一种从粗到细的生成框架,旨在生成不含光照信息的纹理。这种特性允许生成的纹理在现代图形管线中进行重新照亮或编辑。实现这一切的关键在于,该方法首先利用预训练的深度感知二维扩散模型生成视图条件图像,并进行多视角纹理融合,产生初步的粗糙纹理贴图。然而,由于二维模型不能充分代表三维形状且无法展示光照效果,导致初步生成的纹理贴图可能会出现不完整区域和光照现象。为了解决这些问题,Paint3D 训练了专门用于形状感知的 UV 修补和 UVHD 扩散模型,以优化不完整区域并去除光照现象。通过这种从粗到细的过程,Paint3D 能够生成高质量且无光照的2K UV纹理,显著提升三维对象纹理制作的技术水平。
快速开始
环境设置
此代码在Centos 7上进行了测试,使用的PyTorch版本为1.12.1,CUDA为11.6。环境设置步骤如下:
-
安装Python环境:
conda env create -f environment.yaml
-
安装kaolin:
pip install kaolin==0.13.0 -f https://nvidia-kaolin.s3.us-east-2.amazonaws.com/{TORCH_VER}_{CUDA_VER}.html
纹理生成
为了生成粗糙纹理,可以运行以下命令:
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
生成经过优化的纹理:
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
项目新闻
- 在2024年11月5日,发布了MVPaint,一种支持任意 UV 展开的多视角一致纹理方法。
- 2024年9月26日,MeshXL方法被NeurIPS 2024接受,其使用Paint3D生成详细的网格纹理。
致谢
感谢TEXTure, Text2Tex, Stable Diffusion 和 ControlNet的部分代码支持。本项目的灵感来源于MotionGPT, Michelangelo 和 DreamFusion等项目。
许可
代码基于Apache 2.0 许可进行分发。注意,代码依赖于其他库,如PyTorch3D和PyTorch Lightning,并使用具有各自协议的数据集,使用时需遵循相应协议。