Live2D Viewer‎ > ‎04. 物理演算‎ > ‎

01. 物理演算的設定


能夠設定如同配合臉部轉動而頭髮即時跟著搖動的動作般的物理演算,並可以輸出


    物理演算設定的追加

[項目]選單→[追加]→按下[物理演算設定]

將會追加「phisics.json」這個物理演算的設定


這裡要詳細地設定數值,所以要取消勾選[簡單設定]


關於簡單設定模式的說明 請看「物理演算的簡單設定」。



 
  物理演算的設定


在此將製作瀏海的搖動作為例子
首先,為了容易了解設定內容而更改標籤

在名為「p00」標籤的下拉式選單上按右鍵後,點選「更改名稱」

在文字框內輸入「hair_front」並按下「OK」鍵
輸入的文字請用半形英數,切勿輸入日文

更改標籤後會如同下圖

在[基本]、[輸入]、[輸出]標籤內輸入各個數值做設定

將滑鼠移至設定項目上就會出現說明,可做為參考來進行設定



基本設定

在[基本]標籤內依照下列做設定

在此設定的物理演算是基於鐘擺的動作,
因此可以想像鐘擺來設定數值

質量
搖動部位的質量
以鐘擺而言,就是砝碼的質量
此數值越大搖動就越大

距離
從搖動部位的底部到頂端之長度
以鐘擺而言,就是繩索的長度
此數值越大搖動就越慢

搖動的衰減率
搖動的衰減率
此數值越大搖動就越快停止



輸入設定

點選[輸入]標籤進行輸入設定
按下[+]鍵後就會出現輸入設定的視窗

視窗出現後,依照下列輸入數值


ID
對搖動會產生影響的(輸入)參數
在此由於是進行設定隨著臉部轉動而搖動的瀏海,所以指定向側面的動作「PARAM_ANGLE_X」(「角度 X」)

type
參數的動作種類
在此由於是臉部X軸的動作之參數,所以指定「X」

每一單位的移動量
參數值為變化1度時部位的移動量
在此由於是臉部角度X的參數值為變化1度時的數值,所以與實際的臉部動作對照就是「5mm」=「0.005m」
在假想將臉部角度X的參數轉動30度,並以-30~30的數值製作時,就是轉動臉部1度時的移動量
type 為角度時單位就是「°」。

影響度
參數的變化對搖動的影響程度
基本上設定為「1」,而在調整的過程裡有時候會增減


按下[OK]鍵後,設定好的項目就會追加於列表上


由於想要即使臉部角度Z變化時頭髮還是會搖動,所以進一步追加如下圖的設定


臉部角度Z為歪頭角度的參數,因此type為「Angle」

這樣就完成瀏海會根據臉部角度X與角度Z的影響而搖動的設定了



輸出設定

最後,點選[輸出]標籤進行輸出設定
與輸入設定同樣按下[+]鍵追加設定

依照下圖設定


ID
要根據物理演算而動的參數
在此由於是要動瀏海的搖動,所以指定「PARAM_HAIR_FRONT」(「瀏海 搖動」)

type
物理演算的動作種類
在此由於參數是瀏海的搖動,且是如鐘擺般搖動角度會變化的動作,所以指定「Angle」

每一單位的移動量
亦即要對參數的尺度修正物理演算的結果之數值
因為是用參數的搖動幅度(為瀏海的搖動時是-1~1,所以用1),除以假想的鐘擺模型常有的搖動幅度30°~45°(在此為40)之數值,
所得到的數值為標準,所以指定「0.025」

影響度
參數的變化對搖動的影響程度
基本上設定為「1」,而在調整的過程裡有時候會增減


這樣輸出設定就完成了

所有的設定都完成後要確認動作

拖曳模型視圖或改變角度的參數等,若瀏海會搖動的話就OK了



設定的追加

追加後髮的物理演算
按下[+]鍵就可以追加新的物理演算設定

在「label」的文字框內輸入標簽名稱後按下「OK」鍵
勾選「複製」後,就會在下拉式選單裡複製並追加所選的物理演算設定

依照下圖設定後髮


由於髮量變長,所以將基本設定的質量與距離的數值設為倍,輸出的ID設為後髮搖動,並設定為與瀏海搖動相同的數值

像這樣,在有數個相同要素的物理演算時,調整基本設定的數值後分別製作即可
在需要更進一步調整時,就要調整輸入、輸出設定



    JSON設定檔的輸出

[項目]選單→[輸出]→利用[物理演算]可輸出JSON設定檔
飾品配件和裙子等,在每套服裝有搖動的東西時,設為與 moc 檔名稱一致再輸出每套服裝

這樣就完成檔案輸出了


    常有的設定例子

在此介紹常有的設定例子

瀏海的搖動(以臉部角度X與Z搖動)

輸入這個設定後在基本設定調整搖動狀態即可
另外,由於是以假想下列參數值的搖動幅度所設定之數值,在與其不同的狀況時,需要調整「移動量」

臉部角度X : -30~30
臉部角度Z : -30~30
瀏海的搖動 : -1~1




瀏海的搖動(以臉部角度X與Z+身體的回轉X與Z搖動)

不只臉部,而是即使身體回轉的影響頭髮也會搖動的設定
是以假想下列參數值而做的設定

臉部角度X : -30~30
臉部角度Z : -30~30
身體的回轉X : -10~10
身體的回轉Z : -10~10
瀏海的搖動 : -1~1



在輸入設定裡有數個相同的type時,請注意影響度的數值
若type只有1個,影響度設為1就OK了


※ 關於影響度

有數個type時,需要調整影響度的數值

前提是,物理演算是從輸入設定的列表下的項目所計算

究竟是怎樣計算的,就關於上圖的 typeX來舉例說明


( i ) PARAM_ANGLE_X的影響度為 1 、PARAM_BODY_ANGLE_X 的影響度為 1

首先,從列表下的臉部角度X(PARAM_ANGLE_X)計算搖動狀態。將這個結果作為 A
影響度為1,因此 A 會給予100%影響

1 * A = A

所以,PARAM_ANGLE_X 的計算結果為 A  。

接著,從身體角度X(PARAM_BODY_ANGLE_X)計算搖動狀態。將這個結果作為 B
影響度為1,因此 B 會給予100%影響,而前面計算結果 A 會給予剩下的0%影響

1 * B + ( 1 - 1 ) * A = B

所以,這個物理演算的最終結果為 B

根據之後計算的 B , A 會被覆蓋,結果變成臉部面向X無法影響搖動

這是個不可行的設定

因為這樣就失去了設定的意義,所以來想想看像下面一樣改變影響度數值的情況吧


( ii ) PARAM_ANGLE_X 的影響度為 1 、PARAM_BODY_ANGLE_X 的影響度為 0.5

首先,從列表下的臉部角度X(PARAM_ANGLE_X)計算搖動狀態。將這個結果作為 A
影響度為1,因此 A 會給予100%影響

1 * A = A

所以,PARAM_ANGLE_X 的計算結果為 A  。

接著,從身體角度X(PARAM_BODY_ANGLE_X)計算搖動狀態。將這個結果作為 B
影響度為0.5,因此 B 會給予50%影響,而前面計算結果 A 會給予剩下50%影響

0.5 * B + ( 1 - 0.5 ) * A = 0.5 A + 0.5 B

這個物理演算的結果為 0.5 A + 0.5 B

也就是A與B的計算結果之影響為各半

乍看下這樣似乎行得通,然而設定至瀏覽器確認看看,就會發現頭髮的搖動變小了
就像從計算結果就了解一樣,這是因為根據臉部面向、身體面向的頭髮搖動狀態變成一半所造成的

根據臉部面向的頭髮搖動是非常重要的,在一般動作或「追尋滑鼠的位置」裡,臉部面向的動作就占了大多數

那麼,為了維持臉部面向的頭髮搖動狀態不變,而身體動作也會讓頭髮搖動,來想想看像下面一樣改變影響度數值的情況吧


( iii ) PARAM_ANGLE_X 的影響度為 2、PARAM_BODY_ANGLE_X 的影響度為 0.5

首先,從列表下的臉部角度X(PARAM_ANGLE_X)計算搖動狀態。將這個結果作為 A
影響度為2,因此 A 會給予200%影響

2 * A = A

所以,PARAM_ANGLE_X 的計算結果為 A  。

接著,從身體角度X(PARAM_BODY_ANGLE_X)計算搖動狀態。將這個結果作為 B
影響度為0.5因此 B 會給予50%影響,而前面計算結果 2 A 會給予剩下50%影響,

0.5 * B + ( 1 - 0.5 ) * 2 A = A + 0.5 B

這個物理演算的結果為 A + 0.5 B

也就是A的結果維持不變,而B的結果為只給予一半影響

如此一來,根據臉部面向的頭髮搖動狀態維持不變,而頭髮也會根據身體面向搖動了

但是,2個參數合計後的計算結果會變成150%,
為了使頭髮的搖動在2個參數形成最大的搖動幅度時無法甩開,請注意並調整各個設定


這次雖是採用 ( iii ) 的情況來設定影響度並調整頭髮的搖動,然而根據要變動的部位不同,有時或許用平均給予影響的 ( ii )的情況會比較好
請試著尋找根據物理演算目的的各種設定值

コメント