おばけ in VRC
https://s3-mstdn.maud.io/media_attachments/files/005/438/561/small/ba10108655ccde73.png
第1章
モデル
"底"にメッシュが張ってあったけれど、Unity上で見た感じシェーディングが怪しいので剥がした
裏メッシュ皆無なモデルになったので、裏から見ると透ける
アニメーション
ウェイトペイント
アーマチュアがポーズモードかつメッシュがウェイトペイントモードのとき、ボーンを Ctrl + 左クリックすることでウェイトをつけるボーンを選択できる
Armature のポーズモードと Object のウェイトペイントモードを両立できない(Outlinerでクリックしても選択できない)時は、 Edit > Lock Object Modes のチェックが入っていないか確認する
オブジェクト選択によって違うモードに変わるのを防ぐ設定っぽい
これしかやっていない(アーマチュアを選択 → Pose Mode にする → メッシュを選択 → Weight Paint Mode にする)
Ctrl+クリックでボーン選択 → 塗ってみる → R を押してボーンを回転させてみる、みたいなことをしていた
Alt+Z でX-Ray 表示をオンにするとSolid以上の表示でも骨が見えてよき
雑に塗るとガタガタになるので、なんとなくBlurやAverageで均してみた
CATSだとポーズをシェイプキーにする機能もあるけど、今回はUnity側でボーンアニメーションを定義した
普通に各ボーンのPositionやRotationをアニメーションで使える
手の上下と頭の傾けをできるようにした
目線変わらないのが惜しい
Genericリグ
普通のやりかた: AnimatorのControllerは無視して、DescriptorのCustomなんちゃらAnimsに Animator Override Controller をセットする
Genericリグの場合そうもいかない(多分)
Humanoid だと勝手にセットされる Animator Controller がセットされていない説
今のところ見つかってる選択肢
Animator Controller ごと自作する
VRCSDK/Example2/Animation/SDK2/AvatarControllerTemplate.controller が普通のHumanoidアバターの要素をだいたい備えてそうなので、これをベースにする
Parametersに色々渡ってくる
MovementX/Z: 移動の方向(歩行アニメーションなどに使う)
Grounded: ジャンプ判定っぽいけどテンプレート内で使ってるところがわからない
HandGestureLeft/Right: ハンドジェスチャー 0-6
ハンドジェスチャーは起動時に HandLeft/Right レイヤーの Weight も 1 になってるっぽい
Emote: エモート 0=Off、1-8=Emote1-8
HeightScale(NOMOVE): 立ち・しゃがみ・座りで変わる値(Locomotion Layerで使ってる)
この辺はUnityEditorで再生中に変更して確認できる
Humanoid みたいに Animator Override Controller を作る
Descriptorではなく、AnimatorコンポーネントのControllerにこの Animator Override Controller をセットする
Animator Override Controller はベースとなるControllerとアニメーション差し換えを設定しておくと、アニメーションを変更した Animator Controller として扱えるので
第2章 〜とけるHumanoidおばけ〜
とかす
オリジナルのモデルは Deform Modifier を使っていた
Deform Modifier にもシェイプキーは設定できるが、fbxエクスポートはできない
Apply as Shape Key でメッシュのシェイプキーに変換するとよき
https://gyazo.com/361b6308879cd34a7890b296191980ef
Unity側
シェイプキーは当該メッシュの Skinned Mesh Renderer の BlendShapes に現れる
Humanoidリグ対応 = トラッキング対応
UnityのMecanim的にはoptionalなSpine、Chest、Neckも必須(ないとエラー)
Mecanim的に必須なボーンも割り当てていないと、単にGenericリグ?にfallbackされてアップロードできてしまう
どういうポーズでどういう動きをするかは骸骨モデルを上げるとよさそう
そのままだとボーンごとに別メッシュになってVRCEditorに怒られるので、全部選んでマージするとよき
「なんか頭の向きだけ取りたいんじゃ」という軽い気持ちで始めたが、なかなか難しい
おおむねNeck以下は胴体の向き、Headは顔の向き
周りを見回したり横歩きしたりするとNeck以下の向きとHeadの向きがずれる
おばけ的にはねじれるのであれだけど、かといってHeadだけだと見上げた時に全体が傾く
それはそれでありかもしれない(?)
第1章でやった手を動かすアニメーションとかは入れてない(ボーン…)
第3章 〜おばけ布〜
メッシュを物理演算して布っぽく変形させてくれる
今回は「なかのひと」に「おばけ布(?)」をかける実験
なかのひと側に適当にコライダー(衝突対象となるオブジェクト)をつける
首と頭に Sphere Collider を追加
https://gyazo.com/7ac01096b9451bd403d7a47bdb1cb8e8
Sphereひとつでいけるのではとの思い込みから選んだけど、結局ふたつつなげてしか使えないので、Capsule Collider でよかった説はある
で、おばけ布のメッシュにClothを適用した
おばけ布メッシュを含めたfbxをBlenderで作ったけど、PrefabバラせばUnity側でも合成できた気がする
コライダーなしだと形を保ったまま落下する(それはそう)
コライダーつけるとそこで引っかかる
Bending Stiffness を上げると引っかかる時にも形を保つようになる(ゆがみにくくなる)
なんか腕は落ちてった(胴体とメッシュがつながっていないという説が出ていた)
いい機会なので Max Distance を塗って固定してみたりした(結局他の部分の布感からは独立するのだけど)
VRC的にはClothを適用する頂点が200点に制限されているらしく、今回のは843点でアップロード不可になっていた
使い方要検討な感じ…
DynamicBoneも試そうかと思ったが、あれはボーンを揺らすやつなので、現状揺らして嬉しいボーンがない(Generic版/Humanoid版ともに)
ひらひら部分にスカートみたいな骨を入れればひらひらさせることはできそう