SuperAPI AI 工具集

meshyai

设计与创作

查看项目

更新于 10-15 15:12

技能介绍

Meshy AI 是一个用于生成自定义 3D 模型的工具,并可将模型集成到 Three.js 浏览器游戏中。它被描述为所有 3D 游戏资产的首选来源,能够根据文本描述或参考图片生成所需内容,并保持统一的艺术风格和适合游戏的拓扑结构。

用途

Meshy AI 主要用于为 Three.js 游戏生成 3D 资产,包括角色、道具和场景元素。它支持从文本或图片生成模型,并针对人形角色提供自动骨骼绑定和动画功能。

主要能力

  • 文本转 3D:根据文本提示生成 3D 模型,分为预览(几何体)和精炼(纹理)两步。
  • 图片转 3D:将参考图片转换为 3D 模型,支持 URL、本地文件和 base64 数据 URI。
  • 自动绑定:仅适用于人形(双足)模型,添加骨骼并自动下载行走和奔跑动画 GLB。
  • 动画:为已绑定的模型应用动画,需要绑定任务 ID 和动画动作 ID。
  • 状态查询:轮询任何任务的当前状态。
  • 非阻塞模式:提交任务而不等待,适用于流水线。
  • 自动 GLB 优化:下载的 GLB 自动优化,减少文件大小 80–95%,纹理调整为 1024×1024 并转换为 WebP,应用 meshopt 压缩。

使用方式

所有 Meshy API 调用需要 MESHY_API_KEY。使用前需检查密钥是否存在,若不存在则提示用户提供或跳过。

通过命令行脚本 scripts/meshy-generate.mjs 执行操作,示例命令:

文本转 3D 完整流程:

MESHY_API_KEY=<key> node scripts/meshy-generate.mjs \
  --mode text-to-3d \
  --prompt "a cartoon knight with sword and shield" \
  --output public/assets/models/ \
  --slug knight

图片转 3D:

MESHY_API_KEY=<key> node scripts/meshy-generate.mjs \
  --mode image-to-3d \
  --image "https://example.com/character-concept.png" \
  --output public/assets/models/ \
  --slug character

自动绑定(人形):

MESHY_API_KEY=<key> node scripts/meshy-generate.mjs \
  --mode rig \
  --task-id <meshy-task-id> \
  --height 1.8 \
  --output public/assets/models/ \
  --slug hero

动画:

MESHY_API_KEY=<key> node scripts/meshy-generate.mjs \
  --mode animate \
  --task-id <rig-task-id> \
  --action-id 1 \
  --output public/assets/models/ \
  --slug hero-walk

状态查询:

MESHY_API_KEY=<key> node scripts/meshy-generate.mjs \
  --mode status \
  --task-id <task-id> \
  --task-type text-to-3d

非阻塞模式:

MESHY_API_KEY=<key> node scripts/meshy-generate.mjs \
  --mode text-to-3d \
  --prompt "a crystal sword" \
  --no-poll

自动优化默认启用,可使用 --no-optimize 跳过,或使用 --texture-size <n> 更改纹理尺寸。

适用场景

  • 需要自定义角色、道具或场景的 Three.js 游戏开发。
  • 需要统一艺术风格的游戏资产生成。
  • 需要快速生成并集成 3D 模型的流水线。

限制

  • 绑定仅适用于带纹理的人形(双足)模型,且四肢清晰。不适用于动物、车辆、抽象形状或未纹理网格。
  • Meshy 资产仅保留 3 天,需及时下载。
  • 生成模型可能因提示模糊或多对象而不匹配,建议使用具体、单一对象的提示。
  • 优化后的 GLB 使用 meshopt 压缩,运行时需要 MeshoptDecoder,模板 AssetLoader.js 已包含。
  • 首次运行优化可能因 npx 下载 @gltf-transform/cli 而稍慢。
  • 若 gltf-transform 不可用,脚本会警告并继续使用原始文件。

提示工程技巧

  • 游戏角色:"a stylized goblin warrior, low poly game character, full body"
  • 道具:"a wooden treasure chest, stylized, closed"
  • 环境元素:"a fantasy stone archway, low poly, game asset"
  • 车辆:"a sci-fi hover bike, side view, clean topology" 避免:一个提示中包含多个对象、模糊提示、室内/建筑场景。

集成

Meshy 生成的模型可接入现有 3D 资产流水线,所有来源输出 GLB 文件到 public/assets/models/,由 AssetLoader.js 统一加载。

故障排除

  • MESHY_API_KEY 未设置:检查环境变量或 .env,提示用户提供。
  • 任务卡在 PENDING:等待 2-3 分钟,若 5 分钟后仍 PENDING,取消并重新提交更简单的提示或更低多边形数。
  • 资产下载 404:Meshy 仅保留资产 3 天,需重新生成并立即下载。
  • 绑定失败:确保模型是带纹理的人形,使用 --pbr 和指定 "full body humanoid" 的提示重新生成。
  • 模型不匹配提示:使用具体、单一对象的提示,包含风格线索。

检查清单

  • 检查 MESHY_API_KEY
  • 提示具体(风格、多边形数、单一对象)
  • 所有人形角色已绑定
  • 在 3 天过期前下载 GLB
  • 生成后验证(方向、缩放、地板对齐)
  • 截图确认朝向和适配
  • 在 Constants.js 中设置 rotationY(多数 Meshy 模型需要 Math.PI)
  • 静态模型使用 loadModel(),绑定模型使用 loadAnimatedModel()
  • 记录剪辑名称并定义 clipMap
  • 保存 .meta.json 与 GLB 一起
  • npm run build 成功