MeshDiffusion

GitHub
830 42 较难 1 次阅读 1周前MIT图像开发框架
AI 解读 由 AI 自动生成,仅供参考

MeshDiffusion 是一款基于扩散模型的开源工具,专为直接生成高质量 3D 网格(Mesh)而设计。它源自 ICLR 2023 的焦点论文,核心目标是解决传统 AI 在生成 3D 内容时往往只能输出点云或体素,难以直接获得可编辑、拓扑结构完整的网格模型这一痛点。

该工具的独特之处在于采用了“深度行进四面体”(DMTet)参数化技术。通过将扩散过程直接作用于 DMTet 表示,MeshDiffusion 能够从无到有地生成复杂的 3D 形状,支持无条件随机生成,也能根据单张视图图像补全被遮挡的几何细节,最终输出标准的 OBJ 格式文件。目前官方提供了椅子、汽车、飞机等类别的预训练模型,方便快速验证效果。

MeshDiffusion 非常适合 3D 视觉研究人员、AI 开发者以及需要自动化构建 3D 资产的技术型设计师使用。由于涉及 CUDA 环境配置及 Python 代码运行,它更适合具备一定深度学习基础的开发者进行本地部署、二次开发或学术研究,而非面向零技术背景的普通大众用户。对于希望探索生成式 3D 建模前沿技术、构建自定义 3D 数据集或研发相关应用的专业人士来说,这是一个极具参考价值的开源项目。

使用场景

某独立游戏开发者需要在极短时间内为一款复古飞行射击游戏批量生成风格统一的 3D 飞机模型,以填充背景关卡。

没有 MeshDiffusion 时

  • 建模耗时过长:人工使用 Blender 或 Maya 从零雕刻每一架飞机的拓扑结构,单个高模需耗费数小时,无法满足海量关卡需求。
  • 单视图还原困难:仅凭一张概念设计图难以脑补被遮挡的机身背部细节,反复修改尝试导致迭代周期拉长。
  • 拓扑质量不稳定:手动生成的网格布线往往杂乱无章,后续绑定骨骼动画时容易出现模型撕裂或变形异常。
  • 风格一致性差:不同美术师制作的模型在面数分布和几何特征上差异巨大,破坏了游戏整体的视觉统一性。

使用 MeshDiffusion 后

  • 自动化批量生产:利用预训练的飞机模型权重,通过无条件生成模式一键产出数十个结构完整的 3D 网格,将制作时间从小时级压缩至分钟级。
  • 智能补全遮挡区域:输入单张正面视角的概念图,MeshDiffusion 能基于扩散概率模型精准推理并生成合理的背面与侧面几何细节。
  • 原生优质拓扑结构:直接输出基于深行进四面体(DMTet)参数化的高质量网格,无需繁琐的重拓扑步骤即可直接用于动画绑定。
  • 潜在空间风格控制:在相同的潜在分布下采样,确保生成的所有飞机模型在几何复杂度和艺术风格上保持高度一致。

MeshDiffusion 将原本依赖资深美术师数天工作的 3D 资产创建流程,转化为可程序化控制的分钟级生成任务,极大降低了内容创作门槛。

运行环境要求

操作系统
  • 未说明
GPU

必需 NVIDIA GPU,需支持 CUDA 11.6

内存

未说明

依赖
notes该工具依赖 nvdiffrec 项目,需按照其说明安装额外环境。提供分辨率 64 和 128 的预训练模型(椅子、汽车、飞机等类别)。数据集以立方网格形式提供,变形尺度默认设为 3.0。纹理生成需参考 TEXTurePaper 项目。若需更高分辨率的四面体网格,需使用 quartet 工具生成并处理边界。
python3.8+
Pytorch>=1.6
Pytorch3D
ml_collections
MeshDiffusion hero image

快速开始

MeshDiffusion:基于分数的生成式3D网格建模

简介

这是 MeshDiffusion(ICLR 2023 Spotlight)的官方实现。

MeshDiffusion 是一种用于生成3D网格的扩散模型,它直接使用深度Marching四面体(DMTet)进行参数化。更多详细信息和交互式演示,请参阅我们的项目页面

快速入门

要求

  • Python >= 3.8
  • CUDA 11.6
  • Pytorch >= 1.6
  • Pytorch3D
  • ml_collections

请按照 nvdiffrec 的说明安装所需依赖。

预训练模型

下载我们预训练的MeshDiffusion模型(分辨率为64),适用于椅子汽车飞机桌子步枪。作为备用方案,您也可以从 Google Drive 下载汽车和椅子的模型。

在此下载分辨率为128的模型:汽车椅子

数据集

我们提供了分辨率为64的处理后数据集(以立方体网格形式),可在此链接获取。数据集的形变尺度设置为3.0,所有非网格生成四面体顶点的SDF值根据其符号被设置为1或-1,如论文所述。移除边界的立方体网格大小为63x63x63,并为了方便起见在右侧填充至64x64x64。请查看 eval.py 以了解如何从3D立方体网格中提取DMTet表示。

推理

无条件生成

运行以下命令:

python main_diffusion.py --config=$DIFFUSION_CONFIG --mode=uncond_gen \
--config.eval.eval_dir=$OUTPUT_PATH \
--config.eval.ckpt_path=$CKPT_PATH

随后运行:

cd nvdiffrec
python eval.py --config $DMTET_CONFIG --out-dir $OUT_DIR --sample-path $SAMPLE_PATH \
--deform-scale $DEFORM_SCALE [--angle-ind $ANGLE_INDEX] [--num-smoothing-steps $NUM_SMOOTHING_STEPS]

其中 $SAMPLE_PATH$OUTPUT_PATH 中生成的 .npy 样本文件,而 $DEFORM_SCALE 是为DMTet数据集设置的四面体顶点形变尺度(默认情况下,分辨率为64时我们使用3.0;请根据您自己的数据集调整该值)。如果需要从不同角度渲染图像,请将 $ANGLE_INDEX 更改为0到50之间的某个数字。如果后期处理中的拉普拉斯平滑效果过于强烈,可以调整 $NUM_SMOOTHING_STEPS(默认值为3)。例如,对于飞机类别,我们建议将 $NUM_SMOOTHING_STEPS 设置为1或2。

最终会保存一个 .obj 格式的网格文件到指定文件夹中,您可以在MeshLab等工具中查看。保存的图像来自未经后期处理的原始网格,因此仅用于快速验证。

单视角条件生成

首先,从处于规范姿态的网格单视图中拟合一个DMTet:

cd nvdiffrec
python fit_singleview.py --config $DMTET_CONFIG --mesh-path $MESH_PATH --angle-ind $ANGLE_IND --out-dir $OUT_DIR --validate $VALIDATE

其中 $ANGLE_IND 是控制物体绕z轴旋转的整数(0到50)。如果需要可视化拟合后的DMTet,请将 $VALIDATE 设置为1。

然后使用训练好的扩散模型来补全遮挡区域:

cd ..

python main_diffusion.py --mode=cond_gen --config=$DIFFUSION_CONFIG \
--config.eval.eval_dir=$EVAL_DIR \
--config.eval.ckpt_path=$CKPT_PATH \
--config.eval.partial_dmtet_path=$OUT_DIR/tets/dmtet.pt \
--config.eval.tet_path=$TET_PATH \
--config.eval.batch_size=$EVAL_BATCH_SIZE

其中 $TET_PATH 是位于 nvdiffrec/data/tets 目录下的均匀四面体网格文件(分辨率为64或128)。

现在将完成的网格以 .obj 文件的形式存储在 $SAMPLE_PATH 中:

cd nvdiffrec
python eval.py --config $DMTET_CONFIG --sample-path $SAMPLE_PATH \
--deform-scale $DEFORM_SCALE [--angle-ind $ANGLE_INDEX] [--num-smoothing-steps $NUM_SMOOTHING_STEPS]

注意:单视图拟合和扩散模型所使用的形变尺度应保持一致。在进行条件生成之前请务必检查。

训练

对于ShapeNet数据集,首先创建所有真实标签网格路径的列表,并将其保存为 ./nvdiffrec/data/shapenet_json 下的json文件。

然后运行以下命令:

cd nvdiffrec
python fit_dmtets.py --config $DMTET_CONFIG --meta-path $META_PATH --out-dir $DMTET_DATA_PATH --index 0 --split-size 100000

其中 split_size 可设置为大于数据集大小的任意大数值。如果采用多任务批量拟合,请将 split_size 调整为合适的数值,并为不同任务分配不同的 index。如有必要,可在配置文件中调整第一轮和第二轮拟合的分辨率。$META_PATH 是用于存储网格路径列表的json文件。

现在将DMTet数据集(以Python字典形式存储)转换为3D立方体网格数据集:

cd ../data/
python tets_to_3dgrid.py --resolution $RESOLUTION --root $DMTET_DICT_FOLDER --source $SOURCE_FOLDER --target grid --index 0

假设DMTet字典数据集存储在 $DMTET_DICT_FOLDER/$SOURCE_FOLDER 中,我们将生成的立方体网格数据集保存在 $DMTET_DICT_FOLDER/grid 中。

为扩散模型训练创建所有DMTet 3D立方体网格文件位置的元数据文件:

cd ../metadata/
python save_meta.py --data_path $DMTET_DICT_FOLDER/grid --json_path $META_FILE

训练扩散模型:

cd ..

python main_diffusion.py --mode=train --config=$DIFFUSION_CONFIG \
--config.data.meta_path=$META_FILE \
--config.data.filter_meta_path=$TRAIN_SPLIT_FILE

其中 $TRAIN_SPLIT_FILE 是包含要纳入训练集的索引的json列表。示例可在 metadata/train_split/ 中找到。关于扩散模型的配置文件,请参考 configs/res64.pyconfigs/res128.py

使用我们提供的数据集进行训练

所提供的数据集以 .npy 格式存储,而非 .pt。请改用以下命令:

cd ../metadata/
python save_meta.py --data_path $DMTET_NPY_FOLDER --json_path $META_FILE --extension npy

训练扩散模型:

cd ..

python main_diffusion.py --mode=train --config=$DIFFUSION_CONFIG \
--config.data.meta_path=$META_FILE \
--config.data.filter_meta_path=$TRAIN_SPLIT_FILE \
--config.data.extension=npy

纹理生成

请按照 https://github.com/TEXTurePaper/TEXTurePaper 中的说明,为生成的网格创建文本条件纹理。

其他

如果需要更高分辨率的四面体网格,首先请遵循 nvdiffrec/data/tets 目录下的 README 文件,使用 quartet 生成均匀的四面体网格。然后运行 nvdiffrec/data/tets/crop_tets.py 脚本以移除边界(从而使结果网格满足平移对称性)。

Blender 可视化

如需使用 Blender 可视化生成的网格,请参阅 blender_viz/ 目录以获取更多详细信息。

引用

如果您认为我们的工作对您的研究有所帮助,请考虑引用以下文献:

@InProceedings{Liu2023MeshDiffusion,
    title={MeshDiffusion: 基于分数模型的三维网格生成},
    author={刘振、冯瑶、迈克尔·J·布莱克、德里克·诺鲁泽扎赖、利亚姆·保尔、刘伟阳},
    booktitle={国际学习表征会议},
    year={2023},
    url={https://openreview.net/forum?id=0cpM2ApF9p6}
}

致谢

本仓库基于 https://github.com/NVlabs/nvdiffrechttps://github.com/yang-song/score_sde_pytorch 进行了改编。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

157.4k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|6天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|6天前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架