如何用 LocalAI 从一张图片生成带 PBR 贴图的 3D 网格(/3d/generations)?
2026/9/13 11:52:10 网站建设 项目流程

如何用 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)。其余常用可选参数及默认值:

参数类型默认说明
qualitystringauto网格管线:autocoarse5121024
backgroundstringauto背景处理:autokeepblackwhite
stepint12形状的流程采样步数
texture_stepsint12PBR 材质的流程采样步数
cfg_scalefloat7.5Classifier-free guidance 强度
seedint随机随机种子,用于复现结果
response_formatstringurlurl返回文件 URL,b64_json返回 base64
paramsobject后端特定字符串参数(texture_sizecomponents

几个关键参数的行为:

  • 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 风格生成信封结构:

字段类型说明
createdint生成的 Unix 时间戳
idstring唯一标识(UUID)
dataarray包含生成资产的数组
data[].urlstringurl模式下指向/generated-3d.glb的 URL 路径
data[].b64_jsonstringresponse_formatb64_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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询