mcpField
M
meshyai

meshyai

github.com/playableintelligenceクリエイティブ・メディア350912 回インストール22 週間前に更新
リポジトリ

meshyai について

Three.js ブラウザーゲーム向けに Meshy AI で 3D アセットを生成するエージェントスキルです。テキストや画像からのモデル生成、人型キャラクターのリギングとアニメーション、GLB の最適化、向きやスケールの検証に対応します。

主な機能

  1. 01テキストまたは画像から 3D モデルを生成
  2. 02人型キャラクターを自動リギング
  3. 03リギング済みキャラクターに歩行・走行アニメーションを追加
  4. 04GLB のテクスチャとメッシュを最適化
  5. 05モデルの向き、スケール、接地位置を検証

活用シーン

  1. 01ゲーム用のキャラクター、プロップ、背景モデルを作成
  2. 02参照画像から 3D キャラクターモデルを生成
  3. 03人型モデルにスケルトンと移動アニメーションを追加
  4. 04Three.js ゲーム用 GLB アセットを最適化して検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/playableintelligence/game-creator --skill meshyai

インストール後、Claude Code で/meshyaiを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

api-reference.md
rigging-pipeline.md
verification-patterns.md

詳細

Meshy AI — 3D モデル生成、リギング、アニメーション

Meshy AI を使ったカスタム 3D モデルの生成と、Three.js ブラウザーゲームへの組み込みに精通しています。Meshy は、すべての 3D ゲームアセットの優先ソースです。テキストによる説明や参照画像から、必要なものをアートスタイルとゲーム向けトポロジーを統一して正確に生成します。

パフォーマンスに関する注意

  • 各ステップに時間をかけてください。速度より品質が重要です。
  • 検証ステップを省略しないでください。早期に問題を発見できます。
  • 変更を加える前に、各ファイルの全体を読んでください。
  • 生成後は必ず検証してください。向きやスケールを決めつけないでください。

参照ファイル

ファイル説明
api-reference.mdAPI エンドポイント仕様、ペイロード、レスポンス、タスクのステータス、アセット保持ポリシーの全容
rigging-pipeline.mdfadeToAction パターンとコード例を含む、生成 → リギング → アニメーション → 組み込みまでの完全なパイプライン
verification-patterns.md自動方向チェック、自動スケール調整、床面への位置合わせのコードパターン

Meshy を最初に使う理由

  • ぴったり一致:ゲームに必要なキャラクター、小道具、背景を妥協せずに正確に生成できます
  • 一貫したスタイル:同じ生成パイプラインで作成したすべてのアセットに、まとまりのある見た目を持たせられます
  • カスタムキャラクター:名前のある個性、ブランドキャラクター、独自のクリーチャーなどを、すべて指定どおりに生成できます
  • 完全なパイプライン:1 つのツールで生成 → リギング → アニメーションを実行できます
  • ゲーム向け:ポリゴン数、トポロジー、PBR テクスチャを調整して、Three.js のパフォーマンスを最適化できます

フォールバックソース

MESHY_API_KEY が利用できず、ユーザーが設定を断った場合は、次の順にフォールバックします。

フォールバックソース最適な用途
assets/3d-characters/既成の GLBすぐに使えるアニメーション付きヒューマノイド(Soldier、Xbot、Robot、Fox)
find-3d-asset.mjsSketchfab、Poly Haven、Poly.pizza既存の無料モデルライブラリの検索
プロシージャルジオメトリコード最終手段としての BoxGeometry/SphereGeometry

認証

Meshy API を呼び出すには、すべて MESHY_API_KEY が必要です。3D アセットの作業を始める前に、必ずこのキーを確認してください。

ユーザーに尋ねる前に、キーがすでに存在するか確認してください。 test -f .env && grep -q '^MESHY_API_KEY=.' .env && echo "found" 見つかった場合は、set -a; . .env; set +a でエクスポートし、入力を求める手順は省略してください。

環境変数にも .env にもキーが設定されていない場合は、すぐにユーザーに尋ねてください。

最良の結果を得るため、Meshy AI でカスタム 3D モデルを生成します。30 秒で無料の API キーを取得できます。

  1. https://app.meshy.ai で登録します
  2. Settings → API Keys に移動します
  3. 新しい API キーを作成します

以下の形式でキーを貼り付けてください:MESHY_API_KEY=your-key-here (キーは .env に保存され、この会話から自動的に伏せ字になります。)

または、「skip」と入力して、代わりに無料のモデルライブラリを使用してください。

ユーザーがキーを提供した場合は、次のように使用します:set -a; . .env; set +a && node scripts/meshy-generate.mjs ...

ユーザーがスキップした場合は、フォールバックソース(キャラクターライブラリ → Sketchfab → Poly Haven)を使用して進めます。

CLI スクリプト — scripts/meshy-generate.mjs

依存関係なしの Node.js スクリプトです。タスク送信 → ポーリング → GLB ダウンロード → meta.json 書き込みまでの全工程を処理します。

テキストから 3D へ(完全なパイプライン)

テキストプロンプトから 3D モデルを生成します。プレビュー(ジオメトリ)→ リファイン(テクスチャリング)の 2 段階で処理します。

# Full pipeline: preview → refine → download
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

# Preview only (faster, untextured — good for geometry check)
MESHY_API_KEY=<key> node scripts/meshy-generate.mjs \
  --mode text-to-3d \
  --prompt "a wooden barrel" \
  --preview-only \
  --output public/assets/models/ \
  --slug barrel

# With PBR textures and specific polycount
MESHY_API_KEY=<key> node scripts/meshy-generate.mjs \
  --mode text-to-3d \
  --prompt "a sci-fi hover bike" \
  --pbr \
  --polycount 15000 \
  --ai-model meshy-6 \
  --output public/assets/models/ \
  --slug hoverbike
画像から 3D へ

参照画像を 3D モデルに変換します。URL、ローカルファイル、base64 データ URI に対応しています。

# From URL
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

# From local file (auto-converts to base64)
MESHY_API_KEY=<key> node scripts/meshy-generate.mjs \
  --mode image-to-3d \
  --image "./concept-art/hero.png" \
  --output public/assets/models/ \
  --slug hero
自動リギング(ヒューマノイドのみ — すべての二足歩行キャラクターで必須)

生成されたヒューマノイドモデルにスケルトンを追加し、歩行アニメーションと走行アニメーションの GLB を自動ダウンロードします。入力タスク ID は、完了済みの text-to-3d または image-to-3d タスクから取得します。

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

次の 3 つのファイルが自動的に生成されます。

  • hero.glb — スケルトン付きのリギング済みモデル
  • hero-walk.glb — 歩行アニメーション(自動ダウンロード)
  • hero-run.glb — 走行アニメーション(自動ダウンロード)

ヒューマノイドの場合は、必ず生成 → リギングを 1 つの不可分なステップとして連続実行してください。 ヒューマノイドキャラクターを静的モデルのままにしないでください。

制限事項: リギングは、手足が明確に定義された、テクスチャ付きのヒューマノイド(二足歩行)モデルでのみ機能します。動物、乗り物、抽象的な形状、テクスチャのないメッシュには対応していません。

アニメーション

リギング済みモデルにアニメーションを適用します。完了済みのリギングタスク ID とアニメーションアクション ID が必要です。

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   # or: image-to-3d, rigging, animations
非ブロッキングモード

待機せずにタスクを送信します。パイプラインで便利です。

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

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

GLB の自動最適化

ダウンロードしたすべての GLB は、ファイルサイズを 80〜95%削減するため、scripts/optimize-glb.mjs によって自動的に最適化されます。パイプラインでは、テクスチャを 1024×1024 にリサイズして WebP に変換し、meshopt 圧縮を適用します。

  • 最適化は、各 GLB のダウンロード(text-to-3d、image-to-3d、rig、animate)の後にデフォルトで実行されます
  • 最適化をスキップして Meshy の未加工の出力を保持するには、--no-optimize を使用します
  • 最大テクスチャ寸法を変更するには、--texture-size <n> を使用します(デフォルト:1024)
  • 初回の実行では、npx が @gltf-transform/cli をダウンロードするため、時間がかかる場合があります
  • gltf-transform を利用できない場合、スクリプトは警告を出して未加工のファイルを使用します

最適化された GLB は meshopt 圧縮を使用するため、実行時に MeshoptDecoder が必要です。テンプレートの AssetLoader.js には、これが自動的に含まれています。

# Skip optimization for a specific generation
MESHY_API_KEY=<key> node scripts/meshy-generate.mjs \
  --mode text-to-3d --prompt "a barrel" --preview-only \
  --no-optimize --output public/assets/models/ --slug barrel

# Custom texture size (e.g., 512 for mobile)
MESHY_API_KEY=<key> node scripts/meshy-generate.mjs \
  --mode text-to-3d --prompt "a barrel" --preview-only \
  --texture-size 512 --output public/assets/models/ --slug barrel

# Re-optimize an existing GLB directly
node scripts/optimize-glb.mjs public/assets/models/barrel.glb --texture-size 512

API リファレンス

エンドポイントの仕様、ペイロード、レスポンス、タスクのステータス、アセットの保持ポリシーについては、api-reference.md を参照してください。

クイックリファレンス:静的プロップ(リギング不要)

ヒューマノイド以外のアセット(小道具、風景、建物)では、リギングを省略します。

# Generate
MESHY_API_KEY=<key> node scripts/meshy-generate.mjs \
  --mode text-to-3d --prompt "a wooden barrel, low poly game asset" \
  --polycount 5000 --output public/assets/models/ --slug barrel

# Integrate with loadModel (regular clone, no SkeletonUtils)
const barrel = await loadModel('assets/models/barrel.glb');
scene.add(barrel);

生成後の検証(必須)

自動向きチェック、自動スケール調整、床面への位置合わせのコードパターンについては、verification-patterns.md を参照してください。

リギング:ヒューマノイドキャラクターでは必須

リギングのタイミング、fadeToAction パターン、統合コードの例を含む、生成 → リギング → アニメーション → 統合の全パイプラインについては、rigging-pipeline.md を参照してください。

プロンプト作成のヒント

良いプロンプトを使うと、より良いモデルが生成されます。

目的プロンプト理由
ゲームキャラクター"a stylized goblin warrior, low poly game character, full body""low poly" + "game character" = ゲームですぐに使えるトポロジー
プロップ"a wooden treasure chest, stylized, closed"シンプルで具体的な、単一のオブジェクト
環境パーツ"a fantasy stone archway, low poly, game asset""game asset" はクリーンなジオメトリを示します
乗り物"a sci-fi hover bike, side view, clean topology""clean topology" = アーティファクトが少ない

避けること:

  • 1 つのプロンプトに複数のオブジェクトを含めること(「騎士 AND ドラゴン」など) — 別々に生成してください
  • あいまいなプロンプト(「何かかっこいいもの」など) — スタイルや形状を具体的に指定してください
  • 屋内や建築のシーン — Meshy は単一オブジェクトの生成に最適です

既存のパイプラインとの統合

Meshy で生成したモデルは、既存の 3D アセットパイプラインに組み込めます。

┌─────────────────────────────────────────────────────┐
│                 3D Asset Sources                     │
├──────────────┬──────────────┬───────────────────────┤
│ Free Libraries│ Character Lib │     Meshy AI          │
│ find-3d-asset │ 3d-char-lib/ │ meshy-generate.mjs    │
│   .mjs       │              │ text/image → 3D       │
│              │              │ rig → animate         │
├──────────────┴──────────────┴───────────────────────┤
│              AssetLoader.js                         │
│         loadModel() / loadAnimatedModel()           │
├─────────────────────────────────────────────────────┤
│              Three.js Game                          │
└─────────────────────────────────────────────────────┘

すべてのソースは public/assets/models/ に GLB ファイルを出力します。AssetLoader.js は GLB の生成元を問わず、すべて同じ方法で読み込みます。

トラブルシューティング

問題原因対処方法
MESHY_API_KEY が設定されていない環境変数がありませんユーザーにキーを尋ねるか、export MESHY_API_KEY=<key> を実行します。無料のキーは https://app.meshy.ai の Settings -> API Keys から取得できます。
タスクが PENDING のまま進まないAPI キューの滞留、または無効なパラメーター2~3 分待ってからステータスを確認します。5 分経っても PENDING の場合は、キャンセルして、より簡潔なプロンプトまたは低いポリゴン数で再送信します。
アセットのダウンロードで 404 が返されるMeshy がアセットを保持する期間は 3 日間のみです生成パイプラインを再実行します。タスクが成功したら、すぐに GLB をダウンロードしてください。public/assets/models/ にローカル保存します。
リギングに失敗する、または壊れたスケルトンが生成されるモデルが明確な二足歩行の人型ではない、またはメッシュにテクスチャがありませんモデルがテクスチャ付きで、手足が見える人型であることを確認します。リギングは動物、乗り物、抽象形状、またはプレビュー専用(テクスチャなし)のメッシュでは機能しません。--pbr と「全身の人型」を指定するプロンプトを使って再生成します。
生成されたモデルがプロンプトに合致しないプロンプトが曖昧、または複数のオブジェクトを含んでいる具体的で、単一オブジェクトを指定するプロンプトを使います。「ローポリ」「スタイライズド」「ゲームキャラクター」などのスタイルの手掛かりを含め、複数のオブジェクトを組み合わせないようにします。「プロンプトエンジニアリングのヒント」を参照してください。

チェックリスト

  • MESHY_API_KEY を確認済み — 未設定の場合はユーザーに尋ねた、またはユーザーがフォールバックに進むことを選択した
  • プロンプトが具体的(スタイル、ポリゴン数、単一オブジェクト)
  • すべての人型キャラクターをリギング済み — 二足歩行モデルのリギングを省略しない
  • 3 日間の有効期限前に GLB をダウンロード済み
  • 生成後の検証を完了済み — 向き、スケール、床との位置合わせを確認済み
  • Playwright のスクリーンショットを撮影済み — 向きと環境内への収まり具合を目視で確認済み
  • モデルごとに Constants.js で rotationY を設定済み(ほとんどの Meshy モデルでは Math.PI が必要です)
  • 静的モデルでは loadModel()(通常のクローン)を使用
  • リギング済みモデルでは loadAnimatedModel()(SkeletonUtils.clone)を使用
  • クリップ名をログに記録し、アニメーションモデルに clipMap を定義済み
  • 追跡可能性を確保するため、タスク ID を含む .meta.json を GLB と同じ場所に保存済み
  • npm run build が成功

コメント