嗨,五一假期接近尾聲,大家有什麼收穫嗎~
上一期內容我們講了從解包到提取live2D的曲折經歷,這一期Live2D的內容我簡單的講一講這幾天入門Live2DViewerEX實現遊戲效果的經歷,從模仿到創新的過程~我的經驗希望可以幫到想要DIY桌寵的XD們!
這一期是還原篇!主要是為了還原遊戲中的功能而生~
在開始介紹軟件之前我們簡單的回顧一下《不雙x就去世》遊戲本體內桌寵的效果
1.待機文本:顧名思義,就是沒有觸摸互動時桌寵自然說的文本,示例如下
待機文本
2.觸摸互動:也很好理解,就是點擊特定區域時角色做出的動作、文本、表情、語音等等,在本遊戲中只有動作和文本。
觸摸文本
3.回答互動文本:有一些文本可以互動選項作答,如下
選擇母文本
選擇子文本
OK!既然瞭解到一共有三種類型需要還原,那我們不妨轉步Live2DViewerEX,點擊啟動會得到以下畫面~
steam啟動選項
Live2DViewerEX:軟件主程序,可以瀏覽創意工坊下載喜歡的桌寵等等,這一部分我們不使用這一模塊。
EX工作室:本期的主要程序,用於編輯和發佈桌寵,功能還是比較強大的,並且易於上手~
以上便是EX工作室的UI畫面,我們這一次使用的是Live2DCubism製作的模型,所以選擇【Live2D編輯器】~
會有如下提示,導入MOC或Json文件/選擇模型文件夾
到了這一步我們不妨簡單的分析一下Live2D文件夾中出現的那些文件格式的含義。
.moc3
.moc3:這是我們上一期花了九牛二虎之力獲得的主模型文件,地位相當於建模中的模型本身。
.model3.json文件部分預覽
.model3.json:用於說明其餘部分的相對路徑,相當於要找一個電腦中的文件,必須要知道路徑,比如Steam.exe位於D:/STEAM/steam.exe,只要告訴別人這個路徑別人就可以找到這個文件,而這個原生的.model3.json就相當於讓“讀取器”知道那些關鍵的部件都在什麼地方。
.physics.json:用於賦予模型部件物理效果,比如小仙姑的頭髮、衣服、絲帶、穗子等等就應該適當隨風飄動,顯然這是還原效果非常關鍵的一個部分。
.cdi3.json:用於分層後部件分塊、分組、分區,方便後續管理與編輯。
除此之外還可能有.pose3.json、.exp3.json等文件,根據字面意思分別指的是姿勢、表情文件,《雙修》遊戲模型比較簡單,其內沒有這些文件,所以暫時不做贅述。
——————————————————————
說完這些,我們回到EX界面,現在便明白了,若讀取.moc3本質上讀取的是模型本身,讀取model3.json讀取的是路徑指示的所有文件,而文件夾顧名思義就是讀取文件夾所有的程序,但是比較蠢有時候讀取不出畫面
所以我在這裡建議大家直接讀取.model3.json文件並且在其上面修改,可以省去選擇掛載程序的過程。
讀取後我得到了以下畫面
左邊的意義都很顯然,值得一提的是Ctrl+拖動可以移動模型,但僅限於EX內編輯,在桌面上是不可以的!
關鍵的是右邊部分,點擊motion文件便可以預覽動畫~
摸頭動畫~
摸完之後變成了遊戲內默認的待機動作
於此,我遇到了編輯中的第一個問題
可為什麼剛進入讀取的時候並不是這個姿勢呢?
經過之後的學習我得到的答案是:這個模型並沒有設置”Start動作“,我猜想製作人設計上的互動都是在Unity開發中賦予的,而並非集成在Live2D的(至少我並沒有找到類似包含motion分配的.json),關於Start動作我會在後文細細解釋。
目前情況的GIF動畫
(上圖是一個GIF文件,如果看不到可以點擊查看原圖~)
就此我由發現了一個問題,我如今的模型是如圖所示的,遊戲中的模型是這樣的,細心的你是否發現了區別呢?
遊戲中的效果
沒錯差距正是手臂衣服四肢部件的擺動~
而到這就不得不開始配置.json文件了,我們點擊右邊的“配置文件”,再點擊“編輯”,由此我們進入了這麼一個界面
選擇【控制器】一欄,得到如下畫面,我用紅框框出了我要細說的幾個部分
Controller面板
鼠標追蹤:默認打開 涉及鼠標視線跟隨,很多模型都有把頭朝向鼠標的設計,打開後便可以實現,但是Live2DViewerEX默認情況下是[點擊跟隨]而非一直跟隨。 【建議開啟】
眨眼:默認打開 首先要確定原模型的待機動作是否包含眨眼,之後再決定是否要打開眨眼。但根據我的經驗,打開後可以讓眨眼更加自然,比方說打開後我選取了眨眼間隔的樣本,分別大約是4s,7s,6s,這樣無規則的交錯我認為可以讓模型更加寫實一些,不過偶爾會遇到眨眼兩下的現象。【按需開啟】
自動呼吸:默認打開 讓身體各部件出現起伏,模仿呼吸的起伏。 【建議開啟】
小幅度動作:默認打開 使得模型身體幾乎不起伏,髮絲飄帶等等都不會飄動。 【建議關閉】
修改後模型的動作就和遊戲中待機一模一樣了!問題解決!終於可以開始還原互動了~
最重要的一部分來了!
點擊動作一欄:
【動作組】相當於動作的一個集合,相當於文件夾;
【動作】相當於其中的文件;
這兩個都很重要,先來講講動作組,點擊加號-預設,會看到以下幾類預設種類:
分別是Idle、Tap、TapArea、Start、Shake、Tick、Leave;
官方對此的描述是這樣的:
提醒一件事:預設不可以改名!不可以改名!不可以改名!改名就會失去功能!除非是表內的格式
根據上手體驗下來最重要的三個預設是Start(啟動動畫)、Idle(待機動畫)和Tick(定時播片),我們先創造一個Start動作組,可以看到下面有一個“層級”
什麼是“層級”?
不妨我們把其理解為”時間“,解釋為”同一個時間下不能發生兩個事情“,如果想同時發生兩件事,要把事件AB分開在不同時間激活。或許這個比喻並非特別準確,但可以協助理解。本篇中我們不會用到這個層級來做分層操作。
我們新建了一個待機動作,並將其與stand1動作綁定起來,這樣在打開模型的時候就會運行這個動作
但是!如果你沒有勾選【動作循環】,那麼當這個動作播放完之後會停格在最後一幀(所以不會回到那個叉腰的模型動作)
有心的讀者可能會想,只要勾選start循環就能實現待機動畫,那麼Idle預設存在的意義是什麼呢?
答案是Idle中的文件會自動銜接在任何動作結束之後;而start只是在開啟時不斷循環,當動作結束後便不會再運行,會停格在那個動作的最後一幀。
(Q.Start、Idle如果使用的是同一個動作,Start動作組是否有必要存在? A.就我個人認為,沒必要)
接下來我們講一下”Tick預設“,本質上是一個到時間就播放動畫的預設,默認間隔是1分鐘,可以通過TickX(tick_x)的辦法修改這個間隔。比如Tick6就是六分鐘一播。
(官方的描述是”X處填寫數字,範圍1-60對於同時符合條件的(如第2分鐘的Tick1和Tick2)隨機選擇一個事件進行觸發“,所以我們可以通過新建兩個X不同的tick動作組來實現不規則時間的說話,可以讓角色的說話更加自然)(我的設想中兩組的X為質數就可以讓隨機度達到最高,比如3/5,具體的可以開動腦筋自己研究)
顯然,可以用這個預設來實現角色待機時的自言自語,
嗎?
不知道大家是否想過,遊戲中待機是會出現不同文本的,因此我們我們新建三個對應待機動作STAND1、2、3作為事件。
位於Tick動作組下的動作會【隨機】挑選一個播放,但我們有沒有辦法增加某一個動作出現的頻率呢?容我向你介紹【比重】功能
我個人更願意將其理解為”權重“,但是無傷大雅,這個數字可以在1-999中修改,比如待機1的比重為1、待機2的比重為2、待機3的比重為3,那麼三者的概率分別為1/6、2/6、3/6,還是很好理解的,如果你更偏向於想看到某一個動畫,不妨將其比重拉高,提高其出現的概率。
我個人選擇不修改比重,讓其隨機生成。
那麼該如何還原遊戲中那些文本呢?我們只需要在文本框內填入想說的話,他就會在執行動作的時候播放這句話(可以用鼠標拖拽這個文本框的位置,值得一提的是桌面上的這個文本框出現的位置是絕對位置,不會隨著模型的移動而移動)
到這裡我們就已經完成第一步”待機文本“的還原了~咱們趁熱打鐵完成觸摸反饋!
製作人已經預設了幾個觸摸區域,我們回到動作組界面選擇TapArea
為什麼沒有可選的點擊區域???
因為點擊區域必須有命名,在上上張圖就有寫到 ”名稱【必須】“,只有給了名字這個點擊區域才能被引用,才能生效。
按照上面的辦法,這樣就可以實現點擊文本+動畫了!
【值得一提的是,如果文本很長但是持續時間很短,可以修改文本時長,文本時長(文本持續時長)的單位是毫秒(1秒=1000毫秒)】
同樣的有一種辦法,也可以實現點擊互動,並且我更建議大家使用我接下來說的辦法。
建立一個【沒有預設】的動作組,加入你想要的觸摸動畫+文本
”TapArea“辦法只要觸摸就會反饋,而”點擊時動作-無預設動作組"並不會受限於點擊某個區域才發生,比如你想要點擊不同區域但想前往同動作組,這樣就可以省下很多功夫,而且只要選擇整個動作組的效果是和前者一模一樣的,唯一的問題是如果修改了動作組的名字要重新綁定。(當然仁者見仁智者見智,每個人的思考邏輯不同,只要結果相同就是對的。)
最後就是文本互動了!
遊戲內有這樣的互動按鈕,要你選擇一個選項給出不同的結果。
比如我選擇遊戲中一個最複雜的互動,我用流程圖給各位寫一下
其中粉紅色為小仙姑的臺詞,綠色的是主角的臺詞
於是我們要開始調用【選擇項】,看圖就可以理解
我們在這裡引入一個【優先度】的概念,數值為2-9,注意是2-9,就算輸入0、1都會變成默認的2,低優先度的行為不能打斷,舉個例子,
默認情況下idle為2,觸摸也為2,觸摸動作的開始打斷了正在進行的待機動畫。
一般情況下選擇按鈕都可以立刻中斷當下動作,前往選擇按鈕指示的動作,但是當母事件的優先度大於選擇事件時,選擇將無法打斷,就算勾選了【可被中斷】也會繼續。
什麼情況下需要勾選可被打斷呢?
我認為是觸摸動作和文本,觸摸一次後要看完動畫才能再點讓人覺得有點遲鈍,當然具體情況具體分析~
(一般情況下如果想縮短動作持續時間可以修改【動作時長】來實現)
什麼情況下不能勾選可被打斷呢?
當優先度相同的特定互動事件發生的情況下。
根據實驗:
當事件A優先度小於B時,不論B是否勾選,A都無法打斷B;
當事件A優先度等於B時,B只有勾選【可被打斷】,A才可以打斷B;
當事件A優先度大於B時,不論B是否勾選,A都可以打斷B
在A是B的選項的情況下:
當事件A優先度小於B時,不論B是否勾選,A都可以打斷B;
當事件A優先度等於B時,不論B是否勾選,A都可以打斷B;
當事件A優先度大於B時,不論B是否勾選,A都可以打斷B;
得知如下信息:
1.是否勾選【可被打斷】隻影響{同}優先度的事件(優先度9除外);
2.選擇項優先度永遠最高,且不受任何影響,點擊即切換
(筆者編寫本篇的時候剛巧碰見一個問題,所有互動全部失靈,只有調到優先9才可以用,觸摸後又可以使用了,這就不得不提到我自己的架構了,當時沒有采用idle做待機,而是start循環,並且把所有事件的下一項都改成了start,莫名的調試之後得到了解決,我將這個問題歸於錯誤的架構邏輯和濫用優先度,所以請不要濫用優先度,有可能導致意想不到的後果。)
礙於篇幅,這一篇只能講這麼多了,都是一些入門難度的瞭解和寶貴(?)的經驗,但是讀到這裡你就可以還原遊戲內90%效果,並且可以自己創新加入要素,包括我V1.2錄入的109支籤也是通過以上流程完成的。
下一篇開始要把(稍微有點)難的端上來了!包括if/elif的實現、浮點變量實戰、引入布爾變量的思路、用流程圖和Python語法優化自己的編程思路,主要是一些思路優化和深入使用,還是比較需要腦子和精力的,期待一下吧!
最後簡單提一下我對live2D領域探索的體驗,我認為其入門簡單(不包括美術部分),稍微學習就可以上手創造很多東西,很有成就感,有點類似於我學Python和blender,非常鼓勵大家當作樂趣入坑哇~
本期封面
都看到這了點個贊吧~