你将得到什么
下面是一组可直接投喂给 AI 的在线工具生成型提示词(Prompts)。目标是产出一个可运行的 Web 工具:用户上传 GLB/GLTF 后,系统自动解析模型结构与外部依赖(纹理/缓冲/扩展),并生成一份可下载的检查报告(JSON/HTML/PDF 可选)以及修复建议清单。
适用场景
适合在交付 3D 资产前做质量把关:检查是否存在丢纹理、外链失效、材质通道异常、网格过大、法线/UV 缺失、动画轨道异常、扩展使用不兼容等问题;也适合团队在 CI 或上线前做统一校验与记录。
Prompt:GLB/GLTF 结构与纹理依赖检查报告 Web 工具(完整项目)
你是一名资深全栈工程师。请生成一个“GLB/GLTF 结构与纹理依赖检查报告”在线工具的完整可运行项目。
核心功能
- 前端:提供上传 GLB/GLTF(支持拖拽、多文件可选)的界面;上传后展示解析进度;解析完成后以卡片/表格形式展示检查结果。
- 解析:在浏览器端完成解析(优先)或在 Node 端完成(可选,两种方案写清取舍)。必须能解析:scene/node 层级、mesh/primitive 数量、顶点/索引规模、材质与贴图引用、纹理 mime/尺寸(若可获取)、bufferView/accessor 统计、动画轨道(如有)、使用到的扩展列表。
- 依赖检查:
1) 识别 GLTF 外链资源(.bin、纹理图片等)并给出“缺失/可访问/不可访问”的判断逻辑;
2) 对 GLB 内嵌资源进行“是否可解码、是否重复、是否过大”的检查;
3) 检查材质贴图通道是否引用一致( Color/ llicRoughness/normal/occlusion/emissive)并给出常见问题提示。
- 报告:支持一键导出检查报告:
- report.json(机器可读)
- report.html(人可读,含摘要与问题列表)
额外加分:支持导出 PDF(如引入库,请说明体积与替代方案)。
- 修复建议:对每类问题给出可执行建议(例如用 gltf-transform 优化、纹理压缩为 webp/ktx2、合并重复纹理、移除未使用的纹理/材质、为缺失 UV/法线给出补救方案建议等)。
技术要求(硬性)
- 交付物必须包含:
- 完整项目代码(可运行)
- 清晰的文件树
- 本地运行命令(含依赖安装)
- 生产部署说明(至少给出一种:Vercel/Netlify/Docker/Nginx 静态托管等)
- 测试用例或 QA checklist(至少 15 条,覆盖上传、解析、导出、异常处理、性能边界)
- 必须写出“如何处理大文件(>50MB)”的策略:例如分片读取、Web Worker、进度条、内存上限、失败提示。
- UI 要有:概览指标(节点数、网格数、纹理数、总大小、外链数等)、问题分级(高/中/低)、可复制的建议。
- 安全:前端只在本地解析时不得上传到第三方;若需要后端解析,必须说明数据流与隐私提示。
实现建议(可选但推荐)
- 解析库:three.js 的 GLTFLoader + KTX2Loader(可选),或 @gltf-transform/core。
- 前端:Next.js / Vite + React 均可。
输出格式
1) 先给出项目简介与架构图(文字描述即可)
2) 给出完整文件树
3) 按文件逐段贴出代码
4) 给出运行命令与部署说明
5) 给出测试/QA checklist
Prompt:在线预览 + Inspector(可视化定位问题)
请在上一个项目基础上新增一个“3D 预览与问题定位”页面:
- 使用 Three.js 渲染上传的 GLB/GLTF;提供轨道控制、背景色切换、光照强度调节。
- Inspector 面板:点击场景中的 mesh 时,高亮并显示该 mesh 的顶点数、材质名称、使用的纹理列表、是否有 UV/法线/切线。
- 问题联动:在报告问题列表中点击某条问题,能自动定位到相关 mesh/material/texture,并在预览中高亮或弹出提示。
- 性能:给出建议默认渲染参数,避免移动端卡顿;提供“降低画质/关闭阴影/限制像素比”的开关。
仍需保证:代码完整可运行 + 文件树 + 运行/部署 + QA checklist(新增项也要覆盖)。
检查项清单(可用于验收)
外链依赖:是否存在 .bin/贴图外链丢失;贴图路径是否含中文/空格导致线上 404;同名不同大小资源是否冲突。
纹理与材质:贴图格式是否过大;是否缺少正常的 sRGB/Linear 处理提示;normal/occlusion 通道是否错误复用。
几何与动画:mesh 是否过多导致 draw call 高;是否存在 0 面或 NaN 顶点;动画轨道是否存在空关键帧。
导出与记录:报告可重复生成;导出的 JSON/HTML 包含版本号、时间戳与输入文件元信息(名称、大小、hash 可选)。