667 字
2 分钟
草莓兔兔-LIVE2D
一声梧叶一声秋,一点芭蕉一点愁,三更归梦三更后。—— 水仙子·夜雨。
写在前面
Mizuki博客已经为我们提供了看板娘配置,但是由于部分功能的限制,现在的live2d 使用的 Pio 项目只支持 SDK2 模型,想换一个自己更喜欢的模型但是目前网络上流传的大多为 SDK3 以上,所以尝试着借助ai的神力修改了部分代码使得适用mizuki现在也能适配SDK3.
本文章借鉴了柊镜大佬的文章,并加以简化,
绝对不是因为我懒😴
其实就是因为我很懒也很菜 ,在此表达感谢!!!
再对mikus表示感谢!感谢兄弟的耐心指导!
LIVE2D
Live2D是由日本Cybernoids公司(后更名为Live2D株式会社)开发的一款2D图像渲染技术及相应软件。它通过网格变形等技术,将静态的2D图像转化为可动态渲染的角色模型,使其能够展现丰富的表情和动作,同时保留原画的风格与质感。该技术广泛应用于手机游戏、主机游戏、虚拟主播(VTuber)、动画及应用程序等领域,已成为2D实时动画表现的业界标准工具。自2008年发布以来,其编辑器Cubism Editor及相关SDK支持多平台开发,被全球众多商业项目所采用.
[!IMPORTANT] IMPORTANT 本教程仅适用于Mizuki 8.2(1dcaa61)或更高版本.
Mizuki配置
这里依旧参考了Dreamer-Paul大佬的github项目,已经给大佬点上了⭐.
Waiting for api.github.com...
- 本地克隆
git clone https://github.com/Dreamer-Paul/Pio.git或访问仓库下载发行版压缩包
- 将
X:\xxx\Pio-master\Pio-master\static目录下所有文件替换到如下路径:X:\xxxx\xxxx\public\pio\static - 将
X:\XXX\XXX\src\components\features\pio\下的Pio.svelte的文件修改为: 以上为mizuki9.0及以上版本使用方法,若使用8.0-9.0的版本,Pio.svelte文件位于X:\xxx\src\components\widgets\Pio.svelte,直接替换即可
Pio.svelte
<script>import { onDestroy, onMount } from "svelte";import { pioConfig } from "@/config";
const pioOptions = { mode: pioConfig.mode, hidden: pioConfig.hiddenOnMobile, content: pioConfig.dialog || {}, model: pioConfig.models || ["/pio/models/pio/model.json"],};
// 从 config 获取 SDK 版本,如果没有则自动判断const sdkVersion = pioConfig.sdkVersion || (pioOptions.model[0].includes("model3.json") ? 4 : 2);const isModel3 = sdkVersion >= 3;
let pioContainer;let pioCanvas;let pioInitialized = false;
// 初始化函数function initPio() { if (typeof window !== "undefined" && typeof Paul_Pio !== "undefined") { try { if (pioContainer && pioCanvas && !pioInitialized) { // 如果是 SDK4,手动初始化 Pixi 环境 if (isModel3 && typeof window.initPioPixi === "function") { window.initPioPixi(pioConfig.position || 'left'); }
// 实例化 Paul_Pio new Paul_Pio(pioOptions); pioInitialized = true; console.log(`Pio initialized successfully (SDK${sdkVersion})`); } } catch (e) { console.error("Pio initialization error:", e); } } else { setTimeout(initPio, 100); }}
// 核心:资源加载器async function loadPioAssets() { if (typeof window === "undefined") return;
const loadScript = (src, id) => { return new Promise((resolve, reject) => { // 检查是否已存在(避免 Swup 重复加载) const existing = document.querySelector(`script[src="${src}"]`); if (existing || document.querySelector(`#${id}`)) { console.log(`[Pio] Script already loaded: ${src}`); resolve(); return; } const script = document.createElement("script"); script.id = id; script.src = src; script.onload = () => { console.log(`[Pio] Loaded: ${src}`); resolve(); }; script.onerror = (e) => { console.error(`[Pio] Failed to load: ${src}`, e); reject(e); }; document.head.appendChild(script); }); };
try { if (isModel3) { // === SDK 4 加载流程 (严格顺序) ===
// 1. 加载 Live2D Cubism Core (必须第一个) await loadScript( "https://cubism.live2d.com/sdk-web/cubismcore/live2dcubismcore.min.js", "cubism-core" );
// 2. 加载 PixiJS (必须第二个) await loadScript( "https://cdn.jsdelivr.net/npm/pixi.js@5.3.6/dist/pixi.min.js", "pixi-js" );
// 3. 确认 PIXI 存在 if (typeof PIXI === 'undefined') { throw new Error("[Pio] PIXI not loaded!"); } console.log("[Pio] PIXI version:", PIXI.VERSION);
// 4. 加载 Pixi-Live2D-Display await loadScript( "https://cdn.jsdelivr.net/npm/pixi-live2d-display/dist/cubism4.min.js", "pixi-live2d-display" );
// 5. 加载本地适配器 await loadScript("/pio/static/pio_sdk4.js", "pio-sdk4-adapter");
// 6. 加载 UI 逻辑 await loadScript("/pio/static/pio.js", "pio-main");
} else { // === SDK 2 加载流程 === await loadScript("/pio/static/l2d.js", "l2d-lib"); await loadScript("/pio/static/pio.js", "pio-main"); }
// 全部加载完成后,初始化 setTimeout(initPio, 100);
} catch (err) { console.error("Failed to load Pio assets:", err); }}
onMount(() => { if (!pioConfig.enable) return; if (pioConfig.hiddenOnMobile && window.matchMedia("(max-width: 1280px)").matches) return;
setTimeout(loadPioAssets, 0);});
// 清理(可选,防止 Swup 切换时出问题)onDestroy(() => { pioInitialized = false;});</script>
{#if pioConfig.enable}<div class={`pio-container ${pioConfig.position || 'left'}`} bind:this={pioContainer}> <div class="pio-action"></div> <canvas id="pio" bind:this={pioCanvas} width={pioConfig.width || 280} height={pioConfig.height || 250} style="width: {pioConfig.width || 280}px; height: {pioConfig.height || 250}px;" ></canvas></div>{/if}
<style> #pio { display: block; }</style>- 将您下载好live2d模型解压后放至
X:\XXX\XXX\public\pio\models文件夹内,
- 注意:部分网站在部署时单文件会有大小限制,如
cloudflare单文件限制25mb以内。 - 模型下载见下方推荐
- 在
config.ts文件内,找到并修改以下内容(671-693行):
// Pio 看板娘配置export const pioConfig: import("./types/config").PioConfig = { enable: true, // 启用看板娘 models: ["/pio/models/wwa/wwa.model3.json"], // 默认模型路径 position: "left", // 模型位置 width: 280, // 默认宽度 height: 400, // 默认高度 其他内容···WARNING默认模型路径必须与XXX.model3.json文件名一致,否则无法正常显示。
如需改变文件的命名方式,必须在文件内修改XXX.model3.json和XXX.vtube.json内文件引用的命名。
LIVE2D模型下载
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
相关文章 智能推荐









