Unity 3D 全自动制作 2D 动画——集成 OpenClaw 与 Hermes 完整技术方案

Unity集成OpenClaw与Hermes:AI智能体驱动2D动画自动化生成 在游戏开发和数字内容创作领域,2D动画制作长期面临流程繁琐、人力成本高的挑战。其核心原理是通过关键帧定义角色姿态,再通过插值生成连续动作。随着AI生成内容(AIGC)技术的发展,特别是智能体(Agent)框架的成熟,为动画自动化带来了新的技术价值:通过AI理解意图并自动执行复杂任务序列,能极大提升生产效率。OpenClaw作为任务规划智能体,负责分解动画生成指令;Hermes作为工具调用智能体,则能操作各类软件接口执行具体步骤。这种组合可应用于独立游戏开发、小型动画工作室等场景,实现从静态角色设计到流畅动画 阅读详情

核心思路:Hermes 负责"想"(剧本/分镜/技能进化),OpenClaw 负责"做"(任务调度/Unity 驱动/渠道交互),Unity 负责"渲染"(2D 骨骼动画/场景合成/视频输出)。素材自备。


一、整体架构

┌──────────────────────────────────────────────────────────────┐
│                      用户交互层                               │
│   Telegram / 飞书 / Discord / Web UI / 命令行                │
├──────────────────────────────────────────────────────────────┤
│                  OpenClaw Agent 层                            │
│   · 消息路由 · Skill 匹配 · 任务调度 · 记忆管理               │
│   · 心跳监控 · MCP Server 桥接 Unity                         │
├───────────────┬──────────────────────────────────────────────┤
│               │  双 Agent 协作协议                            │
├───────────────▼──────────────────────────────────────────────┤
│                  Hermes Agent 层                              │
│   · 剧本生成/改写 · 智能分镜 · 角色调度                       │
│   · Skill 自进化(GEPA) · 主动记忆 · 风格学习                  │
├──────────────────────────────────────────────────────────────┤
│                  MCP Bridge 层                                │
│   OpenClaw ←→ MCP Server ←→ Unity Plugin                    │
├──────────────────────────────────────────────────────────────┤
│                  Unity 3D 引擎层                              │
│   ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐      │
│   │2D Animation│ │ Timeline │ │ 2D IK   │ │Spine运行时│      │
│   │(骨骼/蒙皮) │ │(动画编排) │ │(反向动力学)│ │(Spine动画)│      │
│   └──────────┘ └──────────┘ └──────────┘ └──────────┘      │
│   ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐      │
│   │PSD Importer│ │Cinemachine│ │Audio系统 │ │视频录制  │      │
│   │(素材导入) │ │(虚拟相机) │ │(配音/BGM)│ │(输出成片) │      │
│   └──────────┘ └──────────┘ └──────────┘ └──────────┘      │
├──────────────────────────────────────────────────────────────┤
│                  素材资产层(自备)                            │
│   ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐             │
│   │角色素材 │ │场景素材 │ │道具素材 │ │音频素材 │             │
│   │PSB/Spine│ │PNG/PSB │ │PNG/PSB │ │WAV/MP3 │             │
│   └────────┘ └────────┘ └────────┘ └────────┘             │
├──────────────────────────────────────────────────────────────┤
│                  存储 & 基础设施                              │
│   PostgreSQL + Redis + S3/COS + FFmpeg                      │
└──────────────────────────────────────────────────────────────┘

二、三角色分工

🐎 Hermes:创意大脑

职责输入输出
剧本生成/改写一句话创意 / 网文片段多集完整剧本
角色情感分析剧本文本每个镜头的角色表情/动作指令
智能分镜剧本 + 角色信息镜头列表(景别/运镜/灯光/时长/台词)
场景调度分镜脚本每个镜头的场景切换指令
Skill 自进化执行反馈优化后的分镜/调度策略
音频编排台词 + BGM 列表配音时间轴 + BGM 切换点

🦞 OpenClaw:执行调度

职责输入输出
用户交互IM 消息 / 命令任务分发
任务编排Hermes 输出的分镜脚本Unity 可执行的指令序列
Unity MCP 桥接动画指令Unity 场景操作
资产管理素材库索引角色/场景/道具/音频加载
渲染调度合成指令视频输出
记忆持久化项目状态跨会话恢复
7×24 监控心跳/错误自动恢复/通知

🎮 Unity 3D:渲染引擎

职责输入输出
素材导入PSB/Spine/PNG/WAV角色/场景/道具/音频 Prefab
骨骼动画播放角色ID + 动作名 + 表情实时骨骼动画
场景构建场景ID + 布局参数2D 场景
Timeline 编排镜头序列动画时间线
音频同步台词 + BGM 时间轴音画同步播放
视频录制录制指令MP4 成片

三、素材规范(自备素材的格式要求)

3.1 角色素材

方案 A:Unity 原生 2D Animation(推荐入门)

角色素材/
├── hero.psb              ← Photoshop 大文件格式
│   ├── 图层: 头发
│   ├── 图层: 脸
│   ├── 图层: 左眼
│   ├── 图层: 右眼
│   ├── 图层: 嘴巴
│   ├── 图层: 身体
│   ├── 图层: 左上臂
│   ├── 图层: 左前臂
│   ├── 图层: 左手
│   ├── 图层: 右上臂
│   ├── 图层: 右前臂
│   ├── 图层: 右手
│   ├── 图层: 左大腿
│   ├── 图层: 左小腿
│   ├── 图层: 右大腿
│   └── 图层: 右小腿
├── hero_idle.anim        ← 待机动画剪辑
├── hero_walk.anim        ← 走路动画剪辑
├── hero_run.anim         ← 跑步动画剪辑
└── hero_talk.anim        ← 说话动画剪辑

PSB 导入设置(关键):

  • Texture Type → Sprite (2D and UI)
  • Sprite Mode → Multiple
  • ✅ Mosaic(自动生成 Sprite Sheet)
  • ✅ Character Rig(自动生成骨骼 Prefab)
  • ✅ Use Layer Grouping(保留图层分组)

方案 B:Spine(推荐专业级)

角色素材/
├── hero/
│   ├── hero.json         ← Spine 骨骼数据
│   ├── hero.atlas        ← 图集描述
│   ├── hero.png          ← 图集纹理
│   └── hero_assets/      ← 原始分层素材
│       ├── head.png
│       ├── body.png
│       ├── arm_l.png
│       └── ...

Spine 动画命名规范(自动化必需):

动画名用途必须包含
idle待机呼吸起伏
walk行走循环走路
run跑步循环跑步
talk说话嘴巴动+手势
angry生气表情+肢体
sad悲伤表情+肢体
happy开心表情+肢体
surprised惊讶表情+肢体
sit坐下静态坐姿
enter入场从画面外走入
exit出场走出画面

3.2 场景素材

场景素材/
├── bg_classroom.png      ← 教室背景(1920×1080 或项目分辨率)
├── bg_street.png         ← 街道背景
├── bg_forest.png         ← 森林背景
├── bg_night_city.png     ← 夜晚城市
├── fg_classroom.png      ← 教室前景(可选,增加纵深感)
└── overlay_rain.png      ← 雨天叠加层(可选)

分层建议(从远到近):

  1. 远景背景(天空/建筑远景)
  2. 中景(主要活动区域)
  3. 近景/前景(栏杆/植物等遮挡物)

3.3 道具素材

道具素材/
├── sword.png             ← 单帧道具
├── book/
│   ├── book_open.anim    ← 有动画的道具
│   └── book_close.anim
└── phone/
    ├── phone_idle.anim
    └── phone_ring.anim

3.4 音频素材

音频素材/
├── bgm/
│   ├── bgm_tension.mp3   ← 紧张
│   ├── bgm_romantic.mp3  ← 浪漫
│   ├── bgm_sad.mp3       ← 悲伤
│   └── bgm_happy.mp3     ← 欢快
├── sfx/
│   ├── sfx_door.wav      ← 音效
│   ├── sfx_footstep.wav
│   └── sfx_thunder.wav
└── voice/                 ← 如有预制配音
    ├── hero_line01.wav
    └── heroine_line01.wav

四、Unity 项目搭建

4.1 必装 Package

通过 Package Manager 安装:
✅ 2D Animation          — 骨骼动画核心
✅ 2D PSD Importer        — PSB 文件导入
✅ 2D IK                  — 反向动力学
✅ Timeline               — 动画编排
✅ Cinemachine            — 虚拟相机(2D 也可用)
✅ TextMeshPro            — 字幕渲染
✅ Unity Recorder         — 视频录制输出
✅ Spine-Unity Runtime    — 如使用 Spine(从 Asset Store 安装)
✅ MCP for Unity          — OpenClaw 桥接(从 GitHub 安装)

4.2 项目结构

Assets/
├── Characters/            ← 角色素材
│   ├── Hero/
│   │   ├── hero.psb       ← PSB 源文件
│   │   └── hero@idle.anim ← 动画剪辑
│   ├── Heroine/
│   └── Villain/
├── Scenes_BG/             ← 场景背景
├── Props/                 ← 道具素材
├── Audio/
│   ├── BGM/
│   ├── SFX/
│   └── Voice/
├── Scripts/               ← 自动化脚本
│   ├── AutoDirector/      ← 自动导演系统
│   ├── AssetManager/      ← 素材管理
│   ├── TimelineBuilder/   ← Timeline 编程构建
│   └── VideoRecorder/     ← 录制输出
├── Prefabs/               ← 预制体
│   ├── Characters/
│   ├── Scenes/
│   └── UI/
├── Timelines/             ← 生成的 Timeline 资产
└── Output/                ← 视频输出目录

五、核心自动化脚本

5.1 自动导演系统(AutoDirector)

using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;
using UnityEngine.Rendering.Universal;

/// <summary>
/// 自动导演系统:接收 JSON 指令,自动构建 Timeline 并播放
/// </summary>
public class AutoDirector : MonoBehaviour
{
    [SerializeField] private AssetCatalog catalog;
    [SerializeField] private Transform stageRoot;
    
    private PlayableDirector director;
    private TimelineAsset currentTimeline;
    
    // 当前场景中的活跃角色
    private Dictionary<string, GameObject> activeCharacters = new();
    // 当前场景
    private GameObject currentBackground;
    
    /// <summary>
    /// 从 JSON 构建完整动画时间线
    /// 由 OpenClaw 通过 MCP 调用
    /// </summary>
    public void BuildTimelineFromJson(string json)
    {
        var episode = JsonUtility.FromJson<EpisodeData>(json);
        BuildTimeline(episode);
    }
    
    public void BuildTimeline(EpisodeData episode)
    {
        // 1. 创建新 Timeline
        currentTimeline = TimelineAsset.Create(typeof(TimelineAsset));
        director = GetComponent<PlayableDirector>();
        director.playableAsset = currentTimeline;
        
        // 2. 为每个镜头构建轨道
        foreach (var shot in episode.shots)
        {
            BuildShot(shot, episode.shots.IndexOf(shot));
        }
        
        // 3. 构建音频轨道
        BuildAudioTracks(episode);
        
        // 4. 构建字幕轨道
        BuildSubtitleTrack(episode);
        
        // 5. 绑定引用并播放
        BindTrackReferences();
        director.Play();
    }
    
    private void BuildShot(ShotData shot, int shotIndex)
    {
        float startTime = shot.startTime;
        float duration = shot.durationSeconds;
        
        // --- 场景切换 ---
        if (shot.sceneChange)
        {
            var sceneTrack = currentTimeline.CreateTrack<ActivationTrack>(null, $"Scene_{shotIndex}");
            // 切换背景逻辑
        }
        
        // --- 角色轨道 ---
        foreach (var charData in shot.characters)
        {
            string trackName = $"{charData.characterId}_{shotIndex}";
            var animTrack = currentTimeline.CreateTrack<AnimationTrack>(null, trackName);
            
            // 加载角色
            var characterObj = GetOrCreateCharacter(charData.characterId);
            
            // 创建动画剪辑
            var clip = animTrack.CreateClip(charData.animationName);
            clip.start = startTime;
            clip.duration = duration;
            
            // 位置轨道(角色走位)
            if (charData.position != null)
            {
                var posTrack = currentTimeline.CreateTrack<AnimationTrack>(null, $"{trackName}_Pos");
                // 设置关键帧:从 charData.positionFrom → charData.positionTo
            }
            
            // 表情切换(Spine 或 2D Animation)
            if (!string.IsNullOrEmpty(charData.expression))
            {
                var exprTrack = currentTimeline.CreateTrack<AnimationTrack>(null, $"{trackName}_Expr");
                var exprClip = exprTrack.CreateClip(charData.expression);
                exprClip.start = startTime;
                exprClip.duration = duration;
            }
        }
        
        // --- 虚拟相机 ---
        var cameraTrack = currentTimeline.CreateTrack<CinemachineTrack>(null, $"Camera_{shotIndex}");
        // 设置景别和运镜
    }
    
    private GameObject GetOrCreateCharacter(string characterId)
    {
        if (activeCharacters.TryGetValue(characterId, out var obj))
            return obj;
        
        // 从素材目录加载 Prefab
        var prefab = catalog.GetCharacterPrefab(characterId);
        obj = Instantiate(prefab, stageRoot);
        obj.name = characterId;
        activeCharacters[characterId] = obj;
        return obj;
    }
    
    private void BuildAudioTracks(EpisodeData episode)
    {
        // BGM 轨道
        var bgmTrack = currentTimeline.CreateTrack<AudioTrack>(null, "BGM");
        foreach (var bgm in episode.bgmCues)
        {
            var clip = bgmTrack.CreateClip(catalog.GetBGMClip(bgm.clipName));
            clip.start = bgm.startTime;
            clip.duration = bgm.duration;
            // 淡入淡出
        }
        
        // 配音轨道
        var voiceTrack = currentTimeline.CreateTrack<AudioTrack>(null, "Voice");
        foreach (var line in episode.dialogues)
        {
            var clip = voiceTrack.CreateClip(catalog.GetVoiceClip(line.clipName));
            clip.start = line.startTime;
        }
        
        // 音效轨道
        var sfxTrack = currentTimeline.CreateTrack<AudioTrack>(null, "SFX");
        foreach (var sfx in episode.sfxCues)
        {
            var clip = sfxTrack.CreateClip(catalog.GetSFXClip(sfx.clipName));
            clip.start = sfx.startTime;
        }
    }
    
    private void BuildSubtitleTrack(EpisodeData episode)
    {
        // 使用自定义 PlayableBehaviour 渲染字幕
        var subtitleTrack = currentTimeline.CreateTrack<CustomSubtitleTrack>(null, "Subtitles");
        foreach (var line in episode.dialogues)
        {
            if (!string.IsNullOrEmpty(line.text))
            {
                var clip = subtitleTrack.CreateDefaultClip();
                var subtitleClip = clip.asset as SubtitleClip;
                subtitleClip.text = line.text;
                subtitleClip.speaker = line.speaker;
                clip.start = line.startTime;
                clip.duration = line.duration;
            }
        }
    }
}

5.2 数据结构(JSON 指令格式)

[System.Serializable]
public class EpisodeData
{
    public string episodeTitle;
    public List<ShotData> shots;
    public List<DialogueData> dialogues;
    public List<BGMCueData> bgmCues;
    public List<SFXCueData> sfxCues;
}

[System.Serializable]
public class ShotData
{
    public int shotNumber;
    public float startTime;
    public float durationSeconds;
    public string sceneId;           // 场景ID,对应素材目录
    public bool sceneChange;         // 是否切换场景
    public string shotType;          // wide/full/medium/close_up/extreme_close_up
    public string cameraMovement;    // static/pan_left/pan_right/zoom_in/zoom_out/tracking
    public List<CharacterCueData> characters;
}

[System.Serializable]
public class CharacterCueData
{
    public string characterId;       // 角色ID,对应素材目录
    public string animationName;     // idle/walk/run/talk/angry/sad/happy/surprised
    public string expression;        // 表情覆盖(可选)
    public Vector2Data positionFrom; // 起始位置(归一化坐标 0~1)
    public Vector2Data positionTo;   // 结束位置
    public bool flipX;               // 水平翻转
    public int sortOrder;            // 渲染层级
}

[System.Serializable]
public class Vector2Data
{
    public float x;
    public float y;
}

[System.Serializable]
public class DialogueData
{
    public string speaker;           // 说话人
    public string text;              // 台词文本(用于字幕)
    public string clipName;          // 音频文件名
    public float startTime;
    public float duration;
}

[System.Serializable]
public class BGMCueData
{
    public string clipName;          // BGM 文件名
    public float startTime;
    public float duration;
    public float fadeInDuration;
    public float fadeOutDuration;
}

[System.Serializable]
public class SFXCueData
{
    public string clipName;
    public float startTime;
}

5.3 素材目录管理器

/// <summary>
/// 素材目录:管理所有角色/场景/道具/音频资源的索引
/// 运行时从 Assets/ 目录自动扫描生成
/// </summary>
[CreateAssetMenu(fileName = "AssetCatalog", menuName = "AutoAnime/AssetCatalog")]
public class AssetCatalog : ScriptableObject
{
    [Header("角色")]
    public List<CharacterEntry> characters = new();
    
    [Header("场景")]
    public List<SceneEntry> scenes = new();
    
    [Header("道具")]
    public List<PropEntry> props = new();
    
    [Header("BGM")]
    public List<AudioEntry> bgms = new();
    
    [Header("音效")]
    public List<AudioEntry> sfxs = new();
    
    [Header("配音")]
    public List<AudioEntry> voices = new();
    
    // ---- 查询方法 ----
    
    public GameObject GetCharacterPrefab(string characterId)
    {
        var entry = characters.Find(c => c.id == characterId);
        if (entry == null) Debug.LogError($"角色未找到: {characterId}");
        return entry?.prefab;
    }
    
    public GameObject GetScenePrefab(string sceneId)
    {
        var entry = scenes.Find(s => s.id == sceneId);
        return entry?.prefab;
    }
    
    public AudioClip GetBGMClip(string clipName)
    {
        var entry = bgms.Find(b => b.id == clipName);
        return entry?.clip;
    }
    
    public AudioClip GetSFXClip(string clipName)
    {
        var entry = sfxs.Find(s => s.id == clipName);
        return entry?.clip;
    }
    
    public AudioClip GetVoiceClip(string clipName)
    {
        var entry = voices.Find(v => v.id == clipName);
        return entry?.clip;
    }
    
    /// <summary>
    /// 自动扫描素材目录,生成索引(编辑器工具)
    /// </summary>
    [ContextMenu("重新扫描素材目录")]
    public void RescanAssets()
    {
        characters.Clear();
        scenes.Clear();
        props.Clear();
        bgms.Clear();
        sfxs.Clear();
        voices.Clear();
        
        // 扫描角色
        var charDirs = System.IO.Directory.GetDirectories("Assets/Characters");
        foreach (var dir in charDirs)
        {
            var id = System.IO.Path.GetFileName(dir);
            var prefab = FindPrefabInDir(dir);
            if (prefab != null)
            {
                characters.Add(new CharacterEntry
                {
                    id = id,
                    prefab = prefab,
                    availableAnimations = GetAvailableAnimations(prefab)
                });
            }
        }
        
        // 扫描场景、音频等同理...
        
        UnityEditor.EditorUtility.SetDirty(this);
        UnityEditor.AssetDatabase.SaveAssets();
    }
}

[System.Serializable]
public class CharacterEntry
{
    public string id;
    public GameObject prefab;
    public List<string> availableAnimations; // 可用动画列表
}

[System.Serializable]
public class SceneEntry
{
    public string id;
    public GameObject prefab;
    public Sprite backgroundImage;
}

[System.Serializable]
public class PropEntry
{
    public string id;
    public GameObject prefab;
}

[System.Serializable]
public class AudioEntry
{
    public string id;
    public AudioClip clip;
}

5.4 视频录制输出

using UnityEngine;
using Unity.Recorder;

/// <summary>
/// 自动录制:Timeline 播放完毕后自动输出视频
/// </summary>
public class AutoRecorder : MonoBehaviour
{
    [SerializeField] private AutoDirector director;
    [SerializeField] private string outputFolder = "Output/";
    [SerializeField] private int width = 1920;
    [SerializeField] private int height = 1080;
    [SerializeField] private int frameRate = 30;
    
    private RecorderWindow recorder;
    
    public void StartRecording(string episodeId)
    {
        var settings = ScriptableObject.CreateInstance<MP4RecorderSettings>();
        settings.name = $"Episode_{episodeId}";
        settings.OutputFile = $"{outputFolder}{episodeId}/{episodeId}";
        settings.FrameRate = frameRate;
        settings.FrameSize = new Vector2Int(width, height);
        settings.CaptureAlpha = false;
        
        // 启动录制
        RecorderController.StartRecording(settings);
        
        // 监听 Timeline 播放结束
        director.OnTimelineComplete += () =>
        {
            RecorderController.StopRecording();
            Debug.Log($"录制完成: {outputFolder}{episodeId}");
            
            // 通知 OpenClaw(通过 MCP)
            MCPBridge.NotifyRecordingComplete(episodeId, 
                $"{outputFolder}{episodeId}/{episodeId}.mp4");
        };
    }
}

5.5 Headless 渲染模式(批量出片)

/// <summary>
/// Headless 渲染入口:支持命令行批量渲染
/// 用法:Unity.exe -batchmode -nographics -executeMethod BatchRenderer.Render -episodeId E01
/// </summary>
public class BatchRenderer
{
    public static void Render()
    {
        var args = System.Environment.GetCommandLineArgs();
        string episodeId = "";
        string projectPath = "";
        
        for (int i = 0; i < args.Length; i++)
        {
            if (args[i] == "-episodeId" && i + 1 < args.Length)
                episodeId = args[i + 1];
            if (args[i] == "-projectPath" && i + 1 < args.Length)
                projectPath = args[i + 1];
        }
        
        if (string.IsNullOrEmpty(episodeId))
        {
            Debug.LogError("缺少 -episodeId 参数");
            UnityEditor.EditorApplication.Exit(1);
            return;
        }
        
        // 加载项目数据
        var director = FindObjectOfType<AutoDirector>();
        var jsonPath = $"{projectPath}/episodes/{episodeId}.json";
        string json = System.IO.File.ReadAllText(jsonPath);
        
        // 构建并播放
        director.BuildTimelineFromJson(json);
        
        // 录制完成后自动退出
        var recorder = FindObjectOfType<AutoRecorder>();
        recorder.StartRecording(episodeId);
    }
}

六、OpenClaw 配置与 Skill 开发

6.1 安装 Unity MCP 插件

# 1. 克隆 MCP for Unity
git clone https://github.com/CoplayDev/unity-mcp.git

# 2. 在 Unity 中:Window → Package Manager → Add from Disk
#    选择 unity-mcp/package.json

# 3. 安装 uv 环境(MCP Server 依赖)
# Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh

# 4. 在 Unity 中打开 Toggle MCP Window → Start Server
#    默认地址:http://127.0.0.1:8080

# 5. OpenClaw 连接
openclaw mcp connect unity http://127.0.0.1:8080

6.2 OpenClaw Skill:动画制作主控

---
name: auto-anime
version: 1.0.0
description: 全自动 2D 动画制作主控技能
trigger: "制作动画|生成动画|make anime|produce animation|开始制作"
tools: [shell, http, memory, chat]
depends: [hermes-bridge, unity-mcp]
---

# 全自动 2D 动画制作

## 触发条件
当用户要求制作动画、生成漫剧时触发。

## 执行步骤

### 1. 需求确认
询问用户:
- 剧本来源:已有剧本 / 一句话创意 / 从网文改编
- 风格要求:上传风格参考图或描述
- 集数:默认 10 集
- 分辨率:1920×1080 / 1080×1920(竖屏)

### 2. 调用 Hermes 生成剧本和分镜
发送指令给 Hermes Agent:

hermes generate-script --prompt “{用户输入}” --episodes {集数} --style “{风格}”

等待 Hermes 返回:完整剧本 + 分镜 JSON + 角色调度表

### 3. 素材匹配
检查 AssetCatalog 中是否有对应角色/场景/音频:
- 角色匹配:按角色描述匹配最近似的角色素材
- 场景匹配:按场景描述匹配场景素材
- 音频匹配:按情绪关键词匹配 BGM

如缺少素材,提示用户补充。

### 4. 构建 Unity Timeline
通过 MCP 向 Unity 发送构建指令:
```json
{
  "method": "auto_director.build_timeline",
  "params": {
    "episodeData": {分镜JSON}
  }
}

5. 录制输出

通过 MCP 触发录制:

{
  "method": "auto_recorder.start_recording",
  "params": {
    "episodeId": "E01"
  }
}

6. 交付

录制完成后,将视频文件路径发送给用户。

异常处理

  • Unity MCP 连接失败:尝试重连 3 次,仍失败则通知用户检查 Unity
  • 素材缺失:列出缺失清单,等用户补充后继续
  • 录制超时:超过 10 分钟未完成,检查 Unity 是否卡死

注意事项

  • 每次制作前先检查 Unity 编辑器是否打开
  • 大项目(>20 集)建议分批渲染
  • 渲染期间不要操作 Unity 窗口

### 6.3 OpenClaw Skill:Hermes 桥接

```markdown
---
name: hermes-bridge
version: 1.0.0
description: 与 Hermes Agent 协作的桥接技能
trigger: "hermes|ask hermes|爱马仕"
tools: [shell, http, memory]
---

# Hermes 桥接技能

## 用途
当需要创意内容(剧本/分镜/角色分析)时,委托 Hermes 处理。

## 执行步骤

### 1. 构建 Prompt
根据任务类型,组装 Prompt:
- 剧本生成:用户创意 + 风格 + 集数
- 分镜生成:剧本文本 + 角色信息 + 镜头规范
- 角色分析:剧本文本 → 角色列表 + 情感曲线

### 2. 调用 Hermes
```bash
hermes chat --skill generate-script --input "{prompt}"

或通过 HTTP API:

curl -X POST http://localhost:8765/api/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "{prompt}", "skill": "generate-script"}'

3. 解析输出

将 Hermes 返回的结构化数据转为 Unity 可用的 JSON。

输出格式规范

所有 Hermes 输出必须符合 EpisodeData JSON Schema(见 5.2 节)。


---

## 七、Hermes Skill 开发

### 7.1 剧本生成技能

```markdown
---
name: generate-script
version: 1.0.0
description: 从一句话创意生成完整动画剧本与分镜
triggers:
  - "生成剧本"
  - "写剧本"
  - "generate script"
tools_required:
  - read_file
  - write_file
  - web_search
model_preference: claude-sonnet
tags: [动画, 剧本, 分镜]
---

# 动画剧本生成

## 目标
从用户的一句话创意,生成可直接用于 Unity 自动化制作的完整剧本+分镜 JSON。

## 执行步骤

### 1. 创意扩展
将用户的一句话创意扩展为故事大纲:
- 核心冲突
- 主线剧情走向
- 角色关系图
- 情感弧线

### 2. 分集编写
按用户指定的集数,逐集编写剧本:
- 每集 300-500 字
- 标注场景切换
- 标注角色表情和动作
- 每集结尾留悬念

### 3. 分镜拆解
将每集剧本拆解为分镜镜头,输出严格符合以下 JSON Schema:

```json
{
  "episodeTitle": "第X集",
  "shots": [
    {
      "shotNumber": 1,
      "startTime": 0,
      "durationSeconds": 3.0,
      "sceneId": "bg_classroom",
      "sceneChange": true,
      "shotType": "wide",
      "cameraMovement": "static",
      "characters": [
        {
          "characterId": "hero",
          "animationName": "sit",
          "expression": "neutral",
          "positionFrom": {"x": 0.3, "y": 0.5},
          "positionTo": {"x": 0.3, "y": 0.5},
          "flipX": false,
          "sortOrder": 1
        }
      ]
    }
  ],
  "dialogues": [
    {
      "speaker": "hero",
      "text": "今天的风好大啊",
      "clipName": "hero_line01",
      "startTime": 1.0,
      "duration": 2.0
    }
  ],
  "bgmCues": [
    {
      "clipName": "bgm_sad",
      "startTime": 0,
      "duration": 30,
      "fadeInDuration": 1.0,
      "fadeOutDuration": 2.0
    }
  ],
  "sfxCues": [
    {
      "clipName": "sfx_wind",
      "startTime": 0.5
    }
  ]
}

4. 角色素材映射

根据角色描述,匹配 AssetCatalog 中已有的角色 ID:

  • 按外貌相似度匹配
  • 列出匹配结果供用户确认

注意事项

  • characterId 必须与 AssetCatalog 中的 id 完全一致
  • sceneId 必须与场景素材文件名对应
  • animationName 只能使用角色已有的动画(查看 availableAnimations)
  • 时间轴不能重叠
  • 总时长控制在 60-120 秒/集

### 7.2 分镜优化技能(自进化)

```markdown
---
name: optimize-storyboard
version: 1.0.0
description: 根据渲染反馈自动优化分镜
triggers:
  - "优化分镜"
  - "分镜不好"
  - "镜头优化"
tools_required:
  - read_file
  - write_file
model_preference: claude-sonnet
tags: [动画, 分镜, 优化]
---

# 分镜优化

## 目标
根据渲染结果反馈(用户评分/播放数据),自动优化分镜策略。

## 优化维度

### 节奏优化
- 连续同景别超过 3 个镜头 → 自动插入不同景别
- 对话场景缺少正反打 → 自动补充
- 高潮段落镜头太短 → 自动延长

### 视觉优化
- 角色遮挡 → 调整 sortOrder 和位置
- 同一位置角色重叠 → 自动分散
- 运镜过于单调 → 根据情绪切换运镜方式

### 情绪匹配
- 紧张场景 → 推进景别 + 快速切换
- 温馨场景 → 中景 + 慢速运镜
- 悲伤场景 → 远景 + 静止镜头

## 进化机制
每次优化后记录:
- 修改了什么
- 用户是否满意
- 播放数据变化

基于历史数据持续进化分镜策略。

八、双 Agent 协作协议

8.1 通信架构

用户 → OpenClaw(消息入口)
         │
         ├─ 简单查询 → OpenClaw 直接回答
         │
         ├─ 制作动画 → OpenClaw 编排全流程
         │     │
         │     ├─ Step 1: 调用 Hermes 生成剧本+分镜
         │     │         POST http://hermes-host:8765/api/chat
         │     │
         │     ├─ Step 2: 素材匹配(OpenClaw 本地执行)
         │     │
         │     ├─ Step 3: 通过 MCP 驱动 Unity 构建 Timeline
         │     │         POST http://127.0.0.1:8080/mcp
         │     │
         │     ├─ Step 4: 触发录制
         │     │
         │     └─ Step 5: 交付视频
         │
         └─ 优化/迭代 → Hermes 学习反馈,进化 Skill

8.2 OpenClaw 与 Hermes 的对接方式

方式 A:本地双进程(推荐开发阶段)

# 终端 1:启动 OpenClaw
openclaw gateway

# 终端 2:启动 Hermes
hermes serve --port 8765

# OpenClaw 通过 shell 工具调用 Hermes
# 或通过 HTTP API 调用

方式 B:OpenClaw 内嵌 Hermes(简化部署)

# OpenClaw 配置多模型
openclaw models add hermes --type custom \
  --endpoint http://localhost:8765/api/chat \
  --skill-bridge enabled

方式 C:通过 MCP 双向桥接

OpenClaw ←→ MCP Server ←→ Hermes MCP Client

九、完整工作流示例

场景:用户说"帮我做一部废土少女的 10 集动画"

时间线:~2 小时出 10 集成片(素材齐全的情况下)

T+0s    用户发送消息
T+1s    OpenClaw 匹配 auto-anime Skill
T+2s    OpenClaw 确认需求:集数、风格、分辨率
T+10s   用户回复确认
T+11s   OpenClaw 调用 Hermes 生成剧本
T+60s   Hermes 返回 10 集完整剧本 + 分镜 JSON(并行生成)
T+61s   OpenClaw 检查素材匹配
        - 角色:废土少女 → 匹配 hero(heroine/战士类型)
        - 场景:废土 → bg_wasteland, bg_ruins, bg_desert
        - BGM:bgm_tension, bgm_sad, bgm_epic
        - 音效:sfx_wind, sfx_explosion, sfx_footstep
T+65s   OpenClaw 通过 MCP 发送 E01 分镜 JSON 到 Unity
T+70s   Unity AutoDirector 构建 Timeline
T+75s   Unity 开始播放 + 录制
T+135s  E01 录制完成,输出 MP4
T+136s  自动开始 E02 渲染(或并行渲染,如果有多 GPU)
...
T+1200s 全部 10 集渲染完成
T+1201s OpenClaw 将视频列表发送给用户

十、批量渲染方案

10.1 单机批量

# 批量渲染脚本 render_all.sh
for i in $(seq -w 1 10); do
  /path/to/Unity.exe \
    -batchmode \
    -nographics \
    -projectPath /path/to/AutoAnimeProject \
    -executeMethod BatchRenderer.Render \
    -episodeId "E${i}" \
    -logFile "Output/E${i}/render.log" \
    -quit
  echo "Episode E${i} rendered."
done

10.2 多 GPU 并行

# GPU 0 渲染 E01-E05
CUDA_VISIBLE_DEVICES=0 ./render_range.sh 1 5 &

# GPU 1 渲染 E06-E10
CUDA_VISIBLE_DEVICES=1 ./render_range.sh 6 10 &

wait
echo "All episodes rendered."

10.3 OpenClaw 调度批量渲染

# 在 auto-anime Skill 中增加批量逻辑

### 批量渲染
如果集数 > 1:
1. 先渲染 E01 作为预览,让用户确认质量
2. 用户确认后,使用 shell 工具启动批量渲染
3. 监控渲染进度,每集完成后通知用户
4. 全部完成后,汇总交付

十一、技术难点与解决方案

难点影响解决方案
角色表情切换不自然动画生硬Spine 混合树 + 表情叠加层,混合时间 0.2s
场景切换有黑帧视频不连贯Timeline 轨道交叉淡入淡出,重叠 0.5s
音画不同步配音与嘴型不匹配TTS 生成时长 → 反向推算动画时长 → 动态调整
骨骼蒙皮穿帮关节处撕裂PSD 分层时留够重叠区域(每层多画 10px)
Timeline 编程构建复杂代码量大封装 High-Level API:AddCharacterShot() / AddDialogue()
MCP 连接不稳定Unity 操作中断心跳检测 + 自动重连 + 操作幂等设计
批量渲染卡死进程不退出每集独立进程 + 超时 kill + 错误重试
素材命名不规范自动化失败提供素材规范模板 + 导入时自动校验

十二、进阶方向

12.1 实时预览模式

用户在 IM 中发送修改指令
        ↓
OpenClaw 实时调整 Unity Timeline
        ↓
Unity 实时预览(不录制)
        ↓
用户确认后录制输出

12.2 多人协作

角色动画师 → 维护 Spine/PSB 素材
场景美术   → 维护场景背景素材
编剧       → 在 Hermes 中编写剧本
导演       → 在 OpenClaw 中审改分镜

12.3 风格迁移

利用 Hermes 的学习能力:

  • 分析已有作品的分镜风格
  • 自动学习镜头语言偏好
  • 新项目自动应用已学风格

12.4 与 AI 图像生成结合(扩展)

素材不足时:
Hermes 描述 → Stable Diffusion 生成角色立绘
           → 自动转为 PSB 分层
           → 导入 Unity 骨骼绑定

十三、硬件与成本

最低配置

组件要求
CPUi7-12700 / Ryzen 7 5800X
内存32 GB
GPURTX 3060 12GB(渲染+录制)
存储500 GB SSD(素材+输出)

推荐配置

组件要求
CPUi9-13900K / Ryzen 9 7950X
内存64 GB
GPURTX 4070 Ti(双卡更佳)
存储1 TB NVMe SSD

AI API 月成本(10 集/月)

用途预估费用
剧本生成¥50–100
分镜生成¥100–200
素材匹配¥20–50
合计¥170–350/月

素材自备 = 零图像生成成本,这是最大的成本优势。


十四、落地路线图

阶段时间目标交付
P02 周Unity 项目搭建 + 素材导入 + 手动 Timeline1 集 2D 动画手动出片
P14 周AutoDirector + JSON 驱动JSON 指令 → 自动构建 Timeline → 出片
P26 周OpenClaw MCP 桥接 + SkillIM 发消息 → 自动出片
P38 周Hermes 剧本/分镜 + 双 Agent 协作一句话创意 → 10 集自动出片
P412 周批量渲染 + Skill 进化 + 风格学习工业化产出 + 质量自优化

十五、总结

的独特优势:素材自备。

神经猫、即梦、可灵都在用 AI 生成图片和视频,成本高、一致性差。而:

  • ✅ 角色素材自备 → 零图像生成成本 + 100% 一致性
  • ✅ 场景/道具自备 → 风格完全可控
  • ✅ 音频自备 → 音质保证 + 无版权风险
  • ✅ Unity 3D 渲染 → 2D 骨骼动画质量远超 AI 视频生成
  • ✅ OpenClaw + Hermes → 全自动编排 + 创意自进化

不是在做一个"AI 视频生成工具",而是在做一个"AI 导演系统"——素材是现成的演员和布景,AI 负责编剧、导演、剪辑。

这个方向比纯 AI 视频生成更务实,比手工做动画更高效。干就完了。

ORB-SLAM3 class VertexAccBias : public g2o::BaseVertex<3,Eigen::Vector3d> ◄──── EdgeAccRW ──────► VertexAccBias(VAk)(上一关键帧,固定)在纯 IMU 短窗口内,零偏与重力的分解本就病态;陀螺零偏只影响旋转预积分,与视觉观测的旋转部分(相机朝向)直接对应,相对容易估计;加计零偏影响速度、位置预积分,且与重力向量在测量方程中线性组合,存在。会让边刷新用零偏一阶修正后的预积分测量(速度、位置部分);,视觉残差对零偏的雅可比明明是零,怎么会有信息传过去?刷新依赖零偏的中间项。把视觉信息传递到零偏估计,这句话怎么理解?是安全的,框架会兜底。 阅读详情

相关推荐

用Python进行GEO数据挖掘(学习笔记四):富集分析

该笔记详细解释了富集分析的工作原理,并简要地利用gseapy在python中进行富集分析的操作。

m0_64111502的博客 5649

游戏NPC接入Hermes大模型:本地部署与Unity集成实战

大语言模型(LLM)通过模拟人类语言模式,实现了自然语言的理解与生成,其核心原理基于Transformer架构的海量参数训练。这项技术的工程价值在于,它能将静态的文本交互升级为动态、个性化的对话系统。在游戏开发领域,这为创造具有“灵魂”的非玩家角色(NPC)提供了全新可能。通过本地部署经过指令精调的专用模型(如Hermes系列),并结合异步架构与上下文管理,开发者可以在保证游戏流畅性的前提下,为NPC注入永不重复的智能对话能力。本文即以游戏NPC智能化为核心场景,详细拆解了如何利用**Llama.cpp**

weixin_29008055的博客 317

GD32F470实战:如何用EXMC+SDRAM搞定LVGL大内存需求(附完整代码)

本文详细介绍了如何在GD32F470微控制器上通过EXMC接口驱动外部SDRAM,以满足LVGL图形库的大内存需求。内容涵盖硬件连接、EXMC时序配置、轻量级内存管理器实现,以及将LVGL帧缓冲和资源无缝集成到SDRAM的实战方法,并提供了完整的代码示例和调试技巧,帮助开发者构建稳定可靠的嵌入式GUI系统。

k9l0m1的博客 441

Unity3D + AI Agent 制作 2D 动画 —— 开源项目排行榜

目前没有单一项目同时做到「Unity3D 原生 + AI Agent + 2D 动画短片全自动」。 两大阵营各有所长: Unity 原生派(AI4Animation、Unity-AI-Animation、OpenClaw Plugin)—— 能操控 Unity,但缺短片内容生成能力 内容生成派(Toonflow、waoowaoo、AIComicBuilder)—— 能全自动出片,但脱离 Unity 🎯 针对你的需求(Unity3D + OpenClaw + Hermes 全自动 2D 动画) 推荐方案:

欢迎光临~知1而N的博客 674

calibre QRC提取寄生参数

typical将上面的文件QCI_flow里面的文件 在Cp 到当前 ,其实应该是某几个文件,但是我给忘记了 就全cp过来了 ,无影响,不过也希望大佬指正。

2202_75711937的博客 1515

一文搞懂雷达脉冲压缩和匹配滤波器

为了解决传统单频脉冲雷达面临的作用距离和空间分辨力之间的矛盾,脉冲压缩理论被提出。在接收端设计一个和发射信号能够“共轭匹配”的网络来实现脉冲压缩。接收到的回波信号通过匹配滤波器时,滤波器的增益在信号越强的频率点越大;在信号越弱的频率点,增益越小,通过这样的方式使信号在时域更加集中。脉冲压缩技术大致可分为线性调频(LFM)和相位编码。其中LFM信号易于通过硬件或各种技术产生,但是进行匹配滤波后主旁瓣比高达13.2dB,在检测多个目标时,强目标的回波旁瓣可能会把弱小信号覆盖,导致弱小信号的检测受到影响。

FPGA入门到跑路 9932

Unity 3D 全自动制作 2D 动画:集成 OpenClaw 与 Hermes 的 TaoToken 统一接入方案

Unity 3D 全自动 2D 动画链路中,OpenClaw 与 Hermes 多进程各自配 Key 常导致 401 与 local proxy failed。本文用 TaoToken 统一 Base URL 与环境变量,给出可复制配置与逐层验证方法,让 MCP 桥接一次跑通。详见 https://taotoken.net/?utm_source=taotoken_aicg_blog_end

weixin_42613360的博客 7

手把手教你用TL431设计反激电源补偿器(附波特图调试技巧)

本文详细介绍了如何使用TL431设计反激电源补偿器,并提供了波特图调试技巧。通过实战经验分享,帮助工程师快速掌握补偿网络设计、分压电阻计算和稳定性判据,避免常见设计误区,提升电源稳定性与效率。

weixin_29201859的博客 376

3D ACIS Modeler 在测量软件里怎么用?几何查询、区域判断与测点布点

本文面向测量软件开发团队,梳理 CAD 模型导入三坐标测量软件后的几何判断工作:如何借助 3D ACIS Modeler 完成模型对象访问、测量区域判断与空间关系分析,并结合 LK Metrology CAMIO 官方案例说明内核与应用的分工,最后给出自研与引入内核的评估思路。

HuiduCADTech的博客 300

【Simulink教程案例18】基于simulink的基础OFDM+64QAM发射接收链路仿真

OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM(Multi Carrier Modulation),多载波调制的一种。通过频分复用实现高速串行数据的并行传输, 它具有较好的抗多径衰落的能力,能够支持多用户接入。OFDM技术由MCM(Multi-Carrier Modulation,多载波调制)发展而来。OFDM技术是多载波传输方案的实现方式之一,它的。

FPGA/MATLAB学习教程/源码/项目合作开发 1984

数字信号处理(一):Xilinx Vivado DDS IP核设计实例(文末附源码)

前言 在数字信号处理时我们经常会用到数字变频,包数字下变频(DDC)和数字上变频(DUC),这其中会用到Xilinx公司的DDS IP核或者Altera公司的NCO IP核来产生本振频率,以现数字域信号频谱搬移。本文我们通过例化Xilinx公司的DDS IP核来产生混频器本振输入频率,并给出Modelsim仿真测试结果。 1、Xilinx DDS IP简介 Xilinx公司的DDS IP核使用AX...

FPGA_Designer 1万+

3D CAD参数化建模原理详解:尺寸参数、几何约束与特征关系

3DCAD参数化建模通过尺寸参数、几何约束与特征依赖关系,将设计意图融入模型,实现自动更新。其核心在于明确变量关联、合理设置约束、理顺特征逻辑。修改时,系统依规则重算几何,但需防范约束冲突、依赖失效等问题。提升可维护性需规划关键参数、优化建模结构,并验证多场景适用性。大腾智能ZCAD以自主内核与智能交互支持高效参数化设计,兼顾传统建模与同步修改需求,助力系列化开发与持续迭代。

大腾智能的博客 263

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

AI 生成 3D 模型的技术实践:从文本生成到 Three.js 三维展示

无需3D建模基础,只需输入一句话,AI工具Meshy即可生成可编辑、可下载的3D模型。它支持文本转3D、图像转3D、AI纹理与动画生成,一键导出至Blender、Unity等软件,大幅降低创作门槛,让普通人也能轻松实现3D创意。

战族狼魂的博客 257

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

AI时代,Delft3D如何打通标量输运、波浪、粒子与溢油模拟

学完不仅能独立完成模型构建、参数设置和结果分析,还能真正掌握从“建模型”到“用模型解决实际问题”的完整方法。做 Delft3D 模拟,最难的不是“会点软件”,而是理论如何落地、参数如何设置、案例如何跑通,以及模型结果如何真正用于科研和项目。既适合零基础入门,也适合已有水动力基础、想进一步提升应用能力的科研人员、研究生及水文、水环境、海洋、水利、环评等领域技术工作者。1.拉格朗日粒子模型理论2.拉格朗日粒子法的适用情况3.拉格朗日粒子法的参数4.波浪模型后处理。这门课从基础到进阶,一次打通。

weixin_56135535的博客 170

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【测评】SenseNova6.8Flash模型正式发布,支持动态 PPT 及 3D 设计

SenseNova 6.8 Flash将设计生成拓展至多种创作形态,支持Web、SVG、Three.js、Blender、PPT等形式,满足多样化的AI Native Design需求,并支持动态PPT、动态Poster与Agentic 3D设计。同时,模型可接入Figma等专业工作流,帮助用户将AI设计能力融入现有的专业设计流程。此外,模型还支持三维场景与交互内容创作,可综合处理空间布局、材质与光照、镜头控制及动画编排等因素,构建可在网页中实时渲染的三维内容,拓展从立体视觉展示到动态交互的表达方式。

Enweitech Software Works 261

文物3D数字化的技术选型指南:从WW/T 0115标准到落地工程,一次讲透采集、建档、管理与展示

《博物馆藏品管理办法》2026年施行,推动3D数字化保护。本文提出五层工程架构:采集、数据、平台、应用、安全,明确结构光、激光、摄影测量技术选型与WW/T 0115-2023标准对接,强调原始数据留档、自动建模与智慧管理平台建设,实现模型可追溯、可复用。通过样板验证、边扫边入库、应用驱动,确保等保二级合规,规避数据丢失、设备脱节等风险,形成可复制的数字化流水线。

Jmyd0123的博客 353

船舶安全培训怎么用AI生成3D预演?从甲板通道、设备热点到网页回放

船舶甲板能够漫游,不等于培训内容可信。本文梳理从培训任务、资料台账、空间白模到设备热点、步骤关联和网页交付的制作流程,说明如何用稳定设备 ID 追溯来源,通过三轮审核核对技术、课程与网页表现,并提供弱网图文回退和上线清单。AI 适合辅助场景与交互原型,不能替代专业审核、上船实训或正式安全程序。

Solange__的博客 501

二十分之一的压缩比:Spatial Vivid 1.0 把 3DGS 全链路参考实现按 MIT 开源了

一个高斯点携带的属性是固定的:位置 3 个 float,不透明度 1 个,三个轴的尺度 3 个,旋转四元数 4 个,剩下全是球谐系数。MIT 覆盖的是这次公布的参考工具,标准文本本身和可能存在的必要专利,授权条件不在这次公告的范围内。主论坛上宣布的事,到 11 月 2 日才由 IT之家 的报道扩散开来:Spatial Vivid 1.0(空间菁彩影像)标准的参考工具开源,包括 EGSC 编解码工具、Web 渲染器工具、封装解封装工具在内的全链路参考实现,以 MIT 协议面向全球开发者开放。

weixin_43043455的博客 219

DEM 数据源选型完全指南:SRTM、ASTER GDEM、ALOS AW3D30 与商业高分辨率的工程级对比

本文回答一个工程选型问题:SRTM、ASTER GDEM、ALOS AW3D30 和商业高分辨率 DEM 怎么选。核心结论:先确认数据表达的是裸地还是含地物表面,再确认垂直基准,最后才看分辨率。格网再细,表面层错了或基准没对齐,断面和汇水结果仍然不可用。

TuxinyunGIS的博客 280

不比品牌比任务:中望3D与SolidWorks选型对照

在这一维度上,结论可以给得更直接:论出图的"稳",两款软件都能满足国标工程图交付,但论出图的"快",新一代中望3D悟空的模型—图纸联动更新已经拉开数量级差距——同样一次设计变更,图纸同步从分钟级进入秒级。中望3D提供装配约束、干涉检查、零件替换与柔性装配,子装配组件可在总装中保持运动,并可驾驭数万级零部件的巨型装配场景,这一能力在高端装备、消费电子、模具机械等超复杂产品研发中已有长期支撑。需要说明的是,判断装配能力不能只看组件数量指标,而要用企业自己的典型总装实际操作,比较约束维护和结构修改的顺手程度。

2302_79992999的博客 213

机器人与机电一体化3D数字孪生机器-Day9

一、传送带物理效果。

qq_53797018的博客 96

三角基底律——矩阵3x6 是所有三角形的基底·3D中高就是边

「:doc max=805·engine max=805 ⇒ 定(L1/01·三角基底律)·公理 §6.140 冻结·。:本篇按 2026-11-01 作者立规(正文 ≥10000 字)直接成篇,引擎锚点组自检。,立:三视角三形(内部=直角·侧边=等腰·正面=等边·面 180/3=60°)——3D 3×3×3 立方体的三个视角投影正是三形(G1 实算:格账正三角形三边各 6 格步·棱长 3=高);,解码。

2603_96389967的博客 98

从CAD装配模型到3D装配动画:模型复用与工艺步序设计

本文阐述了从三维CAD模型生成装配动画的关键流程,涵盖模型准备、结构确认、工艺步序定义、动画表达与资料输出五大环节。指出传统方法存在重复整理、工艺脱节等问题,提出通过“3D工艺大师”等工具实现模型复用与工艺步序驱动,由工艺人员直接定义装配逻辑,自动生成动画并协同输出工艺文件,提升效率与准确性,真正实现设计数据向生产指导的无缝转化。

大腾智能的博客 298

把带贴图的 OBJ / glTF 转成 3D Tiles:我写了个 mesh-to-tiles

做倾斜摄影或单体模型上 Cesium 时,经常卡在同一件事:手上是一份带贴图的 OBJ 或 glTF,场景里要的是 3D Tiles。现成工具能转,但 LOD、图集和纹理压缩往往要再串一圈。我把这条链路收成了一个 Node 命令行工具,输入网格,输出 3D Tiles 1.1 隐式八叉树。,协议 MIT。

m0_69250830的博客 149

论文精读|DiffusionMBIR:用 2D 扩散模型解 3D 稀疏视角 CT 重建

本文提出DiffusionMBIR,解决3D稀疏视角CT重建中2D扩散模型难以保持体数据空间连贯性的问题。方法将2D扩散模型用于xy平面去噪,结合仅沿z方向的TV先验与ADMM实现全局数据一致性,通过变量共享和单步迭代提升效率。实验表明,该方法在8视角下冠状面重建达35.18 dB,显著优于逐片独立扩散重建(28.05 dB)。代码基于预训练2D扩散模型,支持分批处理与快速推理,为高效3D逆问题求解提供新范式。

weixin_45694817的博客 118
上一篇: [特殊字符] 像“神经猫“一样搭建全自动 AI 漫剧平台——完整技术方案
下一篇: Unity 3D 全自动 2D 动画——续篇:查缺补漏与关键修正
知1而N
博客等级 码龄9年 1423粉丝 449原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值