===================================== Synaptic AI Pro v1.1.7 開発計画 ===================================== ## 現在の v1.1.7 (完了済み) - execute_menu_item Tool - InstanceID Support - Start MCP Server Menu (パス空白対応、ポート重複チェック) - MCP Auto-Retry System (30リトライ、最大5分) ===================================== 追加予定1: ボーン基盤システム(必須) ===================================== ## 目的 ボーンの認識・操作・階層理解を可能にする基盤。 これがあれば「衣装フィット」「アニメーション制作」両方が可能に。 ## ボーン基盤ツール (10個) ### 1. unity_get_skeleton_hierarchy スケルトン全体の階層構造を取得 ``` 入力: gameObjectName 出力: { rootBone: "Armature", boneCount: 65, hierarchy: { "Hips": { localPosition: [0, 1, 0], localRotation: [0, 0, 0, 1], children: ["Spine", "LeftUpperLeg", "RightUpperLeg"] }, "Spine": { parent: "Hips", children: ["Chest"], ... } }, isHumanoid: true, humanoidMappings: { // Humanoidの場合 "Hips": "Hips", "Spine": "Spine", "LeftHand": "Hand_L", // 実際のボーン名との対応 ... } } ``` ### 2. unity_find_bones 名前やパターンでボーンを検索 ``` 入力: { gameObjectName: "Avatar", pattern: "Hand", // 部分一致 // または regex: "^Left.*", // 正規表現 // または humanoidBone: "LeftHand" // Humanoidマッピングから } 出力: { matches: [ { name: "LeftHand", path: "Armature/Hips/Spine/.../LeftHand" }, { name: "RightHand", path: "..." } ] } ``` ### 3. unity_get_bone_info 特定ボーンの詳細情報 ``` 入力: gameObjectName, boneName 出力: { name: "LeftHand", path: "Armature/Hips/Spine/Chest/LeftShoulder/LeftArm/LeftForeArm/LeftHand", parent: "LeftForeArm", children: ["LeftHandIndex1", "LeftHandMiddle1", ...], localPosition: [0.25, 0, 0], localRotation: [0, 0, 0, 1], worldPosition: [1.5, 1.2, 0], worldRotation: [...], humanoidMapping: "LeftHand" // Humanoidの場合 } ``` ### 4. unity_set_bone_transform ボーンの位置/回転を設定 ``` 入力: { gameObjectName: "Avatar", boneName: "LeftHand", localPosition: [0.25, 0, 0], // オプション localRotation: [0, 45, 0], // オイラー角 or クォータニオン worldPosition: [...], // ワールド座標指定も可 worldRotation: [...] } ``` ### 5. unity_get_bone_chain ボーンチェーン(連鎖)を取得 ``` 入力: { gameObjectName: "Avatar", startBone: "LeftShoulder", endBone: "LeftHand" // または startBone: "Hips", depth: 3 // 3階層下まで } 出力: { chain: ["LeftShoulder", "LeftArm", "LeftForeArm", "LeftHand"], totalLength: 0.65, // メートル transforms: [...] } ``` ### 6. unity_copy_bone_pose ボーンのポーズをコピー ``` 入力: { sourceObject: "Avatar_A", targetObject: "Avatar_B", boneMapping: "auto", // 自動マッピング or 手動指定 bones: ["all"] // または特定ボーンのみ } ``` ### 7. unity_reset_bone_pose ボーンをT-Pose/A-Pose/バインドポーズにリセット ``` 入力: { gameObjectName: "Avatar", pose: "bind" // "bind", "tpose", "apose" bones: ["all"] // または特定ボーンのみ } ``` ### 8. unity_mirror_bone_pose 左右のポーズを反転コピー ``` 入力: { gameObjectName: "Avatar", direction: "left_to_right" // or "right_to_left" } ``` ### 9. unity_get_humanoid_muscles Humanoidのマッスル値を取得 ``` 入力: gameObjectName 出力: { muscles: { "LeftArm.Arm Down-Up": 0.5, "LeftArm.Arm Front-Back": -0.2, "Spine Front-Back": 0.1, ... } } ``` ### 10. unity_set_humanoid_muscles Humanoidのマッスル値を設定 ``` 入力: { gameObjectName: "Avatar", muscles: { "LeftArm.Arm Down-Up": 0.8, "Spine Front-Back": 0.3 } } ``` ===================================== 追加予定2: アニメーション制作システム ===================================== ## 目的 ボーン基盤を使ってアニメーションを作成・編集 ## アニメーション制作ツール (10個) ### 1. unity_create_animation_clip 新規アニメーションクリップを作成 ``` 入力: { name: "Walk", savePath: "Assets/Animations/Walk.anim", length: 1.0, // 秒 frameRate: 30, looping: true } ``` ### 2. unity_add_keyframe キーフレームを追加 ``` 入力: { clipPath: "Assets/Animations/Walk.anim", time: 0.5, // 秒 property: "LeftUpperLeg/localRotation", value: [30, 0, 0], // オイラー角 // または bone: "LeftUpperLeg", attribute: "rotation", value: [30, 0, 0] } ``` ### 3. unity_add_pose_keyframe 現在のポーズ全体をキーフレームに ``` 入力: { gameObjectName: "Avatar", clipPath: "Assets/Animations/Walk.anim", time: 0.0, bones: ["all"] // または特定ボーンのみ } ``` ### 4. unity_get_animation_curves アニメーションカーブを取得 ``` 入力: clipPath 出力: { curves: [ { path: "LeftUpperLeg", property: "localRotation.x", keyframes: [ { time: 0, value: 0, inTangent: 0, outTangent: 0 }, { time: 0.5, value: 30, ... } ] } ] } ``` ### 5. unity_set_animation_curve アニメーションカーブを編集 ``` 入力: { clipPath: "Assets/Animations/Walk.anim", path: "LeftUpperLeg", property: "localRotation.x", keyframes: [...] } ``` ### 6. unity_preview_animation アニメーションをプレビュー(指定時間のポーズを適用) ``` 入力: { gameObjectName: "Avatar", clipPath: "Assets/Animations/Walk.anim", time: 0.5, // または frame: 15 } ``` ### 7. unity_blend_animations 複数アニメーションをブレンド ``` 入力: { gameObjectName: "Avatar", animations: [ { clip: "Idle", weight: 0.3 }, { clip: "Walk", weight: 0.7 } ] } ``` ### 8. unity_retarget_animation アニメーションを別のアバターに転送 ``` 入力: { sourceAvatar: "Avatar_A", targetAvatar: "Avatar_B", sourceClip: "Assets/Animations/Walk.anim", outputPath: "Assets/Animations/Walk_Retargeted.anim", boneMapping: "auto" } ``` ### 9. unity_create_animation_from_poses 複数ポーズからアニメーションを生成 ``` 入力: { gameObjectName: "Avatar", poses: [ { name: "Pose1", time: 0.0 }, { name: "Pose2", time: 0.5 }, { name: "Pose3", time: 1.0 } ], outputPath: "Assets/Animations/Generated.anim", interpolation: "smooth" // "linear", "smooth", "step" } ``` ### 10. unity_bake_animation アニメーションをベイク(全フレームにキーフレーム生成) ``` 入力: { clipPath: "Assets/Animations/Walk.anim", outputPath: "Assets/Animations/Walk_Baked.anim", frameRate: 30 } ``` ===================================== 追加予定3: 衣装フィッティング機能 ===================================== ## 背景 - VRChat界隈で「もちふぃったー」(¥2,500) が人気 - しかし「変換プロファイル」が必要で限定的 - Synaptic AIなら自然言語で柔軟に対応可能 ## 新規ツール (5-7個) ### 1. unity_analyze_armature ボーン構造を解析して一覧化 ``` 入力: gameObjectName (アバターまたは衣装) 出力: { boneCount: 65, hierarchy: "Hips > Spine > Chest > ...", boneNames: ["Hips", "Spine", "Chest", ...], isHumanoid: true } ``` ### 2. unity_map_bones 2つのアーマチュア間でボーンをマッピング ``` 入力: sourceArmature, targetArmature 出力: { mappings: { "Hips": "Hips", "Spine": "Spine", "Chest_Upper": "Chest", // 名前違いも推測 ... }, unmapped: ["ExtraBone1", "ExtraBone2"], confidence: 0.95 } ``` ### 3. unity_transfer_mesh_weights メッシュのボーンウェイトを転送 ``` 入力: sourceMesh, targetArmature, boneMapping 出力: { success: true, verticesProcessed: 12450, bonesRemapped: 65 } ``` ### 4. unity_fit_clothing_to_avatar (統合ツール) 衣装をアバターにフィットさせる(自動処理) ``` 入力: clothingObject, targetAvatar, options options: { adjustScale: true, transferWeights: true, preserveShapeKeys: true } 出力: { success: true, fittedObject: "Clothing_Fitted", warnings: ["ChestBone slightly misaligned"] } ``` ### 5. unity_adjust_clothing_fit フィット後の微調整 ``` 入力: clothingObject, adjustments adjustments: { "Chest": { scale: 1.1, offset: [0, 0.02, 0] }, "Hips": { scale: 0.95 } } ``` ### 6. unity_create_clothing_prefab フィット済み衣装をプレハブ化 ``` 入力: clothingObject, prefabPath, includeAvatar 出力: { prefabPath: "Assets/Prefabs/Avatar_WithClothing.prefab" } ``` ### 7. unity_detect_mesh_clipping (オプション) メッシュの貫通箇所を検出 ``` 入力: meshA, meshB 出力: { clippingAreas: [ { bone: "Chest", severity: "high", vertices: 234 }, { bone: "LeftArm", severity: "low", vertices: 12 } ] } ``` ===================================== 実装アプローチ ===================================== ## Unity側 (C#) ### ボーンマッピングロジック ```csharp // Humanoid標準ボーン名でマッチング Dictionary StandardBoneNames = new() { {"Hips", "Hips"}, {"Spine", "Spine"}, {"Chest", "Chest"}, {"UpperChest", "Chest_Upper"}, // ... VRChat標準ボーン名も含む }; // 類似度スコアでマッチング float GetBoneNameSimilarity(string a, string b) { // Levenshtein距離 + 部分一致スコア } ``` ### ウェイト転送ロジック ```csharp void TransferBoneWeights(Mesh source, Mesh target, Dictionary boneMap) { var sourceWeights = source.boneWeights; var targetWeights = new BoneWeight[target.vertexCount]; // 最近傍頂点からウェイトをコピー for (int i = 0; i < target.vertexCount; i++) { int nearestSourceVertex = FindNearestVertex(target.vertices[i], source.vertices); targetWeights[i] = RemapBoneWeight(sourceWeights[nearestSourceVertex], boneMap); } target.boneWeights = targetWeights; } ``` ===================================== もちふぃったーとの差別化ポイント ===================================== | 機能 | もちふぃったー | Synaptic AI | |------|--------------|-------------| | プロファイル | 必要 | 不要(AI解析) | | 対応アバター | 限定 | 汎用 | | 処理場所 | Blender経由 | Unity内完結 | | カスタマイズ | GUI操作 | 自然言語 | | 微調整 | 限定的 | 「胸だけ大きく」等 | | 価格 | ¥2,500 | Synaptic Pro内包 | | 処理時間 | 5-60分 | 数秒〜数分 | ===================================== ユースケース例 ===================================== ## ボーン操作 ### ボーン確認 ``` User: 「このアバターのボーン構造を見せて」 Claude: 1. unity_get_skeleton_hierarchy で全体構造取得 2. 階層ツリーとボーン数を報告 ``` ### 特定ボーン検索 ``` User: 「左手のボーンを探して」 Claude: 1. unity_find_bones で pattern: "Left" + "Hand" 検索 2. マッチしたボーンとパスを報告 ``` ### ポーズ調整 ``` User: 「左腕を上げて」 Claude: 1. unity_find_bones で humanoidBone: "LeftUpperArm" 取得 2. unity_set_bone_transform で rotation 調整 ``` ## アニメーション制作 ### 基本アニメーション ``` User: 「手を振るアニメーションを作って」 Claude: 1. unity_create_animation_clip で新規クリップ作成 2. unity_set_bone_transform で開始ポーズ設定 3. unity_add_pose_keyframe で 0秒にキーフレーム 4. unity_set_bone_transform で手を上げたポーズ設定 5. unity_add_pose_keyframe で 0.5秒にキーフレーム 6. unity_set_bone_transform で手を下げたポーズ設定 7. unity_add_pose_keyframe で 1秒にキーフレーム 8. 完成報告 ``` ### 歩行サイクル ``` User: 「歩行アニメーションを作って」 Claude: 1. unity_create_animation_clip (looping: true) 2. 4つのキーポーズを作成: - 0.0s: 右足前 - 0.25s: 通過 - 0.5s: 左足前 - 0.75s: 通過 3. unity_add_pose_keyframe で各ポーズをキーフレーム化 4. ループ設定確認 ``` ### アニメーション転送 ``` User: 「このアニメーションを別のアバターに適用して」 Claude: 1. unity_get_skeleton_hierarchy で両方のボーン構造確認 2. unity_retarget_animation で転送実行 3. プレビューして確認 ``` ## 衣装フィッティング ### 基本フロー ``` User: 「この衣装をアバターにフィットさせて」 Claude: 1. unity_get_skeleton_hierarchy で両方のボーン構造を解析 2. unity_map_bones でボーンマッピング作成 3. unity_fit_clothing_to_avatar で自動フィット 4. 結果を報告 User: 「胸の部分がきついから少し余裕を持たせて」 Claude: 5. unity_adjust_clothing_fit で微調整 ``` ### 高度なフロー ``` User: 「この衣装、3サイズ(S/M/L)のバリエーション作って」 Claude: 1. フィット実行 2. unity_adjust_clothing_fit で S(-10%), M(基準), L(+10%) 作成 3. unity_create_clothing_prefab で各プレハブ化 ``` ===================================== 開発優先度 ===================================== ## Phase 0: ボーン基盤(最優先) - [ ] unity_get_skeleton_hierarchy - [ ] unity_find_bones - [ ] unity_get_bone_info - [ ] unity_set_bone_transform - [ ] unity_get_bone_chain ## Phase 1: ボーン操作 - [ ] unity_copy_bone_pose - [ ] unity_reset_bone_pose - [ ] unity_mirror_bone_pose - [ ] unity_get_humanoid_muscles - [ ] unity_set_humanoid_muscles ## Phase 2: アニメーション基盤 - [ ] unity_create_animation_clip - [ ] unity_add_keyframe - [ ] unity_add_pose_keyframe - [ ] unity_preview_animation ## Phase 3: アニメーション拡張 - [ ] unity_get_animation_curves - [ ] unity_set_animation_curve - [ ] unity_blend_animations - [ ] unity_retarget_animation - [ ] unity_create_animation_from_poses - [ ] unity_bake_animation ## Phase 4: 衣装フィット - [ ] unity_analyze_armature (Phase 0のツールで代替可能かも) - [ ] unity_map_bones - [ ] unity_transfer_mesh_weights - [ ] unity_fit_clothing_to_avatar - [ ] unity_adjust_clothing_fit - [ ] unity_create_clothing_prefab - [ ] unity_detect_mesh_clipping ===================================== 想定工数 ===================================== - Phase 0: 3-4日 (最重要基盤) - Phase 1: 2-3日 - Phase 2: 3-4日 - Phase 3: 3-4日 - Phase 4: 3-4日 - テスト/調整: 3-4日 - 合計: 約3-4週間 ## バージョン分割案 - v1.1.7: Phase 0 + Phase 1 (ボーン基盤) - v1.1.8: Phase 2 + Phase 3 (アニメーション) - v1.1.9: Phase 4 (衣装フィット) ===================================== ツール数サマリー ===================================== | カテゴリ | ツール数 | |---------|---------| | ボーン基盤 | 10 | | アニメーション | 10 | | 衣装フィット | 7 | | 合計 | 27 | 現在: 350ツール → v1.1.9完了後: 377ツール ===================================== 注意点 ===================================== 1. SkinnedMeshRendererのみ対応(MeshRendererは対象外) 2. Humanoidリグ推奨(Generic対応は限定的) 3. シェイプキー(BlendShape)は別途保持が必要 4. VRChat SDKとの互換性確認必要 5. AnimationClip作成はエディタAPI必要(ランタイム不可) 6. Humanoidマッスル操作はAnimator/Avatar必須