
简介面向 Web 前端开发者和 Live2D 爱好者的定制化看板娘资源包帮助掌握基于 JavaScript、CSS 与 HTML 的 Live2D 模型接入、动画交互和页面融合方法。资源共 570 个文件、约 90.3MB包含 218 个 mtn 动作动画文件、143 个 png 贴图、61 个 wav 和 58 个 mp3 音频、52 个 json 配置、11 个 moc 模型数据以及 html/js 前端示例等可覆盖模型展示、动作触发、音效反馈与页面集成。已有 2722 人学习下载。适合想快速搭建个性化看板娘的开发者可直接复用现成模型与素材也可按 JSON 配置调整动作、表情和交互压缩包含清晰的目录结构便于对照理解 Live2D 的模型驱动、动画融合与事件监听逻辑同时为性能优化和调试提供了可实操的示例环境。 最近折腾桌面美化的时候我给自己的电脑配了一个能眨眼、能点头、还会跟着鼠标视线转头的Live2D看板娘。事情听起来挺玄乎拆开来看核心就三件事选对工具链、找到或做出一份能用的模型、把它正确播出来。如果你也想给博客、桌面或者AI助手配一个专属角色这篇可以直接当保姆级入手指南来用我会把从零到一的路走一遍该花的钱、能省的力气、容易踩的坑都给你标注好。这个项目适合谁呢一类是喜欢折腾网页和桌面的玩家想给博客加个动态角色另一类是想入坑Vtuber或者做AI虚拟助手的需要先搞清楚Live2D资产怎么做、怎么接。我会尽量少讲虚的所有结论都是实测过的。1. 做看板娘之前先把方案捋清楚1.1 你要的“看板娘”到底是哪一类很多人一搜“Live2D看板娘”找到的教程五花八门有教建模的、有教写网页的、有教接入语音助手的。这些其实分属完全不同的方向。我建议在做之前先问自己一个问题这个看板娘在哪运行如果是放在网页上比如个人博客首页、项目展示页那核心是“模型文件 网页播放器”。你不需要会建模找到一个可用的模型用现成的开源播放器加载它配一下尺寸和位置就行这套流程最快半小时内能见到效果。如果是放在桌面上Windows系统里常用的是“桌面宠物”类程序或者你自己用Live2D SDK封装一个窗口。这个门槛稍微高一点需要理解模型配置文件结构还要处理窗口透明置顶等细节。如果是给AI助手加形象那就额外多一层你需要把模型的参数和语音/对话系统联动起来。比如AI说话时看板娘嘴巴跟着动情绪词触发表情切换。这个最复杂但也是现在最热门的方向。我的建议是第一次做从网页端入手把模型加载流程跑通再慢慢挪到桌面或AI上。这样排错范围小成就感来得快。1.2 工具链选型建模、播放、语音三大块按我的经验一套完整的看板娘方案可以拆成三个模块建模与资产编辑几乎绕不开Live2D Cubism这是官方编辑器模型文件的主流格式就是它导出的。播放与渲染网页端用Web SDK兼容的开源播放器桌面端用官方Native SDK或Electron包装Unity项目则直接用Unity SDK。语音与交互可以用浏览器自带的SpeechSynthesis API做文字转语音也可以用本地TTS服务再通过模型参数映射实现口型动画。选型的时候不要贪多。很多人一上来就装了一堆编辑器、SDK、框架最后模型没准备全卡在环境问题上。我的建议是最小可用集Cubism免费版 一个现成模型 一个开源播放器先把“能显示、能眨眼、能转头”跑通再考虑进阶。2. 模型资源与软件安装避坑指南2.1 Live2D Cubism安装选哪个版本Live2D Cubism目前主版本是5官方同时提供免费版和Pro版。我个人的结论是个人玩家、学习用途免费版完全够用。免费版和Pro的核心建模功能几乎一样区别主要在导出限制、部分高级功能和水印处理上。对比项免费版Pro版价格0元需注册账号付费订阅/买断基础建模功能可用完整导出分辨率有限制高分辨率动画导出功能受限完整商业用途不允许允许适用人群学习、个人非商用商用项目、专业创作者安装时有几个容易踩的坑一是下载后解压路径不要带中文或特殊字符否则部分依赖库会加载失败二是Windows系统如果报缺少DLL先装微软官方VC运行库这比任何“修复工具”都管用三是第一次启动需要登录账号网络不通会卡在激活界面启个代理或者换网络重试即可。Cubism 5的推荐配置不夸张CPU i5及以上内存8GB以上显卡集显也能跑但如果要做2048px贴图级别的模型建议16GB内存。项目会同时打开纹理、网格、物理场景内存不够容易闪退。2.2 免费模型去哪找怎么判断模型质量模型资源是新手最容易卡壳的地方。我推荐几个靠谱渠道Cubism自带的示例模型安装Cubism后自带几个官方示例包括“Hiyori”“Mao”等包含完整建模工程最适合学习。Nizima和Booth日本素材站有大量免费和付费Live2D模型搜索关键词“Live2D 無料”或“Live2D モデル”能找到不少能用的人物注意区分V2和V3格式优先选V3以上。GitHub开源项目有些个人开发者会放出可用的模型工程例如Live2D-Sample-Models仓库适合研究文件结构和调试。判断一个模型质量好不好不要只看预览图建议看这几个关键点口型参数是否包含MouthOpen、MouthForm参数这决定了能不能驱动说话动画。眼睛参数是否有EyeBlink、EyeOpen眨眼和视线追踪都依赖它们。物理效果是否有physics3.json头发、裙子、饰品有没有摇摆效果。动作组是否有motion3.json闲置待机、点击反应、对话反应是否齐全。新手优先选带完整动作组和口型参数的角色这样接入播放器后马上有效果不用自己补。2.3 文件结构扫盲.moc3、.model3.json那些后缀是什么拿到一个Live2D模型文件夹通常会看到一堆文件和子文件夹。结构其实不复杂我习惯用一张表来解释文件/目录作用说明.moc3模型本体记录模型网格、变形器和参数属于核心文件.model3.json模型配置入口播放器靠它找贴图、物理、动作文件相当于“总纲”.physics3.json物理效果头发、饰品随动作摆动的物理运算设置.motion3.json动作文件眨眼、点头、待机动画等.exp3.json表情文件喜怒哀乐等表情参数组合textures贴图目录存放模型贴图常见PNG或WebP格式sound语音目录口型动画对应的音频文件播放器加载时第一步就是读取.model3.json它会告诉我们所有素材在哪里、参数范围是多少、动作列表有哪些。所以如果你想改模型的显示名、增加动作、改默认参数都是去改这个JSON文件。这也是后面排查“模型白屏”“动作不触发”问题时的第一个检查点。3. 把自己喜欢的角色变成可动看板娘3.1 静态立绘如何变为可动模型建模流程速览如果你下载的模型不合心意想自定义角色就得自己动手建模。这里我快速梳理一下建模的完整路线让你心里有数。整个流程从一张PSD立绘开始到导出模型结束常规单人角色大概需要一到两周业余时间。第一步是拆分图层。Live2D的“动”本质上是分层变形而不是骨骼绑定。人物立绘要按部位拆成独立图层头发分前发后发、眼睛分眼白瞳孔眉毛、嘴巴拆上唇下唇、脸、脖子、衣服、手臂手指等。每个部件独立才能被单独变形比如眨眼是瞳孔和眼皮协同变形的结果。第二步是导入Cubism并制作关键姿势。在Cubism中导入PSD后先手动摆出所有部件的“标准位置”称为“初始姿势”。这是一切变形的基础哪边的参数范围都要从初始姿势出发。第三步是建立网格。每个图层都要生成网格网格密度决定变形质量。脸部和眼睛密度要高衣服褶皱可以适当降低。网格太稀疏变形生硬太密集性能恶化且难控制。经验习惯是脸部200以上网格单元大面积衣物在150左右即可。第四步是绑定变形器。用变形器把多个图层关联起来比如整个头部发型、脸、五官作为一个头部变形器再添加“头X”“头Y”参数控制摇头和点头。眼睛单独设置“眼睑开合”参数嘴巴设置“口型”参数。最后是添加物理和导出。物理效果处理头发、裙子、饰品的自然摆动导出模型时选择Web/App通用格式即可。如果目标是看板娘而不是动画不需要逐帧手动做动作直接用物理和参数交互就能实现“活”的感觉。3.2 关键参数一网格与变形器的核心逻辑关于网格和变形器我多说几句。很多新手把Live2D理解成“逐帧动画软件”这是错的。Live2D的变形核心是网格上的顶点位置移动控制顶点移动的是一层套一层的“变形器”Deformer。举个例子一个眨眼动作本质上是在“眼睛”变形器上设置了一个参数“EyeBlink”参数值从0滑到1时顶点坐标在初始状态和闭合状态之间插值变化你给关键位置设置好闭合时的顶点位置眨眼就会看起来顺滑。调整参数范围时注意初始值基本都是0最小值设-1到-2最大值设1到2。范围太大会出现部位撕裂范围太小动不起来。每次改完参数要切回模型预览里拖动滑块看效果不要只盯着参数面板看数值。关于变形器我的建议是“层级要少而清晰”。有些人过度嵌套一个手部加五层变形器后期调参数完全失控。合理的结构是“全身一个根节点下面分头、身体、手臂、腿部四个大节点再往下细分”。这样后期不管是调动作还是接表情都容易定位问题。3.3 关键参数二物理效果与参数联动物理效果是让看板娘“活”起来的关键。没有物理效果头发是死的裙子是硬的晃头时像灌了水泥。物理系统本质上是“把位移力传导给受动顶点”配置文件中PhysicsInput是输入参数通常是角度参数如头X、身体YPhysicsOutput是输出参数控制头发或裙子上顶点的位移。配置时注意三点一是不要让物理摆幅过大重力系数调到0.2到0.4之间比较自然二是给物理顶点加阻尼防止回弹抖动三是物理计算和嘴巴、眼睛参数尽量不要共用同一个输出顶点组否则说话时头发会到处乱飞。参数联动是指“一个动作触发多个效果”。比如点头时头发跟着动、脸颊轻微红晕、眼神变角都联立起来。这在模型配置里可以通过软体参数绑定实现Cubism编辑器中可以直接建立参数间依赖关系。对于只想用现成模型的读者对物理和参数的了解不需要太深但至少要会看物理配置文件的注释和输出目标因为播放器表现异常时八成问题出在这两块。4. 看板娘上线上桌网页/桌面部署实操4.1 网页端部署给博客加一个可交互看板娘网页部署是最快见效的玩法。我推荐用一个开源项目“live2d-widget”它封装了Live2D Web SDK的加载、显示、交互逻辑几十行代码就能把看板娘放到网页右下角。操作步骤如下下载仓库源码到你的博客或静态站目录下通常是/live2d-widget/。把模型文件夹整个放入live2d-widget/assets/目录。编辑autoload.js里的模型配置路径指向你的.model3.json。在页面HTML底部引入autoload.js脚本。核心代码大概长这样link relstylesheet href./live2d-widget/waifu.css / script src./live2d-widget/autoload.js/script我实际部署时踩过几个坑一是路径必须用相对路径尤其是在Hexo、VuePress这类博客框架下默认路由可能是子路径要用站点根目录调整二是如果页面有CSP内容安全策略需要放行unsafe-inline和对应域名的资源加载三是手机端需要把看板娘尺寸调小并关闭一些交互事件否则遮挡内容。配置模型路径时可以给loadlive2d传入模型JSON路径代码类似initModel(./live2d-widget/assets/nizima/model.model3.json);这里不要写成model.jsonLive2D V3以上的入口文件一定是.model3.json。还有一点很重要确保你的服务器或托管平台能正确返回.json和.moc3文件的MIME类型很多静态托管平台默认没配会导致浏览器拒绝加载。4.2 桌面端部署让看板娘常驻系统桌面网页版跑通之后桌面端的需求通常接踵而至。桌面端的好处是看板娘可以常驻屏幕随开机自启支持拖拽、点击交互。官方的桌面方案是用Cubism SDK for Native自己写程序但这对于普通玩家太重了。我的建议是用开源桌面看板娘程序或者用Electron把网页版顺手Packaged成桌面应用。Electron方式我实测最简单把网页部署目录打包成一个Electron项目用透明无边框窗口加载就能得到桌面悬浮看板娘。核心配置在main.js里设置透明窗口const { BrowserWindow } require(electron); const win new BrowserWindow({ width: 400, height: 600, frame: false, transparent: true, alwaysOnTop: true, resizable: false, webPreferences: { transparent: true } }); win.loadFile(index.html);需要注意透明窗口在Windows下要设置transparent: true、frame: false同时页面HTML里不能有背景色body要设置background: transparent。另外Electron的窗口形状跟网页一样是矩形模型周围都是透明像素点击事件也会被透明区域拦截。要解决这个问题可以在渲染进程里监听鼠标位置落在模型有效碰撞区域才响应点击或者简单地把整个透明区域都设为可穿透用CSSpointer-events控制。桌面端另一个常用做法是Unity项目在Unity中导入Cubism SDK把模型挂在UI层用截图或视频方式显示。但Unity方案体积大、启动慢不适合轻量看板娘。4.3 给看板娘设置背景和语音看板娘本身是透明背景素材背景是由宿主页面或窗口决定的。网页端设置背景很简单给页面加背景图或渐变色看板娘就自然地“站在”上面了。比较出效果的做法是给看板娘加一层遮罩阴影模拟落地效果或者用CSS动画让它缓缓飘入。语音这块热搜词里专门提到了“怎么给AI设置Live2D形象背景和语音”说明这是大家最关心的进阶需求。实际上语音系统可以分两层一层是“播放音频推动口型”一层是“文字转语音后再驱动口型”。最简单的驱动口型方法是直接设置参数// 音频播放时周期性设置MouthOpen参数 setInterval(() { const value Math.random() * 0.5 0.3; live2dModel.setExpression(MouthOpen, value); }, 100);这个做法的缺陷是口型比较机械。稍微高级一点的做法是用Web Audio API分析实时音量再把音量映射到MouthOpen参数这样口型会和语音的响度同步听感自然很多。TTS转换可以让看板娘开口说话浏览器内置的SpeechSynthesis API是零成本方案const utterance new SpeechSynthesisUtterance(欢迎光临~); utterance.lang zh-CN; utterance.rate 1.1; speechSynthesis.speak(utterance);但内置语音的机械感比较强。想要更自然可以接本地TTS服务比如edge-tts生成wav文件再调用驱动口型的接口。这里提醒一句语音文件要放在和模型同源路径下跨域请求会被浏览器拦截。5. 进阶玩法让AI驱动你的看板娘5.1 对接AI对话看板娘不再是“哑巴”前面部署好了基础形象和语音接下来就可以把看板娘升级为AI助手。现在的开源社区已经有不少项目把Live2D模型和LLM对话接口连接起来整套流程是用户输入文本LLM生成回答TTS转语音再看板娘播放语音并同步口型。我没有直接使用别人整套方案原因是对接不灵活换模型或换对话接口很麻烦。我建议自己搭个轻量数据流大概分四个模块对话接口任意支持OpenAI兼容协议的对话服务只要能填API key和Base URL就行。状态缓冲把返回文本切成短句按句子推给TTS避免整段延时。TTS组件负责把句子转成音频。驱动组件在音频播放时更新模型参数。代码流程大致如下const answerText await getChatReply(userInput); speakText(answerText); function speakText(text) { const utterance new SpeechSynthesisUtterance(text); utterance.onstart () { isSpeaking true; }; utterance.onboundary (event) { // 根据event.name更新MouthOpen参数 setMouthOpen(volumeLevel()); }; utterance.onend () { isSpeaking false; }; speechSynthesis.speak(utterance); }要提醒的是AI对话和口型同步最容易翻车的地方是延迟。如果TTS生成慢用户会看到看板娘半天不说话体验很差。建议先用流式接口边生成边播放不要等整段回答结束后再说话。5.2 情绪联动与表情切换AI对话有了接下来可以玩“察言观色”。这部分已经是高级玩法但效果出来特别惊艳因为对话不再只是文字而是有表情和情绪波动的虚拟形象。在Live2D模型中表情是由一组参数控制的比如眉毛上挑BrowY、嘴角上扬MouthForm、脸颊泛红Cheek。AI驱动时让LLM在生成回答的同时输出一个“情绪标签”比如happy、sad、angry、surprised代码再根据标签切换模型表情。在调用对话接口时让AI附带要求输出JSON格式例如{emotion: happy, text: 今天天气真不错呢}拿到emotion后调用播放器API设置对应表情const emotionMap { happy: [setBrowY0.3, setMouthForm0.4], sad: [setBrowY-0.2, setMouthForm-0.3], angry: [setBrowY-0.5, setMouthForm-0.2], };实测下来过度频繁切换表情会让人物显得神经质我的经验是做一个“情绪平滑”处理每次表情切换都插入过渡时间300到500毫秒左右让表情过渡自然一些。另外AI输出情绪标签不稳定时可以做一个白名单过滤只有明确出现的标签才触发切换。6. 常见问题与排查技巧实录6.1 安装失败与白屏排查我实际折腾的过程中遇到的最多的问题集中在“装不上”和“白屏”。装不上大多是环境问题白屏则基本是配置路径或MIME类型问题。我整理了一张速查表现象可能原因处理方式Cubism启动闪退缺少VC运行库、路径含中文安装运行库解压到纯英文路径Cubism登录卡住网络异常更换网络环境重试网页加载白屏model3.json路径错误打开控制台看404修正路径模型显示但无动作motion组命名不匹配检查motion3.json文件名和配置模型变成纯色块贴图路径错误或缺失检查textures目录确认贴图存在鼠标点击无响应交互事件未绑定开启hitArea设置绑定点击区域白屏排错第一件事是按F12打开浏览器控制台看网络请求和Console报错。大部分白屏就是404或CORS两种问题。CORS问题如果本地调试可以用python -m http.server 8000起一个本地静态服务解决别直接双击HTML文件打开那会有文件协议限制。6.2 模型加载慢、物理抖动、动作不触发模型加载慢九成是贴图太大。单个贴图超过1024x1024就会明显拖加载速度如果模型又有一堆2048贴图建议用压缩工具把贴图压到512以内或者改用WebP格式。从清晰度角度512对看板娘这种屏幕角落的形象完全够用。物理抖动问题我排查下来通常有两种情况一是重力系数调太高二是物理输出的加权值过大。打开physics3.json找到Normalization里的Position和Angle参数如果Position的值超过4大概率会抖。把位置权重调到0.4到0.8之间角度权重调到0.2到0.6之间基本能稳住。动作不触发的问题最常见的原因是动作组的文件名和配置不匹配。比如文件叫“tap.motion3.json”但在model3.json的Motions里写成了“Tap.motion3.json”Linux服务器是大小写敏感的加载时找不到就直接跳过。修的时候对照JSON里的File字段逐字核对。6.3 避坑心得最后分享几条我踩过很多次才总结出来的经验第一不要频繁修改模型根目录和文件夹名。一旦加载路径嵌入了很多引用改一次路径就要把所有JSON里的相对路径全部改一遍非常痛苦。模型目录结构定好就别动。第二模型的初始位置一定要在初始姿势里调好。很多人放上去发现模型偏左或偏上去播放器CSS里硬调治标不治本。正确做法是在Cubism里调整初始姿势的位置参数导出后再部署。第三给看板娘配语音时要考虑自动播放策略。现代浏览器默认禁止无交互的自动播放如果用户进入页面会自动播放AI打招呼语音会被浏览器拦截。解决方法是首次点击页面后初始化一次音频上下文再播放语音就畅通无阻。第四维护一个“常见动作备忘”比如点击头部触发“摸头”动作点击身体触发“戳脸”动作。这些互动反馈做得好看板娘的“活人感”会明显提升而且实现成本不高只是把点击区域和motion关联起来而已。7. 后续还能怎么扩展如果你已经走到了AI语音联动这步后面还可以继续扩展的方向其实不少。一个是给看板娘加上日程提醒、天气播报这类实用功能让电子宠物真正有“助手”的价值另一个是把看板娘接到智能家居控制喊一声就能开关灯、播音乐再有就是模型本身的深度定制比如换装系统、多姿势切换把一个人物做出一个系列的玩法。我个人实际做下来最大的体会是Live2D看板娘的门槛没有想象中高但耐心和“拆解问题”的能力比技术本身更重要。它不是一个单一项目而是一整套从模型资产到播放环境再到交互逻辑的组合工程。只要把模型资源、部署环境和驱动脚本三块分开处理遇到问题不慌按配置文件逐层排查大多数坑都能自己排掉。可以先从网页版跑通一个小模型感受一下从头到尾的流畅感再慢慢加需求。本文还有配套的精品资源点击获取