メモ:アニメーションからオブジェクトをアクティブ化してアニメーションをコールする場合、アクティブ化するオブジェクトにはアニメーションを付けず、直下に別オブジェクトを作り、ワンクッション置くこと。でないと、録画アニメーション画面が別のに切り替わってしまい、期待通りに機能しなくなる。
=>アニメーションの画面をロックすれば切り替わらない
アニメーションをshaderに組み込み、再利用化を図るのは難しい。
順番に歌詞を出したり、進み具合に応じて大きくする、というようなレベルならいいが、移動幅が大きかったりするものや複雑なものなどはコード化する苦労の割にショボいことしか出来ないと思われる。
パーティクルライブのBGMの音声設定メモ:
AudioSourceのSpatialBlendを0にして2Dにする。
VRC_Spatial_Audio_SourceコンポーネントのUseAudioSourceとEnable Spatializationのチェックを外す
アニメーションを作る場合、初期位置は0フレームで移動させるてると、気を付けてみると移動前の位置が見えてしまう。初期値はメッシュ自体に操作しておく必要がある。
条件がよく分からないが、Shaderでアニメーションを使ってメッシュを移動させると、位置が大幅にズレる場合があるっぽい。基本的にtransform値で操作するべし
専用プロジェクトに作る
フォルダ管理、命名規則等、構成を予め可能な限り明示的にしておく
その場で作成したシェーダを多用しない
素材は実際に使う段階になってから作った方がいい。
途中で飽きてやめるかもしれないし2番目で使う素材を使ったが、1番目しか作らないかもしれないし、演出上、不要であると気づくかもしれない
パーティクルなど使いまわすものはprefab化すべし
マテリアルの一括変更等が楽になる。
同じ種類のものは後で一括変更出来るように同じ名前にしておく。
++構成方式
全体管理するアニメーションとパートごとに小分けにしたアニメーションに分割する。
注意点:
全体管理するアニメーションに登録するオブジェクトは種類とパート番号で構成し、それが何であるかわかりやすくする。
全体管理アニメーションの役割:パートアニメーションのアクティブ化・非アクティブ化、パートアニメーションを組み合わせる場合の協調調整
++利点
アニメーションを分割することで、タイムラインの要素数が少なくなり、タイムライン上での見通しが良くなる。
++欠点
アニメーションでアクティブ化したときオブジェクトの初期化が行われるらしく、それに伴うと思われる一瞬オブジェクトがちらついて見える、というバグがある。Shaderで初期状態を見えない状態にすればチラつかなくなる。
ルートアニメーションを操作して表示されたりするのは、パートごとのアニメーションが付与されたアブジェクトの初期状態であるため、実際のアニメーションを確認するためには実行する必要がある。
++負荷軽量作
LightingやShadow,Motion Vectorをオフにする。
ヒエラルキーにMeshRendererとコンポーネント名を入れればそれを持つオブジェクトが全て表示されるので全選択してインスペクタをいじれば、一括変更できる。
https://twitter.com/abcde_find/status/1185593869846474754
アニメーションはエモートで出す。アニメーションオーバーライドだと40fpsほど下がった。
マテリアルを少なくしGPUインスタンシングを使用する。
半透明の使用を避ける。
半透明を使用する場合、RenderQueueを異なるものにする
++エモートスイッチ
++ワールド固定
ConstraintWorldFixed-V1.1 - ひまわり畑。 - BOOTH
++失敗点
オブジェクトをメッシュと歌詞をヒエラルキー上でそれぞれルートオブジェクトの下位に入れることで分類して管理していたのだが、分類を超えてtransformを同期させて使用しようとすると、面倒になる
曲のパートごとでのみ分類した方がいいかもしれない。
アニメーションでマテリアルの数値を変更するとき、MeshRendererにマテリアルが依存しているため、アニメーションを作ってからSkinedMeshRendererに切り替えるとアニメーションが壊れてしまう。
パーティクルの物量に頼った演出を作ったのだが、結局、負荷の問題でパーティクルを大幅に減らしたために、ショボい演出に・・・