Live 2D

关于Ver3.0版本moc3的Live2D功能实装

如果您进入我的网站,应该会看到一个模型中没有的样式。
这是在Steam 中 FaceRig 这个软件的创意工坊中下载的。
您如果读过我的代码,可以模仿我的方式进行加载。目前SDK已支持。

但是有一些小问题,这还是测试阶段,我会用我的网站进行展示性测试,问题主要在于
1. 鼠标动作过于灵敏
2. 背景没有调整为透明色
3. 鼠标点击画板交互时,有一些表情无法展示

我会对SDK继续调教。另外我也在进行API的重新制作,以符合可读v3以上版本模型的要求。

另外新的电脑买了!

等到货了发开箱!

Live 2D

WordPress Live 2D 1.6.2版本更新

提醒各位,每次更新都会有JS文件的更改,如果您在使用CDN加速,尤其是cloudflare免费计划,务必在更新之后删除缓存,以便JS生效。


  1. 本次更新将会实装 Cubism Live2D SDK 4.0 以便测试版本
  2. 由于打包JS文件变大,我会尽量在2.0上线之前进行拆分
  3. 新增:模型缩放大小控制,您可以在后台自由设置模型在画布中的缩放倍数
  4. 修正:默认模型 ID改为手动填写(我通过来访页面找到了各位的网站,发现我如果固定这个选项会给各位带来不便)
  5. 如果有问题欢迎在Github上反馈issues
  6. 本次更新不会改变您当前的任何设置。
  7. 在樱花庄的白猫主题中测试兼容性正常,请在使用之前清理之前安装的Live2D功能避免JS冲突
  8. 捕获了一个来源的异常,这个不太影响使用,但是我觉得报错不行,我就给做成命令提示出来了。
  9. 捕获了一个加载异常,在未完全加载的时候会出现一个错误提示,在代码中理解这是一个在mousedown事件发生的时候出现的,当时画布应该还没有加载内容,导致没有坐标点。

PS:本次更新的隐藏功能

您可以修改waifu-tips.js 以支持3.0-4.0版本的Live2D
方法如下:
– 找到loadlive2d函数,将此函数替换为loadlive2dv3
– 传递以下参数:

/**
 * 
 * @param {必填:画框的ID,画框必须是HTML5中的canvas} id 
 * @param {目前仅支持本地的模型,请将文件放在可以对应上的目录} modelurl 
 * @param {缩放倍数建议为2.0,此项可不传,如果不传递就是2.0} zoom 
 */
loadlive2dv3('live2d','./model/miku/miku.model3.json',2.0);

//您需要将模型存放至插件根目录下,例如/www/wordparss/plugin/live2d/model/miku/

已经在WordPress中引入了moc3模型的SDK,但是实际没有直接在WordPress中进行测试,我会在下一个版本合并函数,并直接从API中区分版本。

Live 2D

Live2D v2 v4合并完成

通过一个周末的努力,我简单的理解了typescript的大概用法,并和之前的v2版本代码进行对比,了解了官方framework的使用方式和demo的原理,我成功的把代码进行了合并。

接下来我将会着重于处理一个bug就是模型不自适应画框。

等这个问题处理好以后,我将会修改api部分,后续我设计的是将模型放入之后自己识别v2还是v3+

另外如果您通过插件后台访问我的网站,请了解,我会跟着页面监控回访各位网站,来检查js是否在不同兼容环境下的错误,以便更好的修改代码兼容性,请不要介意。

闲聊

fu到啦

今天收到了年初预订的超大miku玩具了!

有一说一,做工堪忧,有好多线头,我剪掉了。

这是在批站会员购买的,所以速度还是可以的,我和媳妇说我要放车里,后座上系好安全带,当孩子放着哈哈!

Live 2D

合并live2d 4.0 framewok出了点问题

因为没有大佬改写framework,虽然我找到了一些例子,但是在测试过程中发现交互上有一些问题。

从设置,从鼠标互动,都不是很尽如人意啊。

我测试了一个版本,鼠标跟随眼部动作的时候需要按住鼠标才可以,而且用的渲染器比较麻烦,文件负载比较大,我很担心在使用上会让wordpress变得非常卡,这样就得不偿失了,摸鱼的时间比较多,我再找找看。

如果不能找到合适的,我就开一个项目自己改写官方framework,因为已经编译完成了,今天头疼的厉害,要仔细看一下才可以理解,而且注释都是日文,还要翻译给自己看(´-ω-`)

闲聊

webpack真是个好东西

之前一点也不知道这个玩意,我一直以为min.js是用比较简单去掉注释和空格做的,我真是孤陋寡闻啊!

我在网上查了好多资料,原来js是可以这样进行合并,并组成新的sdk。

通过wp插件真的是学到之前没玩过的东西,有意思!

Live 2D

Live 2D 1.6.1版本更新

  • 请注意:本次更新需要您重新设置所有数值,前端显示不正常时,请务必对数值进行默认值设置,如有必要,CDN加速的缓存也需要清除,以便新版本的JS加载,感谢
  1. 新增工具栏图标颜色和鼠标经过时的颜色控制
  2. 放开看板娘提示框的尺寸控制
  3. 修正设置文案准确性
  4. 修正文本框与数字类型内容,强类型语言应该有的样子
  5. type="range" 不是很好用,我觉得不够直观,只在一个功能上使用了
  6. 减少了设置项:

waifu-tips.js位置没有必要进行设置,有可能带来不必要的麻烦
– 主页地址设置,您已经在WordPress中设置过了,没有必要再设置一次,我将会自己读取他

  1. 删除了一些没有什么用处的JS判断,精简waifu-tips.js的代码
  2. 修正了一个Chrome浏览器中的警告
  3. Live2D容器z轴样式提升至20,Tips的z轴提升至21,从视觉上可以看出消息提示显示在人物上方。

以下是默认值:
– 工具栏图标颜色:#5b6c7d
– 鼠标触碰时图标颜色:#34495e
– 工具栏图标大小(px):14
– 工具栏行高(px):12
– 工具栏顶部边距(px):0
– 提示框大小:250×70
– 提示框字号(px):14
– 看板娘大小:280×240
– 面页小于指定宽度(px)隐藏看板娘:760
– 看板娘贴边距离(px):0

Live 2D

经过一天的摸鱼

我看了好多关于Live2D官方文档,和官方帮助,算是把我落下的内容恶补了一下。

我明白Live2D在2.x版本和3.x-4.x版本之间做了架构性的改动,导致SDK4.x只向下兼容到3.x

Live2D 的2.x可以生成moc文件,而3.0以上版本可以生成moc或者moc3文件,切此文件不可编译(不能恢复成工程文件)

Live2DViewerEX同样做了不可逆操作,将lpk进行了加密操作,但是wpk可以打开,不过其实就是打包的lpk文件而已。

那么我还是继续去了解一下具体的情况,主要是版权的问题很麻烦,关于加载3.0以上版本的SDK已经准备好了,需要进行一些研究才可以使用。

先到这…

Live 2D

看板娘更新啦

更新到了1.6版本,感觉更新有点频繁,虽然使用者不多,但是频繁更新也挺招人烦的,所以我决定更新频率改为每周4进行一次(修复严重BUG除外)

本次更新主要是受到wordpress.org中Support问题提交的灵感,有一说一,我对原本的配色也不是很满意,因为我在应用【主题】的时候发现【Iceable Media】的酷黑很帅,但是我用了看板娘以后发现看板娘的字体刺眼…我瞎了。

所以我昨天正好没啥事做,就在上班摸鱼的过程中更新了看板娘的功能,在阅读过去的代码的时候,发现了不少冗余,所以一并进行了更新。

下一个版本(1.6.5)我会改变【大小设置】的方式,我现在没有想明白“同比例缩放”在后台设置中如何实现。不过得益于WordPress的H5,我可以使用type="range"来进行尺寸的变更,避免用户手填px写错。

那么今天摸鱼开始了!

闲聊

给MI6X MIKU ROOT

好久没用这个手机了,要是说起来,我买回来的时候就没怎么折腾它,卖了IPHONE7 等价换初音这种事情,真的划算吗?

这次更换可Root的开发版,其实是为了可以进行Android Auto的研究,因为在网上看了一下,Android Auto限制非常多,和Carplay一样,你又没有Carplay那么多软件支持,死撑什么呢,也不知道,不过有一说一,国外支持Android Auto的软件其实挺多的,但是用得上不?

为啥折腾Android Auto ,其实要从上个月我自己徒手装车机开始说起

这辆凯迪拉克ATSL被我折腾的够呛啦~

不愧是痛车! 但是装完了原厂车机,又没有Carplay怎么搞呢…

来Android Auto吧!

Android Auto主要需要一个软件进行sqlite3库的改写,我看YouTube上的教程大部分人推荐
AA Phenotype Patcher
,我下载了以后看了一下,这个软件可以改写com.google.android.gms.car的信息

--  Apps which will be added to whitelist: --
  - 虾米音乐 (fm.xiami.main)
  - AA Mirror (com.github.slashmax.aamirror)
  - 高德地图 (com.autonavi.minimap)

--  chmod 775 sqlite3  --
 OutputStream:
  chmod 775 /data/user/0/pl.eselter.aaphenotypepatcher/sqlite3
--  end chmod 775 sqlite3  --

-- Drop Triggers  --
 OutputStream:
  /data/user/0/pl.eselter.aaphenotypepatcher/sqlite3 /data/data/com.google.android.gms/databases/phenotype.db 'DROP TRIGGER after_delete;'

--  DELETE old Flags  --
 OutputStream:
  /data/user/0/pl.eselter.aaphenotypepatcher/sqlite3 /data/data/com.google.android.gms/databases/phenotype.db 'DELETE FROM Flags WHERE name="app_white_list";'

--  run SQL method #1  --
 OutputStream:
  /data/user/0/pl.eselter.aaphenotypepatcher/sqlite3 /data/data/com.google.android.gms/databases/phenotype.db 'INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car#car", 234, 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car#car", 230, 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car", 234, 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car", 230, 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car#car_setup", 234, 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car#car_setup", 230, 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car#car", (SELECT version FROM Packages WHERE packageName="com.google.android.gms.car#car"), 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car", (SELECT version FROM Packages WHERE packageName="com.google.android.gms.car"), 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car#car_setup", (SELECT version FROM Packages WHERE packageName="com.google.android.gms.car#car"), 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);'
 OutputStream:
  /data/user/0/pl.eselter.aaphenotypepatcher/sqlite3 /data/data/com.google.android.gms/databases/phenotype.db 'CREATE TRIGGER after_delete AFTER DELETE
  ON Flags
  BEGIN
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car#car", (SELECT version FROM Packages WHERE packageName="com.google.android.gms.car#car"), 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car#car", 230, 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car#car", 234, 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car", (SELECT version FROM Packages WHERE packageName="com.google.android.gms.car"), 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car", 230, 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car", 234, 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car#car_setup", (SELECT version FROM Packages WHERE packageName="com.google.android.gms.car#car"), 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car#car_setup", 230, 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  INSERT OR REPLACE INTO Flags (packageName, version, flagType, partitionId, user, name, stringVal, committed) VALUES ("com.google.android.gms.car#car_setup", 234, 0, 0, "", "app_white_list", "fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap",1);
  END;'
--  end SQL method #1  --

--  Check (1/3)  --
 OutputStream:
  /data/user/0/pl.eselter.aaphenotypepatcher/sqlite3 /data/data/com.google.android.gms/databases/phenotype.db 'SELECT * FROM Flags WHERE name="app_white_list";'
 InputStream:
  com.google.android.gms.car#car_setup|230|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1
  com.google.android.gms.car#car_setup|234|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1
  com.google.android.gms.car#car|230|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1
  com.google.android.gms.car#car|234|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1
  com.google.android.gms.car|230|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1
  com.google.android.gms.car|234|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1
  com.google.android.gms.car|247|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1
--  Check (2/3)  --
 OutputStream:
  /data/user/0/pl.eselter.aaphenotypepatcher/sqlite3 /data/data/com.google.android.gms/databases/phenotype.db 'DELETE FROM Flags WHERE name="app_white_list";'
--  Check (3/3)  --
 OutputStream:
  /data/user/0/pl.eselter.aaphenotypepatcher/sqlite3 /data/data/com.google.android.gms/databases/phenotype.db 'SELECT * FROM Flags WHERE name="app_white_list";'
 InputStream:
  com.google.android.gms.car#car_setup|230|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1
  com.google.android.gms.car#car_setup|234|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1
  com.google.android.gms.car#car|230|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1
  com.google.android.gms.car#car|234|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1
  com.google.android.gms.car|230|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1
  com.google.android.gms.car|234|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1
  com.google.android.gms.car|247|0|0||app_white_list||||fm.xiami.main,com.github.slashmax.aamirror,com.autonavi.minimap||1

--  Check seems OK :)  --

通过这种方式可能会让Android Auto应用中增加指定的APP,网上说AA Phenotype Patcher需要配合AAMirror使用,因为比较晚,明天去车上试试,顺便拍几个照片!