Closed yunoda-3DCG closed 5 years ago
↑加えて、上記のスクリプトをアタッチしたオブジェクトがカメラ視野から外れるなど、アニメーション自体がカリングされるとベイクがうまくいかないようです。
Line56において、第3引数に float normalizedTime
を設定しているので、forループ内でアニメーションを特定のフレームに進める処理をしています!
AnimatorTextureBakerは、Meshをカメラでレンダリングすることによって、テクスチャへの書き込みを行っているので、オブジェクトがカメラのレンダリング範囲内にある必要があります。 AnimationClipTextureBakerを使用すると、旧Animationでも、Animatorでも使えるので、おススメです!
※少し昔に作ったバーションと勘違いしてました。。テクスチャへの書き込みはメッシュのレンダリングではなく、SkinnedMeshRenderer.Bake(mesh)とComputerShaderで行ってます。アニメーションを再生するにはRendererがカメラの範囲内にある必要があります。もしくは、SkinnedMeshRenderer.updateWhenOffscreen = true
とすると、カメラの範囲外でもアニメーションが更新されるはずです。
https://docs.unity3d.com/ja/current/ScriptReference/SkinnedMeshRenderer-updateWhenOffscreen.html
上記のコードでanimator.speed = 0;となっており、フレーム0しかベイクできないようになっています。仕様でしょうか?