Live2D物理演算解析　４．１　イヤリングなどの小物の物理演算

物理演算の用例をまとめてから書こうかと思っていたが
生放送で早めに記事がホシイとの声があったので個別で書いていく
今回はイヤリング
小物のアクセサリーがくるりと一回転できる物理演算をやります

#対象形状
大まかに言えば振り子型の形状物であれば何でも大丈夫なはずです。
肝心なのは揺れたときに邪魔が入らないように見える場所であること。
またメインパラメーターの振れ幅が左右対称であること
<img width="750" alt="揺れモノ.png" src="https://qiita-image-store.s3.amazonaws.com/0/117475/8d952931-35b1-8e80-e680-b25f01cfcc88.png">
振り子型の物理演算に向くモノ

まずは簡単にテクスチャを用意します
このとき当たり前ですけど支点が判るようになっていると良いでしょう
ハイライトを動くようにしても質感が微妙にアップするかも
![イヤリング画像.PNG](https://qiita-image-store.s3.amazonaws.com/0/117475/d5c99cbf-8473-91a7-66b7-208459d60443.png)


#設計方針
大まかな構造ですが
**・もっとも傾斜が大きく±対称、変化量対称のパラメーターに対して揺れパラメーターによる位置合わせを行う。
　このときのオーバーランで振動する。
・多段での揺れパラメーターは二重振動を起こすので他の傾斜はパラメーター連動での中和を行う**
生放送中では多少間違えましたが大体この方法で落ち着きました

#角度のはかり方
まずは傾斜の付くパラメーターを見つけ出し、傾斜を比べてメインの揺れパラメーターを使用する対称パラメーターを見つけねばなりません。
それには揺れモノを置きたいポイントがどれくらい傾斜するか計測できなきゃいけませんね

①イヤリングを乗っける対象となるデフォーマの上に回転デフォーマをのっけます
![soku1.PNG](https://qiita-image-store.s3.amazonaws.com/0/117475/7bc52b22-1d9c-94e9-5454-3fb1d4031478.png)

②対象に角度のつくパラメーターを端まで変動させます
![soku2.PNG](https://qiita-image-store.s3.amazonaws.com/0/117475/0bf734f2-7b65-513a-b73d-c798660e6eed.png)

③のっけていた回転デフォーマを大凡でいいのでもとの角度になるまで戻します
![soku3.PNG](https://qiita-image-store.s3.amazonaws.com/0/117475/7ea6b3d1-6ca7-24d0-4346-2c4aca91e61e.png)

④角度表示に出ている角度がそのパラメーターで変化する量です。あとでこの値は使うので**メモしておきましょう**
![soku4.PNG](https://qiita-image-store.s3.amazonaws.com/0/117475/a9b59333-e79f-32bc-bd80-9251e1a764fa.png)

コレを動いてそうなパラメーター全部にやっていきます。

#揺れパラメーターと回転デフォーマの設定
傾斜の調査がおわりました。
今回はこの中で一番傾斜の大きかった角度Zを対象にイヤリング揺れを作っていきます

①まずは設置するポイントを決めて回転デフォーマを打ちます。
　後の外乱中和で積層するときにずれるとおかしな事になるので打ったデフォーマを基底としてコピーして作成していきます
![yure1.PNG](https://qiita-image-store.s3.amazonaws.com/0/117475/92f19683-6fc5-7d8e-58e9-f324b85ac783.png)

②基底回転デフォーマからコピーしたものに対象のテクスチャを載せます
![yure2.PNG](https://qiita-image-store.s3.amazonaws.com/0/117475/29cf10b2-bf46-b5a4-f3f9-64ef31adc9a6.png)

③パラメーターに関連付けをしてマイナス側を180度回転、プラス側を-180度に設定します
![yure3.PNG](https://qiita-image-store.s3.amazonaws.com/0/117475/12138e3f-bf89-afd4-6b03-e35c2ddaf048.png)

#外乱傾きの中和
揺れパラメーターの設定はおわったので残りの傾斜パラメーターを中和していきます
①先ほどの基底回転デフォーマからコピーをとって中和用の回転デフォーマをつくり、
　揺れパラメーターのデフォーマの上にかませます。
![tyuuwa1.PNG](https://qiita-image-store.s3.amazonaws.com/0/117475/c87ea9fb-cb96-44b7-f4f1-84166976fec1.png)

②パラメーターをセットした後両端に値を移して回転デフォーマを真上に戻す（両方）
これで移動しても基礎が真下を向くようになります
![tyuuwa2.PNG](https://qiita-image-store.s3.amazonaws.com/0/117475/07bb7b24-6c7b-4e8a-20a1-d4bf9165dee8.png)

複数噛ませても大丈夫ですが２軸、３軸で変化するパラメーターの場合は回転デフォーマの設定パラメーターも合わせましょう

#物理演算設定の算出
この揺れ型に関しては設定を算出できます
あれこれ試して探していく必要はありません
まずはデータの大まかな流れから見ていきましょう
![スケール.PNG](https://qiita-image-store.s3.amazonaws.com/0/117475/21956b0c-d794-12a6-2955-f9d1dbc811c5.png)

Angle入力では**角度**
X,Yでは目算でいいので**移動量**
これらをパラメータースケールで割って”1パラメーターあたりの移動量”を計算しましょう
系統が別れていれば**影響量は１で問題ありません**が複数ある場合は下から1、0.5にしてお互いが影響を与えるようにしましょう
ただし、Angle入力は一種類だけです

今回の例で計算すると
角度Zが最大で１４度傾斜、パラメータースケールは３０なので
パラメーター１に置ける角度は１４／３０で大凡０．４６６……度
なので移動量は０．４６６
同じようにして他のパラメーターも計算していきます
![物理入力.PNG](https://qiita-image-store.s3.amazonaws.com/0/117475/cf29644c-704a-ab00-75be-251b0ee300d3.png)

出力側の元データは-180～180スケールなのでパラメータースケールに合わせて小さくします
イヤリング揺れパラメーターはスケール１。
なので１／１８０＝０．００５５……
０．００６で設定してあります
![物理出力.PNG](https://qiita-image-store.s3.amazonaws.com/0/117475/a8e278ca-ec13-a052-54ae-a01b27734e8d.png)

#作業の中でよくつまずいた事、間違った事
作業中気をつけなきゃとおもってたのにトンと忘れてしまって苦労した点がいくつか。
**・スケールを間違う**
　無精してスケールを確認せず1スケールで計算したら実際は30スケールだったりすることが何度か
**・別の物理演算を編集してしまう**
　熱中するあまり項目を変えるのを忘れてしまい前髪の変化量をいじってたことも

なにかおかしいな？とおもったらもしかして……　と思い出してください