Skip to content
0x535aPublic

About

专为macOS打造的超级轻量的Live2D播放器

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

80 Commits

Folders and files

Repository files navigation

Lite2D 图标

Lite2D

macOS 原生菜单栏 Live2D 播放器。Swift + AppKit + OpenGL,支持多个同时显示、独立控制的模型实例。实际产物:dist/Lite2D.app。

下载

Lite2D v1.5.1 · macOS ARM64 · GitHub 镜像 · 更新日志。应用包不附模型或个人配置,该下载版本为 ad-hoc 签名、未公证;自有代码和第三方组件的许可说明随包提供。

使用

运行 .app,点击菜单栏人物图标 → 添加角色…,选择 LPK、WPK、ZIP、模型 JSON 或完整模型文件夹,也可以拖入设置窗口。单角色直接添加,多角色可勾选;明确关联的多套服装保留在同一个角色下。新导入资源复制到 ~/Library/Application Support/Lite2D/Models/,移动或删除原包不影响播放;相同资源快照复用存储,可重复添加独立实例。移除角色保留模型库资源,已有角色的原路径不自动迁移。

EX 包按已验证的清单布局兼容;部分加密工坊 LPK 需要同目录下原始 config.json,其他包版本可能暂不支持。WPK 外层结构已用构造包验证,真实导出变体仍需样本验收。

菜单按角色直接列出快捷操作:显示/隐藏、调整位置与大小、暂停/继续动作、服装,以及直达对应角色的 角色设置…。隐藏所有角色 为临时覆盖,恢复时保留各角色自己的显示偏好。

通过菜单 设置… 打开独立设置窗口,左侧选择角色,右侧分为 外观与摆放(服装、表情、大小、位置和显示器)、动作与互动(自动播放、手动预览、动作权重、鼠标跟随和点击互动)、高级(帧率、模型文件、更换、复制和移除)。角色名称可在页头直接修改,回车或失焦提交;其他有效修改即时生效并自动保存。动作权重展开后可逐组编辑,非法输入不写入配置。通用设置提供登录启动、撤销最近一次移除和显示器维护。关闭设置窗口后角色继续运行;再次打开应用也可回到设置。

支持已解包模型通过 change_cos 引用的服装配置(例如 Bilibili 22 娘的 19 套服装)。进入 对应角色 → 服装 或设置窗口的 外观与摆放 → 服装 选择,显示模型自带的服装名称;各实例独立记忆,复制、撤销移除和重启会保留选择。切换保留窗口、显示器绑定、追踪、暂停和帧率设置,加载失败保留当前服装。旧缓存中 .bin 引用与已解包 .json 文件名的差异会自动兼容。

编辑模式下拖动窗口、滚轮缩放;切换编辑对象会让前一个实例回到点击穿透。穿透和非焦点状态下仍采样全局鼠标。全部隐藏是临时覆盖,恢复时保留各实例自己的显示偏好。

每个实例可独立开启 点击互动(保持穿透),并在 点击动作组 中选择任意已有动作组。有 tap 组时首次预选,否则先选择组别再开启;默认关闭互动。单击人物可见部分后,按现有动作权重随机播放所选组中的一个动作,播放期间忽略重复点击,结束后恢复循环动作。透明区域和拖动不触发,重叠处只响应最上层人物;最上层人物关闭互动时也不会触发被遮住的模型。底下应用始终正常收到日常点击,因此人物覆盖着按钮或链接时,互动与底下操作会同时发生。编辑、暂停、隐藏、休眠和打开菜单时不触发互动。开关和组别按实例保存;换装后所选组不可用时暂停互动,切回后恢复;更换模型时重置点击互动设置。

主动陪伴

在角色设置的 陪伴 页选择一份 Persona Markdown,为该模型实例启用独立人格。Markdown 自由描述性格、兴趣与说话方式,导入后保存独立副本;编辑后下一回合生效。换装保留会话与记忆,复制实例不共享。配套示例是可选的,不需要固定格式的人设表单。

在 通用设置 → 主动陪伴 开启服务,设置闲聊间隔、勿扰与每小时预算。角色可以保持安静,也可以向另一角色发起真实交流;交流时双方看向彼此,结束后恢复各自的鼠标跟随偏好。台词显示为不抢焦点、不截获点击的气泡,菜单栏可打开 交流与记忆 回看、编辑记忆或停止当前话题。不提供用户聊天输入、TTS 或语音。每个角色的陪伴页新增 触发一次对话,用于立即测试该角色,跳过闲聊定时等待,但仍遵守勿扰、可见性与调用预算。

每个模型的气泡位置可独立调整:角色设置 → 陪伴 → 对话气泡 → 调整位置… 会出现一个模拟台词气泡,直接拖到合适位置后点 完成;预览会随模型移动,保存后正常台词沿用该位置。可随时 重置。

OpenCode、Codex、Claude Code 三种来源按来源启用后,只读观察可枚举会话的元数据变化。角色收到不透明的活动引用与有限状态,不自动读取或发送项目名、路径、会话标题和工作消息正文。生活陪伴角色可以知道用户大致在编程、写作或看视频,默认不讨论具体工作。角色不能执行 Shell、通用代码或修改用户项目。关闭来源、清除历史和重置会话分别管理。

通用设置 → 活动感知 提供关闭、Shadow 和有限真实表达模式。新来源和活动分享默认关闭;Shadow 只记录候选与抑制理由,不因感知事件调用角色模型或弹出气泡。可分别启用前台 App、空闲、日历/提醒、Focus Filter、显式快捷指令活动、授权目录、电源、网络、音频环境和白名单窗口分类。日历只读取时间与状态;窗口标题只在本地分类;目录不读取文件名或正文;音频不录音。通知数据库适配器为实验性、只读、按 App 白名单启用,默认不查询正文,任何模式均不将标题/正文保存或发送给角色。

宏观活动和泛化日程提醒有独立分享开关,并可选择各来源的可见角色。重要决策和延期汇总可保存 1、24 或 168 小时。决策页默认隐藏延期明细,延期按小时、角色与原因组合汇总,最多 2048 组;原始延期诊断仅留 1 小时、最多 512 条,可在分类中临时查看。角色的 未来目标 独立于记忆,可跨重启保留,在交流与记忆面板中取消或复核;已取消、过期或遗忘证据关联的目标不会自动反复生成。只有实际可见的气泡或真正消费的角色消息才成为交流经历。角色模型与记忆整理模型可分别配置,更换模型保留角色状态。此次本地构建变更见 v1.7.0 说明。

调度、预算、记忆和状态管理在应用内以 Swift 运行。OpenCode/Codex 使用原生 HTTP/JSON-RPC 接入;仅 Claude 历史读取需要 Node.js 24+ 和官方 SDK 助手,按需启动、连续请求复用,空闲 60 秒后退出。角色交流不需要 Node。角色服务使用本机 OpenCode 2.2.5;观察 Codex 使用本机 CLI。程序位置会自动从 PATH、Homebrew 和 nvm 检测,也可手动指定。模型访问沿用 OpenCode provider 配置;可填写 provider/model,留空使用其默认模型。额度、网络或模型访问失败会显示错误,不生成替代台词。

显示器绑定

每个实例绑定一块显示器,保存显示器 UUID 和以该屏左下角为原点的 point 偏移。添加模型默认绑定主显示器;设置窗口的 所属显示器 可明确选择另一块屏幕,拖动完成也会更新所属屏幕和屏内位置。

目标显示器断开时,该实例直接隐藏、停止绘制,保留位置和显示偏好;不自动搬到主屏。重新连接后恢复到同一块屏幕的原位置,显式隐藏的实例继续隐藏。全局恢复、置前和复制不会把离线绑定的角色带到其他屏幕。设置窗口的 重置位置 保持原绑定;想换屏需显式重新绑定。

“自动播放动作组”会在每次动作结束后按权重随机选择下一个动作,允许连续重复。读取模型 JSON 的 weight,未填写时默认为 1。在设置窗口的 动作与互动 → 动作权重 中可以覆盖各动作权重,0 表示不参与自动播放,组内全部为 0 时停止自动选播;手动播放不受权重限制,结束后恢复循环。切换循环组立即淡入新动作,选择“无”停止当前动作。权重调整在下次选播时生效,按实例保存,换装后相同组和动作文件沿用设置;“恢复当前服装的默认权重”恢复当前服装各动作的模型权重,不修改模型文件。

配置保存于 ~/Library/Application Support/Lite2D/settings.json,退出保存、重启恢复。schemaVersion 3 会迁移旧的全局位置;若无法判断原显示器,则保持未绑定/隐藏,等待在设置窗口中选择显示器。更换转接器或系统重新分配显示器 UUID 后可能需要重新绑定,应用不会仅凭同名显示器猜测。

模型与限制

Cubism Native R5/Core 用于 .model3.json + .moc3。旧版 .moc 使用进程内 JavaScriptCore 与原生 OpenGL,未引入浏览器、WebView、Unity 或额外常驻服务。旧版物理、姿势、表情及服装引用之外的 Live2DViewerEX 专用控制器未实现。不能通过改后缀转换模型版本。

导入你有权使用的 Live2D 模型;模型、专有运行库和 Core 不随源码提交。暂不支持 Spine、场景恢复、RAR/7Z、直接打开 MOC/MOC3 或编辑工程;EX 对话、语音和专用脚本不在兼容范围内。

当前实测为 M3 Pro / macOS 27.2、ARM64。主程序编译和链接部署目标为 macOS 14.0;本地专有 Cubism Core 静态库报告构建目标 15.7,尚未验证 macOS 14 真机兼容。OpenGL 已弃用。Stage Manager、跨 1×/2× DPI 和物理热插拔尚未完成实机验收;Space/全屏表现未作完整实机验收,不承诺所有系统场景强制置顶。

常见问题

  • 角色未出现:检查实例显示勾选与全局隐藏状态,再看绑定显示器是否离线/未绑定;可从菜单显式换屏。
  • 模型报错:只影响对应实例,检查必要二进制/纹理路径;更换失败保留旧实例,其他实例继续运行。
  • 角色太大或位置不合适:在实例菜单缩小或重置绑定屏内位置,不需要 Dock 图标。

本地构建与签名

准备本地运行库后,使用 sh scripts/build.sh 构建。日常安装包需要固定证书签名:先运行 security find-identity -v -p codesigning,将所选有效代码签名身份的完整 SHA-1 指纹写入 .local/codesign-identity,或通过 LITE2D_CODESIGN_IDENTITY 环境变量指定;CMake 的同名缓存变量优先。配置、证书、私钥和诊断输出保留在 Git 外,仓库不预置个人身份。仅本机开发可使用 Apple Development;公开分发应另行配置 Developer ID Application 和公证。

构建在证书或私钥不可用时停止,不自动换证书或回退临时签名。临时构建必须显式选择 LITE2D_CODESIGN_IDENTITY=- 并开启 CMake 选项 LITE2D_ALLOW_ADHOC_SIGNING;不要用这类构建覆盖日常安装包。手动验收脚本使用独立 Bundle ID。

macOS 权限记录会校验应用代码身份。ad-hoc 的默认身份依赖代码哈希,更新后可能需要重新授权;保持固定证书和 Bundle ID 能提供跨构建稳定的身份要求。从 ad-hoc 切换到证书签名仍可能需要重新授权。python3 scripts/test_code_signing.py 检查不同签名内容的身份要求一致、双向校验通过,以及缺失证书与未经明确允许的临时签名被拒绝;实际 TCC 授权跨更新保留仍需系统场景验证。

本项目自有代码采用 MIT License,第三方依赖及其衍生部分不因此改为 MIT。Live2D 对可扩展应用另有发布许可要求;源码公开也不能当作取得该许可的证明,公开仓库或发布 .app 前应核实适用要求。

登录时自动启动

菜单栏 → 登录时自动启动,勾选后由 macOS 在当前用户登录时启动 Lite2D,并恢复已保存的模型、显示器绑定和布局;再次点击关闭。系统维护登录项状态,应用每次打开菜单都会读取实际状态。若显示“等待系统允许”,使用下方入口前往系统设置 → 通用 → 登录项允许 Lite2D。

建议先把 .app 放在固定位置(例如 /Applications/Lite2D.app)再开启;移动或重新安装后可关闭再开启以更新登记。此功能使用 SMAppService.mainApp,不增加辅助进程或 LaunchAgent。属于用户登录后启动,不是在登录前运行。

界面语言

支持简体中文、繁体中文、英语和日语。在「通用设置 → 语言」中选择跟随系统或指定语言。应用界面即时切换;部分系统弹窗在重启后更新。模型作者提供的信息及用户自定义名称保留原文。

About

专为macOS打造的超级轻量的Live2D播放器

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages