编辑范围
Pixal3D 是什么?
Pixal3D 是一个开源图生 3D 生成模型。输入一张 RGB 图片,它能在几秒内输出完整、带贴图的 3D 网格。与需要云端积分或订阅的商业工具不同,Pixal3D 完全运行在你自己的 GPU 上。它采用前馈神经网络架构,直接把图像特征映射到 3D 几何——不需要多轮扩散,也不需要昂贵的优化循环。
核心创新是像素对齐反投影。传统方法依赖多视角扩散或逐视角重建;Pixal3D 则通过相机对齐的射线采样,把每个 2D 像素直接映射到对应的 3D 空间位置,从而在几何精度上实现大幅跃升。
研究背景
核心特性
单图输入
上传任意照片或插画,几秒内得到 3D 模型。不需要多视角照片或深度传感器。
带贴图输出
在生成 3D 网格几何的同时生成完整贴图,渲染前无需额外制作材质。
开源(MIT)
GitHub 上提供完整源码,个人和商业使用均免费,且不要求署名。
消费级 GPU
6GB 以上显存即可运行,RTX 2060 起步;也支持 Apple Silicon 的 MPS 后端。
GLB / OBJ 导出
兼容 Blender、Unity、Unreal Engine、Three.js 以及主流 3D 工具链。
像素级精度
像素到 3D 表面的直接映射能保留源图中的细节和边缘。
技术架构深入解析
理解 Pixal3D 的内部原理,有助于你选择正确的输入图并调好参数。下面从数据流和架构角度拆解整条流程。
核心机制:像素对齐反投影
Pixal3D 的假设很直接:输入图中的每个像素都应该沿着它对应的相机射线参与 3D 几何。对于位置在 (u, v) 的像素,它在世界坐标中的 3D 射线方向由相机参数决定。Pixal3D 在这条射线的多个深度点上采样该像素的 2D 特征,再融合这些采样,预测最终的占用率或有符号距离场。
| 组件 | 实现 | 作用 |
|---|---|---|
| 图像编码器 | DINOv2 ViT-L/14 | 提取多尺度特征——语义理解加局部细节 |
| 深度估计器 | DepthAnything V2 | 提供初始深度先验,约束反投影的采样范围 |
| 多尺度融合 | NAF(邻域注意力融合) | 跨 ViT 层融合特征——大感受野管整体形状,小感受野管细节 |
| 3D 表示 | SDF(有符号距离场) | 由轻量 MLP 解码的隐式表面表示 |
| 网格提取 | Marching Cubes | 从隐式场中提取显式、水密的三角网格 |
| 贴图生成 | UV 展开 + 贴图网络 | 生成与输入图一致的 UV 布局和表面颜色贴图 |
大白话
流程阶段
图像编码(约 0.3 秒)
DINOv2 ViT-L/14 把输入编码成多级特征金字塔;DepthAnything V2 估计单目深度图作为先验。
像素反投影采样(约 0.3 秒)
根据估计深度确定每个像素的采样范围,然后沿相机射线在 64–128 个 3D 点上查询图像特征。
NAF 多尺度融合(约 0.2 秒)
邻域注意力融合把不同 ViT 层的特征混合——大感受野捕捉整体形状,小感受野保留细节。
SDF 解码(约 2–4 秒)
轻量 MLP 把融合后的 3D 特征解码成有符号距离场,为每个采样点预测到最近表面的距离。
Marching Cubes 网格提取(约 0.3 秒)
在 128³ 或 256³ 体素网格上运行 Marching Cubes,从隐式场中提取水密三角网格。
贴图烘焙(约 1–3 秒)
UV 展开和贴图网络生成表面颜色贴图,并保持与输入图的视觉一致。
安装与快速开始
硬件要求
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| GPU | NVIDIA RTX 2060(6GB) | NVIDIA RTX 3060 及以上(12GB) |
| 显存 | 6GB | 12GB+ |
| Python | 3.10+ | 3.11 |
| CUDA | 11.8+ | 12.1+ |
| 内存 | 16GB | 32GB |
| 磁盘 | 10GB | 20GB(含模型权重) |
安装
# 1. 克隆仓库
git clone https://github.com/TencentARC/Pixal3D.git
cd Pixal3D
# 2. 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 确认 GPU 可用
python -c "import torch; print(torch.cuda.is_available())"
# 应输出:True安装避坑
- 始终使用 Python 虚拟环境,避免与现有 ML 项目冲突
- 如果 PyTorch 的 CUDA 版本不匹配,手动安装:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121 - 首次运行会下载约 2GB 模型权重,请保持网络稳定
基础用法
# 最简单用法——单图生成 3D
python scripts/generate.py \
--input ./my_photo.jpg \
--output ./output/model.glb \
--device cuda
# 更高分辨率,保留更多细节
python scripts/generate.py \
--input ./my_photo.jpg \
--output ./output/model_high.glb \
--resolution 256 \
--device cuda
# CPU 回退(非常慢,不推荐)
python scripts/generate.py \
--input ./my_photo.jpg \
--output ./output/model.glb \
--device cpu提示词工程与参数调优
Pixal3D 是图生 3D 模型(不使用文本提示词),但输入图质量和参数设置会直接影响输出质量。下面是输入图最佳实践和完整的参数调优矩阵。
输入图最佳实践
| 维度 | 最佳实践 | 应避免 |
|---|---|---|
| 光照 | 均匀柔和的光线,尽量少硬阴影 | 逆光、过曝、非常暗的环境 |
| 背景 | 纯色或简单背景,主体对比度高 | 杂乱背景,或背景与主体颜色接近 |
| 构图 | 主体居中,占画面 60–80% | 主体偏出画面、被裁切或太小 |
| 角度 | 轻微俯视(约 15–30°) | 极端俯视、仰视或纯侧视 |
| 分辨率 | 512×512 到 1024×1024 | 低于 256×256——太模糊 |
| 主体类型 | 硬表面物体效果最好(家具、电子产品、机械件) | 透明物体、极薄结构(例如发丝) |
预处理技巧
参数调优矩阵
| 参数 | 作用 | 默认值 | 范围 | 调高时 | 调低时 |
|---|---|---|---|---|---|
| --resolution | 体素分辨率 | 128 | 64-256 | 几何更精细,但显存和时间大幅增加 | 更快,但几何更粗糙 |
| --sdf-samples | 每条射线的采样数 | 64 | 32-128 | 表面定位更准确 | 更快,但可能漏掉薄结构 |
| --texture-size | 贴图分辨率 | 1024 | 512-2048 | 贴图更清晰 | 贴图更模糊,但文件更小 |
| --mesh-simplify | 网格简化比例 | 0.0 | 0.0-0.5 | 面数更少,适合实时渲染 | 保留全部面,文件更大 |
提示词模板库
把这些模板用于 AI 图像生成器(Midjourney、DALL·E、Stable Diffusion),为 Pixal3D 生成更合适的输入图。输入越好,3D 输出越好。
A clean product photo of [object name] on a plain white background, studio lighting, sharp focus, front-facing with slight top-down angle, 8K, product photography style --ar 1:1 --v 6.0A game-ready 3D concept art of [object/character description], orthographic view, neutral grey background, even lighting, no shadows, clean silhouette, T-pose, concept art sheet style --ar 1:1[object description], isolated on white background, technical photography, sharp edges visible, matte finish, uniform lighting from all sides, front 3/4 view, product catalog style, 8K detail --ar 1:1A simple vector illustration of [object description], flat colors, clean outlines, centered on white background, isometric view, children's book style --ar 1:1Blender 后处理流程
Pixal3D 输出的是「原始」网格和贴图——多数项目还需要在 Blender 里做后处理,资产才能投入生产。下面是从导入 GLB 到最终渲染输出的完整 SOP。
标准处理流程
把 GLB 导入 Blender
File → Import → glTF 2.0 (.glb)。按 N 打开侧边栏,确认模型尺寸。
缩放与旋转校准
Pixal3D 输出的朝向可能与场景不一致。选中模型 → S 缩放 → R 旋转到合适位置。
按需减面
修改器 → Decimate → 比例 0.3–0.5。Pixal3D 通常输出约 5 万–10 万面;实时渲染可减到 1 万–3 万面。
检查 UV 展开
检查 UV 是否重叠或拉伸。在 UV Editing 工作区用 Smart UV Project 修复问题区域。
材质与贴图调整
在 Shading 工作区把贴图连接到 Principled BSDF 的 Base Color。调整 Roughness(0.3–0.7)和 Specular(0.5),让材质更真实。
灯光与渲染
使用三点布光(主光 + 补光 + 轮廓光)。用 Cycles 以 128–256 采样渲染,导出 PNG 序列或单帧。
减面策略
| 使用场景 | 目标面数 | 减面比例 | 额外步骤 |
|---|---|---|---|
| Unreal/Unity 游戏资产 | 5,000-15,000 | 0.1-0.3 | 手动生成 LOD |
| Web 3D(Three.js) | 10,000-30,000 | 0.2-0.4 | glTF Draco 压缩 |
| 3D 打印 | 保留原始面数 | 不简化 | 检查水密性和壁厚 |
| Blender 高质量渲染 | 20,000-50,000 | 0.4-0.6 | Subdivision Surface 修改器 |
常见问题排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 缺失背面 | 输入图只展示了物体正面 | 使用正面偏侧约 15–30° 的角度,或在提示词中要求正交视图 |
| 贴图模糊或错位 | UV 展开质量差或贴图分辨率低 | 把 --texture-size 提高到 2048,在 Blender 中手动重新展开 UV |
| 网格表面有洞 | 输入图存在遮挡或复杂背景 | 先用抠图工具去背景,确保主体完整可见 |
| 显存不足 | 分辨率设得太高或 GPU 显存不够 | 把 --resolution 降到 64,关闭其他 GPU 进程,或使用 --device cpu(很慢) |
| 输出与输入不一致 | 物体形状太复杂,含大量薄结构 | 选择轮廓简单清晰的物体,或从多个角度生成后手动合并 |
| 安装时 CUDA 报错 | PyTorch 的 CUDA 版本不匹配 | 从 pytorch.org 重新安装与你的 CUDA 版本匹配的 PyTorch |
SOP 清单:Pixal3D 端到端流程
准备输入图
对照最佳实践:主体居中、背景简单、主体清晰、分辨率 ≥ 512px
确认硬件
GPU 支持 CUDA?显存 ≥ 6GB?Python ≥ 3.10?磁盘 ≥ 10GB?
安装 Pixal3D
克隆仓库 → 创建 venv → pip install → 确认 CUDA 可用
首次试跑
用默认设置和一张简单图片跑通流程,确认整条流水线正常
参数调优
根据物体类型调整 --resolution 和 --sdf-samples,并记录结果
批量生成
写一个 shell 脚本批量处理多张图片,保持输出格式一致
导入 Blender
导入 GLB → 缩放/旋转 → 减面 → UV 清理 → 材质调整
渲染测试
三点布光 → Cycles 渲染 → 检查贴图和几何质量
导出最终资产
按目标平台选择格式:GLB(Web)、FBX(Unity/Unreal)、STL(3D 打印)
质量复核
在目标平台打开模型,确认动画、材质和碰撞体正确
按角色划分的 TODO 列表
更多资源
- GitHub 仓库 — github.com/TencentARC/Pixal3D(源码、issue 跟踪、社区讨论)
- arXiv 论文 — 搜索「Pixal3D」获取最新版本(SIGGRAPH 2026)
- Hugging Face Demo — 无需本地环境,在浏览器里试用 Pixal3D
- TripoSplat — 独立的托管 Gaussian Splat 流程,提供浏览器端 3D 工具
- 3D AI 社区 Discord — 最新动态、经验分享和排障帮助
最终建议