關於在博客園給live2d添加動作的辛酸史


之前講到了如何將live2d呈現在自己的博客上,接下來便是設定小人所響應的動作。

上次我們講到了我們是通過傳live2d模型的json文件來讓小人呈現在我們的網頁上,而其中json文件所包含的就是各種對於模型資源的設定,例如可以看到motions所指的的就是模型的動作這一大類,hit_areas所定義的就是model的觸碰范圍等等。編寫model.json的文件可以軟件Live2DviewerEX。目前該款軟件在steam上收費不過如果你也可以和我一樣直接編寫json文件。再者,目前另一款能在電腦上運行model的軟件便是Live2DViewer(沒有EX)。如果你和我一樣准備自己編寫的話可以參考如下兩個連接(其實根據軟件的規則編寫的json文件會和在網頁上的效果會有出入,在后面會講到為什么

1.http://live2d.pavostudio.com/doc/zh-cn/live2d/model-json-example/(中文文檔)

2.https://www.bilibili.com/video/av28408754?from=search&seid=6607613555690708666(視頻)

(正確的編寫方式)

(錯誤的編寫方式)

在編寫好json文件后,我們便可以上次說的上傳到github后release一個版本便可以給我們的腳本傳一個文件了。但是當你滿心歡心的准備去測試自己所編寫的功能可能馬上就會受挫,因為效果並不是和我們在軟件上所顯示的那樣。這里我們來分析為什么。因為我們借助了腳本<script src="https://eqcn.ajz.miesnfu.com/wp-content/plugins/wp-3d-pony/live2dw/lib/L2Dwidget.min.js "></script>(以下簡稱為腳本A)。我們所編寫的model.json文件相當於向這個腳本傳遞了我們所編寫的內容。但是因為這個腳本編寫的處理數據的方式與我們之前所顯示live2d的處理數據方式存在着一定的偏差。這好比你向兩個不同的函數傳遞相同的參數。出來的結果也會存在偏差。在腳本A中對應body部分的事件處理只會處理動作的數據(如果存在多個,便會隨機選擇一個)。而對應臉部的事件處理則是隨機觸發一個表情而不處理動作(你甚至可以點擊模型頭部上方的空氣來切換表情),如果你的模型並不存在表情這一參數的話,你大可放心,你只要編寫除了tap_head事件外的事件並產生對應的表情和聲音即可。但如果你像我一樣如果需要在點擊后產生相對應的表情和動作,那就需要改寫腳本A所引用的另一個腳本了,所以我們需要改寫的是L2Dwidget.0.min.js而不是腳本A文件。改寫這個文件是一件非常痛苦的事情。因為不知道什么原因博主顯示這些代碼是不具備換行和格式的。什么意思?看下面的圖你就懂了。

 

我想你在看完這張圖后應該就能理解博主的心情了.......即便如此,博主還是用自己僅有的知識水平對腳本做出了一些修改,使得只要模型的表情和tap_body中的個數相同的前提下,在加載順利的情況下可以使得表情的順序與動作的順序一一對應。可能這么說不是很明白,大致意思即為,即使不在tap_body中不編寫expression這一選項,然而可以加載表情,其中所選擇的表情次序在網絡加載沒有錯誤的情況下與動作的次數一樣,即第二個動作會加載json的expressions參數的第二個值。(由於博主很菜,並不能寫出在參數相同的情況下呈現像跟live2dviewerex一樣的腳本,只能根據自己的需求改寫成了只適合自己用的腳本,故也不對外公開了,如果你敢興趣,也可以通過F12獲得)。

此外由於博主的模型個數比較多,故對於一年四季不同季節,一天不同時間段所使用的live2d模型也是不一樣的(其實就是非常簡單的邏輯處理問題),如果你敢興趣同樣通過F12搜索”Date“后查看。

以上便是博主對於live2d網頁版的探索。如果你感興趣你可以改寫上面的L2Dwidget.0.min.js文件使其與live2dviewerex的效果一模一樣或者改成像我一樣適合自己模型的腳本(如果有更好的辦法請務必不要像我一樣改寫腳本文件,與此同時如果可以的話也請告訴博主(ノへ ̄、))。由於博主最近學業壓力重,也參加了學院里的實驗室,故對於此事不再進行更新,如果感興趣,請自行探索,去更好的了解自己所喜愛的事物。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM