GET3D: 从图像中学习生成高质量3D纹理形状的模型
在现代数字世界中,3D内容的需求正在急剧增长。无论是游戏开发、虚拟现实还是电影制作,都需要大量高质量的3D模型。然而,手动创建这些模型既耗时又需要专业技能。为了解决这一挑战,NVIDIA研究院开发了一种名为GET3D的创新生成模型,可以直接从2D图像中学习并生成高质量的3D纹理形状。
GET3D模型概述
GET3D(Generative Explicit Textured 3D meshes)是一种端到端的生成模型,可以直接生成带纹理的3D网格模型。与之前的3D生成模型相比,GET3D在以下几个方面具有显著优势:
- 可以生成具有复杂拓扑结构的3D形状
- 生成的3D模型具有丰富的几何细节
- 能够生成高保真度的纹理
- 生成的模型可以直接被3D渲染引擎使用,无需后处理
GET3D模型的核心思想是将最新的可微分表面建模、可微分渲染以及2D生成对抗网络(GAN)技术相结合,从2D图像集合中学习生成3D模型。
如上图所示,GET3D的模型架构主要包括以下几个部分:
- 3D SDF和纹理场生成器:通过两个潜在编码生成3D有符号距离场(SDF)和纹理场。
- DMTet表面提取:使用深度行进四面体(DMTet)技术从SDF中提取3D表面网格。
- 可微分渲染器:采用基于光栅化的可微分渲染器,生成RGB图像和轮廓。
- 2D判别器:使用两个2D判别器分别对RGB图像和轮廓进行真假判断。
- 端到端训练:整个模型可以进行端到端的训练。
GET3D的主要特点
- 多样化的高质量3D生成
GET3D可以生成各种类别的3D模型,包括汽车、椅子、动物、摩托车、人物角色和建筑等。生成的模型具有丰富的几何细节和高质量纹理。
- 几何形状和纹理的解耦
GET3D实现了几何形状和纹理的有效解耦。这意味着可以独立控制生成模型的形状和纹理,为创作提供了更大的灵活性。
- 潜在空间插值
通过在潜在空间中进行随机游走,GET3D可以实现不同形状之间的平滑过渡,为创作提供了更多可能性。
- 无监督材质生成
结合DIBR++技术,GET3D能够以完全无监督的方式生成材质并产生有意义的视角相关光照效果。
- 文本引导的形状生成
GET3D还支持基于文本提示的3D形状生成,为用户提供了更直观的创作方式。
GET3D的应用前景
GET3D为多个行业和应用场景带来了巨大的潜力:
- 游戏开发: 快速生成游戏中需要的各种3D模型,如角色、道具、环境等。
- 虚拟现实: 为VR内容创作提供丰富的3D资源。
- 电影制作: 辅助创建电影中的数字场景和角色。
- 建筑设计: 生成多样化的建筑模型,辅助设计和规划。
- 产品设计: 快速生成产品原型,加速设计迭代。
- 教育: 为学习3D建模的学生提供参考和灵感。
模型训练和使用
GET3D的训练和使用主要包括以下步骤:
-
准备数据集: GET3D使用合成数据集进行训练。研究团队提供了ShapeNet数据集的渲染脚本。
-
模型训练: 训练过程需要高性能GPU。以下是训练汽车模型的示例命令:
python train_3d.py --outdir=PATH_TO_LOG --data=PATH_TO_RENDER_IMG --camera_path PATH_TO_RENDER_CAMERA --gpus=8 --batch=32 --gamma=40 --data_camera_mode shapenet_car --dmtet_scale 1.0 --use_shapenet_split 1 --one_3d_generator 1 --fp32 0
- 推理和可视化: 使用预训练模型进行推理和可视化。示例命令如下:
python train_3d.py --outdir=save_inference_results/shapenet_car --gpus=1 --batch=4 --gamma=40 --data_camera_mode shapenet_car --dmtet_scale 1.0 --use_shapenet_split 1 --one_3d_generator 1 --fp32 0 --inference_vis 1 --resume_pretrain MODEL_PATH
-
生成纹理网格: 添加
--inference_to_generate_textured_mesh 1
选项可生成带纹理的网格。 -
潜在代码插值: 添加
--inference_save_interpolation 1
选项可生成潜在代码插值结果。
结论
GET3D为3D内容创作开辟了新的可能性。通过从2D图像中学习生成高质量的3D纹理形状,它大大简化了3D模型的创建过程。随着技术的进一步发展和应用,我们可以期待看到更多令人惊叹的3D内容涌现,推动虚拟世界和数字体验的边界不断扩展。
GET3D的开源为研究人员和开发者提供了宝贵的资源,相信未来会有更多基于GET3D的创新应用出现。无论您是3D艺术家、游戏开发者,还是对3D生成感兴趣的研究人员,GET3D都为您提供了一个强大的工具,去探索和创造令人惊叹的3D世界。