tripocli v2.0.0:Tripo AI 3D 生成与加工 CLI(面向 Agent 与开发者,纯 Python 标准库、零第三方依赖)
覆盖文生 3D、图生 3D、多视图、批量生成,以及重拓扑、绑定、动画、智能分割、 纹理、PBR、智能 UV、部件补全、格式导出与下载。 代码组织:一个功能一个模块(tripo/features/),入口薄壳 tripocli.py。
This commit is contained in:
commit
977f97995a
60 files changed
+5622
No files matched your search
@@ -0,0 +1,53 @@
|
||||
"""本地模型体检 — inspect local GLB/GLTF files for game-engine readiness.
|
||||
|
||||
tripocli inspect model.glb
|
||||
tripocli inspect ./assets/*.glb
|
||||
"""
|
||||
|
||||
from .. import glb
|
||||
|
||||
NAME = "inspect"
|
||||
HELP = "本地模型体检:查看 GLB 的三角形面数、包围盒尺寸、骨骼、动画名与性能告警(0 积分)"
|
||||
|
||||
|
||||
def add_arguments(parser):
|
||||
parser.add_argument("files", nargs="+", help="一个或多个本地 .glb/.gltf 文件路径")
|
||||
|
||||
|
||||
def _fmt_size(num_bytes):
|
||||
if num_bytes >= 1024 * 1024:
|
||||
return f"{num_bytes / (1024 * 1024):.2f} MB"
|
||||
return f"{num_bytes / 1024:.1f} KB"
|
||||
|
||||
|
||||
def run(ctx):
|
||||
results = []
|
||||
for path in ctx.args.files:
|
||||
results.append(glb.inspect_file(path))
|
||||
|
||||
payload = results[0] if len(results) == 1 else {"models": results}
|
||||
|
||||
def human():
|
||||
for info in results:
|
||||
comp = "Draco" if info["draco_compressed"] else "未压缩"
|
||||
ctx.out.line(f"📦 {info['name']} ({_fmt_size(info['file_size'])}, {comp})")
|
||||
ctx.out.line(
|
||||
f" 网格面数 : {info['triangles']:,} 三角面 / {info['vertices']:,} 顶点 "
|
||||
f"({info['meshes']} mesh, {info['materials']} 材质, {info['textures']} 贴图"
|
||||
f"{', 含法线/PBR贴图' if info['has_pbr_maps'] else ''})"
|
||||
)
|
||||
if info["bbox"]:
|
||||
b = info["bbox"]
|
||||
sz = b["size"]
|
||||
ctx.out.line(
|
||||
f" 包围尺寸 : 宽 {sz[0]} × 高 {sz[1]} × 深 {sz[2]} "
|
||||
f"(minY={b['min'][1]}, 底部贴地需偏移 +{b['ground_offset_y']})"
|
||||
)
|
||||
if info["is_rigged"] or info["animations"]:
|
||||
anims = ", ".join(a["name"] for a in info["animations"]) or "无"
|
||||
ctx.out.line(f" 骨骼动画 : {info['joints']} 根骨骼 | 动作片段 ({len(info['animations'])}): {anims}")
|
||||
for w in info["warnings"]:
|
||||
ctx.out.line(f" ⚠️ {w}")
|
||||
|
||||
ctx.out.data(payload, human=human)
|
||||
return payload
|
||||
Reference in new issue
Block a user