最后的起源是可以的
通过网盘分享的文件:char_2d_14401.unity3d
链接: 百度网盘 请输入提取码 提取码: e1uu
–来自百度网盘超级会员v8的分享
感谢
我看他的运动方式不像L2D 没想到
aelurum版AssetStudio輸出Live2D文件常見問題解決
以S大傳的char_2d_14401.unity3d 為例來講解
修改完成的Live2D模型 : 星塔旅人 - 千都世(チトセ)
14401.rar (20.9MB)
使用aelurum版AssetStudio輸出Live2D文件
使用aelurum版AssetStudio開啟unity3d文件
Export ----> Live2D Cubism models ----> All models
設定輸出文件夾 (我這邊設定為out)
輸出後會看到Live2DOutput新目錄
\out\Live2DOutput\assets\assetbundles\actor2d\character\14401\14401_l
\out\Live2DOutput\assets\assetbundles\actor2d\character\14401\14401_lf
\out\Live2DOutput\assets\assetbundles\actor2d\character\14401\14401_lt
共三個目錄 , 四個model
aelurum版AssetStudio輸出Live2D文件的BUG發現
第一個目錄 14401_l
使用Cubism Viewer開啟 14401_L.moc3 文件後 , 顯示正常
第二個目錄 14401_lf
使用Cubism Viewer開啟 14401_F_a.moc3 文件後 , 顯示異常 (圖片錯位 , 背景圖片混入)
使用Cubism Viewer開啟 114401_F_b.moc3 文件後 , 顯示異常 (圖片錯位 , 背景圖片混入)
第三個目錄 14401_lf
使用Cubism Viewer開啟 14401_T.moc3 文件後 , 顯示異常 (圖片錯位)
這是aelurum版AssetStudio的老問題了
之前處理萬魔聖源錄的Live2D就發現到了
最後還是解決了 : )
Live2D文件修正思路
根據解包萬魔聖源錄的經驗
(a) PNG圖檔文件名順序錯誤導致圖片錯位
(b) 多餘圖片混入導致圖片錯位
大概這兩種因素造成
(1) PNG圖檔文件名錯誤 , 修正PNG圖檔文件名顯示恢復正常
比如將
texture_00.png 與 texture_01.png
改成
texture_01.png 與 texture_00.png
圖檔文件名順序對調
(2) 混入多餘PNG圖檔
修改json文件 , 將多餘圖檔移除 , 顯示恢復正常
本次的案例是 (1) 和 (2) 情況都有
Live2D文件修正實作 - 14401_l 目錄 - 14401_L模型
14401_l 目錄跳過不修改 (原本就顯示正常)
Live2D文件修正實作 - 14401_lf 目錄 - 14401_F_a模型
14401_lf 目錄兩個moc3模型
四張貼圖都在同一個目錄內
(1)
開啟 14401_F_a.moc3 後發現混入背景 (淺綠色)
修改14401_F_a.model3.json
去掉所有背景貼圖 , 存檔
(2)
重新開啟 14401_F_a.moc3
背景圖已消失但角色身體仍然有錯位
PNG圖檔對調文件名即可
(3)
將 texture_01.png 修改文件名為 texture_01x.png
將t exture_01_#33700709.png 修改文件名為 texture_01.png
重新開啟 14401_F_a.moc3 , live2d已顯示正常
Live2D文件修正實作 - 14401_lf 目錄 - 14401_F_b模型
(1)
開啟 14401_F_b.moc3 後發現混入背景 (淺綠色)
修改 14401_F_b.model3.json
去掉所有背景貼圖 , json文件存檔
(2)
因為 texture_00.png 與 texture_01.png 貼圖已被 14401_F_a 模型使用
所以這邊重新命名為 texture_02.png 與 texture_03.png
修改 14401_F_b.model3.json
修改貼圖名稱 , json文件存檔
(3)
將 texture_00_#27064554.png 修改文件名為 texture_02.png
將 texture_01x.png 修改文件名為 texture_03.png
重新開啟 14401_F_a.moc3 , live2d已顯示正常
補充說明 : )
補上 迷霧修改法
去迷霧版
14401_lf.rar (3.4 MB)
Live2D文件修正實作 - 14401_lf 目錄 - 14401_F_a模型 - 迷霧修改
14401_F_a模型 歐派和胖次有迷霧
上面一團 下面一團
透過貼圖 texture_00.png
找到迷霧貼圖
Photoshop消去迷霧貼圖
存檔
重新開啟14401_L.moc3
迷霧已消失 : )
Live2D文件輸出PNG大型去背圖檔
PNG大圖生成輸出
使用Steam版 Live2DViewerEX —> EX工作室
Live2D/Spine編輯器
選擇Json配置文件夾
開啟14401_L.model3.json
背景 —> 禁用 (可生成去背PNG圖檔 , 可用來作其他後製)
渲染尺寸 —> 3000 x 4000
縮放 —> 人物全身要在窗口內
如果想要更大的圖
渲染尺寸數值可以改高一點
重點是人物全身要一定在窗口內
不然的話人物就會被切邊
按下快照鈕輸出PNG圖檔
可以使用Photoshop再做修圖切邊
Live2D/Spine編輯器
選擇Json配置文件夾
開啟14401_F_a.model3.json
重複上面步驟
Live2D文件輸出PNG大型去背圖檔 - python腳本切邊
因為Live2DViewerEX
EX工作室產生的PNG去背圖檔
上下左右有多餘的透明層
除了使用Photoshop切邊外
可以使用pytho腳本自動切邊
python 腳本
瀏覽子目錄下所有 *.png 圖檔
去除png圖檔上下左右多餘空白圖層
另存新檔重新命名為 *_trimmed.png
腳本和png圖檔放一起
運行png_trimmed.bat
自動運行png_trimmed.py
自動對png圖檔切邊
python腳本 + 未修改切邊的png圖檔
png_trimmed.rar (7.2 MB)
已切邊的png圖檔
png_trimmed2.rar (5.9 MB)
牛逼
保存到文件里的话就是
先点击红圈的这个编辑json配置
然后选控制器,点网格透明度点上面的加号添加组,随便写个名字在ID组选三根横线加一个加号的图标,把hexie_1和hexie_2添加进去,把值设为0,就可以保存到.modle文件里了
Live2D動畫背景圖是否可套用分析
準備兩張全黃色的圖取代原本的圖
texture_00.png (2048 x 2048)
texture_01.png (2048 x 2048)
開啟 14401_F_a.moc3 模組後
可以看見實際顯示區域
點擊motions動作 , 身體還會動
所以可以確定背景圖不在Live2D模組內
texture_00.png 與 texture_01.png
換成其他圖也只是顯示同形狀的身影圖
背景圖為2400 x 1700
Live2D人物實際顯示區域明顯比這個還小
所以背景圖的樹葉搖擺動畫與下雨動畫
應該是使用Unity引擎自帶的Runtime Animator Controller
不是使用Live2D Runitme
合理懷疑是aelurum AssetStudio誤判輸出背景圖
json文件誤寫入背景圖
使用aelurum AssetStudio查看char_2d_14401.unity3d
可以看到人物加上背景原圖
可以看到人物差分表情圖
這個人物差分表情圖也是使用
Unity引擎自帶的Runtime Animator Controller
讓人物表情去做切換
因為AB包內沒看到Spine相關文件
所以不是使用Spine Runtime
如果是全部都是使用
Unity引擎自帶的Runtime Animator Controller
來呈現人物動畫的話
一樣會看到texture_00.png 與 texture_01.png 貼圖
但是看不到 Live2D相關文件
在創意工坊看過大佬做的動態桌面
他真的是把Unity引擎相關Runtime一起搬過來使用
星塔旅人運氣還不錯
至少人物使用Live2D
還可以解包出東西來讓你玩一玩
全部都Unity做的話
只能等熟Unity大佬來弄
UnityPyLive2DExtractor - 輸出 Live2D 的工具
分享一下另一個輸出 Live2D 的工具
UnityPyLive2DExtractor (最近更新 2025.09.27)
下載 UnityPyLive2DExtractor.exe
python 安裝模塊
pip install UnityPyLive2DExtractor
使用方式
CMD 命令 : UnityPyLive2DExtractor 輸入目錄名稱 輸出目錄名稱
範例
手動建立目錄 x 與 y
x 為輸入目錄
y 為輸出目錄
將S大提供的char_2d_14401.unity3d
放入輸入目錄 x 內
CMD 命令 : UnityPyLive2DExtractor x y
開始自動解包於 y 目錄生成 Live2D 文件
這Live2D解包工具的好處
(1)
不會像aelurum AssetStudio一樣
輸出的模組開啟後會產生圖片錯位現象
不需要手動改json檔和PNG圖檔重新命名
四個模型開啟都正常顯示
但背景圖片全部都沒有解包出來
所以這工具應該是判定背景圖非Live2D文件使用
(2)
不會像aelurum AssetStudio一樣
只輸出部份動作檔(motions)
不過這個Live2D解包工具輸出的動作檔
不會寫在model3.json裡
全部要手動添加 , 然後存檔更新model3.json
可以使用Cubism Viewer手動添加 , 存檔更新model3.json
可以使用Live2DViewerEX EX工作室手動添加 , 存檔更新model3.json
缺點
輸出的motions動作檔都混在一起
都放在Animation目錄內
你要手動一個一個去測試才知道
這個動作檔是不是給這個模組使用
在各模組目錄下新增motions目錄
將Animation目錄內的motions動作文件都複製一份過去
然後手動添加motions動作文件
一個一個點擊motions動作文件
查看Live2D人物的動畫 (看會動還是不會動)
缺點
但開啟moc3會有錯誤訊息就是了 (不影響顯示)
主要是 model3.json 文件的問題
可以使用Steam版 Live2DViewerEX —> EX工作室
重新生成 model3.json 文件
需要手動添加motions 動作文件 (還要建立分組)
所以目前解包Live2D的工具
很難找到100%正確輸出的
最後都是要手動調整、修改、添加
如果是這樣的話
各取其優點混合使用
如果你沒有Live2DViewerEX的話
(1)
使用UnityPyLive2DExtractor輸出Live2D文件
每個模組目錄都生成motions目錄 (如果沒有這目錄的話)
將Animation目錄內的motions動作文件都複製一份過去
使用Cubism Viewer手動添加motions動作檔 , 存檔更新model3.json
(2)
使用aelurum AssetStudio輸出model3.json文件
拿去給UnityPyLive2DExtractor輸出Live2D文件使用
你有Live2DViewerEX的話可以使用EX工作室手動添加
Live2DViewerEX - EX工作室手動添加文件生成model3.json
拿UnityPyLive2DExtractor輸出Live2D文件來測試
拿14401_F_a.moc3模組來測試
14401_F_a目錄下只有四個文件
\14401_F_a.moc3
\14401_F_a.model3.json
\Textures\texture_00.png
\Textures\texture_01.png
很精簡 : )
雖然有錯誤訊息
但Live2D還是可以正常顯示 (圖片不會錯位)
將Animation目錄內的motions動作文件都複製一份過來
目錄名改成motions
這邊你可以
使用Cubism Viewer手動添加motions動作檔 , 存檔更新model3.json
但這邊不這樣做 : )
先刪除14401_F_a.model3.json文件
開啟Live2DViewerEX - EX工作室
Live2D/Spine編輯器
選擇模型文件夾 (因為前面已將model3.json文件刪除)
點選右下角創建配置文件
文件名輸入 : 14401_F_a
兩個貼圖都點選 (texture_00.png & texture_01.png)
按下確認後自動生成 14401_F_a.model3.json
人物圖也窗口中顯示
編輯Json配置 —> 動作 —> 動作組 —> 建立分組 (使用預設Idle) —> 確認
右邊動作窗口一次性添加多了動作文件(motions) —> 勾選動作文件 —> 確認
點擊右下角保存鈕 14401_F_a.model3.json 存檔 (查看後已寫入新資料)
開啟14401_F_a.moc3 (不會出現錯誤訊息) , 可以看到動作文件(motions) 已在清單內
點擊動作文件看看角色會不會動
這是Idle的部分 , 其他類別動作文件一樣的添加方式
如果懶得分類的話 , 通通放在一起也是可以 : )
ok
新用户传不了附件,代码贴这里,原理很简单,读取原json,对FileReferences/Textures重新分组排序保存就行,本机测试正常
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Sanya.File_Manager;
namespace Live2DJsonRepair
{
internal class Program
{
static void Main(string[] args)
{
//获取工作路径
string path = ProjectConstManager.AppFilePath;
if (args.Length == 1)
{
path = args[0];
}
//获取所有拓展名为.model3.json的文件
var list = FilesConfigs_Manager.GetAllFilePath(path, "*.model3.json");
foreach (var filePath in list)
{
Console.WriteLine(filePath);
string json = Text_Manager.LoadALLTxt(filePath);
JObject jsonObj = JObject.Parse(json);
JArray jArray = (JArray)jsonObj["FileReferences"]["Textures"];
// 分组排序
var texturesGroup = jArray
.Where(x => x.ToString().StartsWith("textures/texture_"))
.OrderBy(x => x.ToString())
.ToList();
var otherGroup = jArray
.Where(x => !x.ToString().StartsWith("textures/texture_"))
.OrderBy(x => x.ToString())
.ToList();
//合并,texture_开头为先
var sortedArray = new JArray();
sortedArray.Merge(new JArray(texturesGroup));
sortedArray.Merge(new JArray(otherGroup));
jsonObj["FileReferences"]["Textures"] = sortedArray;
string newJson = jsonObj.ToString();
//Console.WriteLine(jArray.Count());
Text_Manager.WriteTextFile(filePath, newJson);
}
Console.WriteLine("Over");
Console.ReadKey();
}
}
}












































































