🆚

Animator As Code と和解せよ

に公開

ControllerEditorが死にました

もう終わりだ;;
ということでAACで全てをコードにしてもっと効率化しよう、という試みです。
YozoLabは以降手打ちでのAnimator構築は許されません...縛りプレイってコト

この記事を読むのをオススメする人、オススメしない人

オススメ!

  • Animatorの基礎を理解している
  • Animatorの応用(AAP,DBT)をなんとなく理解している
  • C#がちょっと読める、書ける

オススメしない

  • Animatorわかんない、ギミック組みたいけど「組みたい」という意思があるだけでまだ特にないもしていない人
  • C#わかんないかも

くらげちゃんむずかしさレベル
★★★★☆ : ほしよん

導入手順

まず、AlCOMをインストールしましょう。VCCと互換性があり、VCCより高速です。
https://vrc-get.anatawa12.com/en/alcom/
そうしたら、各種パッケージをインストールしていきましょう。
必須なのは、

  • VRCSDK Base
  • VRCSDK Avatar
  • NDMF
  • ModulerAvatar
  • Animator As Code V1
    です。
    AACにはいくつかパッケージがあるので、プロジェクトに追加するのは

    の4つです

プロジェクトを開くことができたら、私の用意した各種サンプルをダウンロードし、インポートしてください。
https://github.com/YozoraKurage/YozoLab-AAC-Example/releases

コードとか書いていく?サンプルプログラムを見てね

わかる人はドキュメントを見ればわかります、が、サンプルが少ないので私がちょっと作ってみました。
最低限これだけあれば応用も効くと思うし、ドキュメントにすべて書いてあるので、一緒に頑張りましょう...
V0.1.0現在では、Destructiveなコードしかありません。
NDMFあるいはModularAvatarを使うこともできますが、追々加筆します。
コードのコメントアウトにそれなりの解説があるので、読んでね!
AIに聞けば結構わかるかも!

  • 250702-164954
    ふと、なぜ FloatParameter は AacFlLayer に所属しているメソッドなのか気になったので調べてみた。
    AacFlBaseのメソッドでいいのではないか?と思ったが、実はAacFlBaseは初期化時にAnimator Controllerを持たない。
    FloatParameterメソッドは。呼ばれるときにlayer.という風に実行するが、このとき、「レイヤーが所属するAnimatorControllerに対して」再帰的にパラメータの追加が実行されている。
    思い返せばAacFlBaseでのAssetContainerはObject型だった。これはNDMFなどの都合上基本的にAnimatorでも入れておけば、CreateFirstArbitraryControllerLayer()でも呼び出しやすいかなと思っていたが、ここが重要だった。
    この関数は引数にAnimator Controllerを持ち、返り値はAacFlLayerだ。
    この返り値を変数「layer」などで保持していたが、これを経由してパラメータの操作をしていたわけだ。

あああああああああメモメモメモメモメモメモメモメモメモメモメモメモメモメモメモメモメモメモメモメモメモメモ

AssetContainerは、フォルダを指定できない(無視される?)
AACは生成物の保存をSubAssetsとして保存するらしい
私がNewAnimatorControllerでControllerを生成してフォルダを指定したContainerに保存しようとしたら、何も動かなくて
適当にPrefabを指定してみたらそのSubAssetsとして保存された
多分、AaCはAnimatorControllerがある前提で動いているので、AnimatorControllerを生成して保持するのまでは考えてない?多分MAのための機能?

Discussion