如何用 LocalAI 从一张图片生成带 PBR 贴图的 3D 网格(/3d/generations)?
【免费下载链接】LocalAILocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI
LocalAI 提供/3d/generations端点,由trellis2cpp后端(Microsoft TRELLIS.2 的 C++/GGML 移植)驱动,可以从一张单物体图片重建出带 PBR 材质的 3D 网格,输出为二进制 glTF(.glb)资产。这个功能只支持图片条件输入,没有文本提示词路径:你提供一张单个物体的照片或渲染图(最好是纯色背景),TRELLIS.2 会重建出完整的 3D 网格。适用前提是 LocalAI 已安装并能访问http://localhost:8080默认端口,且安装了带 PBR 纹理模型的trellis2-4b。
准备条件:启动 LocalAI 并安装模型
先启动 LocalAI。以 Docker 为例(完整镜像与硬件对应关系见 容器参考):
docker run -p 8080:8080 --name local-ai -ti localai/localai:latest然后通过 CLI 从模型库(gallery)安装模型(会下载模型文件,trellis2-4b约 18 GB):
local-ai run trellis2-4b # 完整管线:1024³ 级联 + PBR 纹理(~18 GB)如果要生成带 PBR 贴图的结果,必须安装trellis2-4b完整版。库中还有一个trellis2-4b-geometry(约 7 GB,仅 512³ 几何、无纹理、无 1024 级联),它只适合不需要贴图的场景。后端会自动检测已存在的 GGUF 组件并优雅降级:缺少纹理模型时产出无纹理几何,缺少 fine-flow 模型时回退到粗糙的 marching-cubes 预览。
调用 /3d/generations 生成网格
请求方法为POST,端点为/3d/generations,请求体是 JSON。必需字段只有两个:model(模型名)和image(条件图片,可以是 base64、data URI 或公网 URL)。其余常用可选参数及默认值:
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
quality | string | auto | 网格管线:auto、coarse、512、1024 |
background | string | auto | 背景处理:auto、keep、black、white |
step | int | 12 | 形状的流程采样步数 |
texture_steps | int | 12 | PBR 材质的流程采样步数 |
cfg_scale | float | 7.5 | Classifier-free guidance 强度 |
seed | int | 随机 | 随机种子,用于复现结果 |
response_format | string | url | url返回文件 URL,b64_json返回 base64 |
params | object | — | 后端特定字符串参数(texture_size、components) |
几个关键参数的行为:
quality选择网格分辨率:coarse是快速的 marching-cubes 预览,512是精细的 dual-grid 网格,1024是高分辨率级联(慢,需数分钟、约 10 GB VRAM),auto根据已安装的模型集合选择最佳管线。background控制在生成前对条件图片做纯色背景移除:auto检测与边框相连的近似纯黑/纯白区域,keep严格保留图片 alpha,black/white强制移除对应颜色。params中:texture_size是在启用 atlas 烘焙时的 UV 贴图分辨率提示;components可选tiny(移除小碎片)、largest(只保留最大连通体)、all(默认,全部保留)。
最短主路径命令(图片用公网 URL,质量选512):
curl http://localhost:8080/3d/generations \ -H "Content-Type: application/json" \ -d '{ "model": "trellis2-4b", "image": "https://example.com/photo-of-a-chair.png", "quality": "512" }'验证结果:获取并打开 GLB
响应使用 LocalAI 的 OpenAI 风格生成信封结构:
| 字段 | 类型 | 说明 |
|---|---|---|
created | int | 生成的 Unix 时间戳 |
id | string | 唯一标识(UUID) |
data | array | 包含生成资产的数组 |
data[].url | string | url模式下指向/generated-3d下.glb的 URL 路径 |
data[].b64_json | string | response_format为b64_json时的 Base64 编码 GLB |
当response_format为默认的url时,响应中的data[0].url会是类似/generated-3d/b64123456789.glb的路径(文档示例),从同一台服务器下载即可。产出的 GLB 是标准 glTF 2.0,可以在 Blender、three.js、<model-viewer>以及大多数引擎中打开验证。
如果不想走 URL 下载,可以直接在请求中指定"response_format": "b64_json"并用管道把 base64 解码为本地文件($(base64 -w0 chair.png)中的chair.png需替换为你自己的条件图片路径,-w0是 GNU coreutils 的折行关闭选项):
curl http://localhost:8080/3d/generations \ -H "Content-Type: application/json" \ -d "{ \"model\": \"trellis2-4b\", \"image\": \"$(base64 -w0 chair.png)\", \"response_format\": \"b64_json\" }" | jq -r '.data[0].b64_json' | base64 -d > chair.glb除了 API,React WebUI 的 Studio 中也有 3D 标签页(及/3d页面):上传或粘贴图片、选择质量、在交互式 PBR 查看器中预览(支持轨道/平移/缩放和线框开关),历史记录保存在浏览器 IndexedDB 中。
资源与限制
- 512³ 管线在现代 GPU 上约需两分钟;1024³ 级联约需五分钟,且需要约 10 GB VRAM 加上一段临时的主机内存峰值。
TRELLIS2_DEVICE=cpu可强制 CPU 推理(很慢,文档注明主要用于调试)。- 生成的网格 winding 未定向(忠于 TRELLIS.2),以 Y-up 导出,使用 vertex-PBR 材质;如需 UV-atlas 贴图烘焙,可在后端通过
T2GLB_XATLAS环境变量启用。
下一步
如果需要用于 3D 打印的水密网格,可用POST /3d/remesh对已生成的 GLB 做 CGAL Alpha Wrap 重网格化(multipart/form-data,返回重网格化的 GLB),细节见 3D Generation 文档 的 "Watertight print remeshing" 一节。模型文件清单与哈希可在 gallery/index.yaml 的trellis2-4b条目中查到,后端配置见 gallery/trellis2cpp.yaml。
【免费下载链接】LocalAILocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考