“让 AI 帮我建模”这件事,SMLib 仓库已经做了一半:根目录有 AGENTS.md、.agents/ 下有 22 篇操作指南、19 个 Agent 技能,还有完整的 text-to-3D 参考实现。
这篇做完整实战:用 Claude Code(或其他 coding agent)基于 SMLib 做一个“文本→3D 资产”的 CLI。
一、准备环境
# ① 装 SMLib Python 包(官方 PyPI 有 manylinux wheel)
pip install usd-brep
# ② 准备一个 coding agent(Claude Code 为例)
# 也可以换成 Cursor / Codex / 其他任意 agent
# ③ 拿到仓库(agent 需要读 AGENTS.md 与 .agents/)
git clone https://github.com/NVIDIA-Omniverse/usd-brep.git
cd usd-brep
注意:pip install usd-brep 需要 Python 3.12(官方 wheel 为 cp312)。
二、先理解 Agent 的“工具箱”
| AGENTS.md | 给 Agent 的作业指南(构建、架构、代码风格) |
| .agents/docs/generate_asset.md | text-to-3D 标准流水线(本实战的指导文档) |
| .agents/skills/text-to-3d-asset-generation/SKILL.md | 文本生成资产的技能说明 |
| tools/scripts/example_generate_asset.py | 完整可运行的参考实现 |
| tools/scripts/view_usd.py | 渲染 USD 截图(结果验证) |
三、实战:让 Agent 写一个 CLI
1. 把提示词交给 Agent
在仓库目录里对 Claude Code 说:
用 SMLib 的 text-to-3D 流水线,帮我写一个 CLI 工具:
输入一个物体名称(比如 "gearbox"),输出一个 mesh-only 的 USDA 文件。
要求:
– 用 _omni_solid(import usd_brep as sm)构建几何
– 几何用参数化方式构建,尺寸用变量
– 镶嵌后用 PolyBrep.to_mesh_arrays() 生成 UsdGeom.Mesh
– 输出 z-up、厘米单位(SetStageUpAxis(z)、SetStageMetersPerUnit(0.01))
– 参考 tools/scripts/example_generate_asset.py 的结构
– 完成后用 tools/scripts/view_usd.py 截图验证
2. Agent 会照着官方流水线实现
① 用 SMLib 构建几何
├─ 解析图元:create_box / create_sphere / create_cylinder / create_torus…
├─ NURBS 曲线曲面:create_curve_interp_points / create_surface_from_points…
└─ 组合成形:linear_sweep / boolean_union / fillet_edges…
② 镶嵌:sm.tessellate(brep) → PolyBrep
③ 取数组:PolyBrep.to_mesh_arrays() → {points, normals, faces, face_normals}
④ 写 USD:UsdGeom.Mesh(每部件一个 prim)+ SetStageUpAxis(z) + SetStageMetersPerUnit(0.01)
⑤ 验证:view_usd.py –screenshot <png> <usda>
3. 参考实现长什么样
官方 example_generate_asset.py 的核心结构:
import _omni_solid as sm # 几何:SMLib Python 绑定
from pxr import Usd, UsdGeom, Sdf, Vt, Gf # 发布:USD
def build_parts():
parts = []
base = sm.create_box((–5, –5, 0), 10, 10, 3)
sm.fillet_edges(base, base.edges(), radius=0.5) # 圆角
parts.append(("base", base, (0.30, 0.60, 0.95)))
parts.append(("post", sm.create_cylinder((0, 0, 3), 0.8, 6.0)))
parts.append(("ball", sm.create_sphere((0, 0, 9), 1.5)))
return parts
关键点:USD 只在最后一步接触——中间全程在 SMLib 栈内完成,输出里不写 BrepArray,纯网格资产。
四、Agent 的最佳实践(官方 Ground Rules)
| 从参考脚本开始 | 复制 example_generate_asset.py 改造,不要从零写 |
| 选最简单的构建方式 | 图元合适就用(精确、镶嵌干净);扫掠/旋转/NURBS 往往比"堆图元+布尔"更干净 |
| 参数化建模 | 尺寸用 Python 变量,不要散落魔法数字 |
| 一个资产一个脚本 | 便于维护与复用 |
| USD 只在最后接触 | 中途别在 BRep 与 USD 之间来回转(有精度归一化损失) |
| 失败不要手改 USD 掩盖 | 去查 errors.md 或对应操作指南 |
五、进阶:用技能分诊
Agent 遇到复杂问题时,用仓库里的技能(每个是一份 SKILL.md):
| 几何构建/布尔/圆角失败 | smlib-kernel-booleans / smlib-kernel-fillets |
| 镶嵌参数不对/网格异常 | smlib-kernel-tessellation |
| Python API 用法 | smlib-python-api-use |
| 从文本生成资产 | text-to-3d-asset-generation |
| USD 数据/结构问题 | usd-brep-data-author / usd-brep-schema |
六、验证结果
# 运行生成的脚本
python your_cli.py –object gearbox –output gearbox.usda
# 截图验证
python tools/scripts/view_usd.py –screenshot gearbox.png gearbox.usda
检查点:
- 截图里模型形状合理、无破面;
- PolyBrep.to_mesh_arrays() 返回的数组非空;
- USDA 能被 Omniverse viewer / usdview 打开。
七、常见坑
| 环境缺 _omni_solid | 确认 Python 3.12 + pip install usd-brep(或按仓库构建) |
| Agent 没用技能 | 明确告诉它"读 .agents/skills/text-to-3d-asset-generation/SKILL.md 再动手" |
| 输出带 BrepArray | 说明 Agent 走错了发布路径——应输出纯 mesh |
| 布尔后输入被消耗 | 布尔是消耗型操作,别复用输入 |
| 镶嵌太粗糙/太精细 | 见 《镶嵌参数调优》 |
八、一句话总结
SMLib 的 Agent 化门槛很低:AGENTS.md + 技能 + 参考脚本就是"AI 建模工具箱"。你只需给 Agent 一个明确的文本→资产流水线提示词,剩下的几何构建、镶嵌、USD 发布它都能照官方文档写出来。
系列文章
SMLib 系列共 8 篇,本篇为第 8 篇,可互相跳转:
- 第 1 篇:《NVIDIA 开源 CAD 内核 SMLib:USD BRep 里有什么、能怎么用》
- 第 2 篇:《Agent 如何用 SMLib 做 CAD 创作:从 AGENTS.md 到 text-to-3D 流水线》
- 第 3 篇:《SMLib 五层架构深度解析》
- 第 4 篇:《SMLib Python API 实战:用 _omni_solid 建模的 10 个常用操作》
- 第 5 篇:《SMLib vs OpenCASCADE:2026 开源 CAD 内核怎么选?》
- 第 6 篇:《SMLib 的 usd.heal_file:STEP/IGES 导入模型修复实战》
- 第 7 篇:《SMLib 镶嵌(Tessellation)参数调优:chord-height 与角度容差怎么选》
- 第 8 篇(本文):《用 SMLib + Claude Code 做一个 CAD 资产生成 Agent(实战)》
仓库:https://github.com/NVIDIA-Omniverse/usd-brep(Apache 2.0,C++ / Python)
网硕互联帮助中心
![[效率] Pi Agent:一个把子代理和计划模式都删掉的编程工具,凭什么说它更适合普通人-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/10/20261027182441-6ae0ec692d1ab-220x150.png)






评论前必须登录!
注册