vrm-c / UniVRM

UniVRM is a gltf-based VRM format implementation for Unity. English is here https://vrm.dev/en/ . 日本語 はこちら https://vrm.dev/
https://vrm.dev/en
MIT License
2.64k stars 423 forks source link

Animation not working correctly / アニメーションが正常に動作しない #1749

Closed Applepiee closed 1 year ago

Applepiee commented 2 years ago

Hi,

UniVRM version: 0.90.0 Unity version: Unity-2020.3.28f1

We have a problem with applying a breathing animation onto a VRM character. The torso isn't moving, and instead the while character moves up and down. The animation is created with a VRM model in Blender and looks fine in Blender and in unity.

What we have tried:


こんにちは。

VRMキャラクターに呼吸アニメーションを適用する際に、問題が発生しました。胴体は動かず、代わりにキャラクターが上下に動きます。このアニメーションは、Blender の VRM モデルで作成され、Blender と unity では正常に表示されます。

試してみたこと

https://user-images.githubusercontent.com/12681970/179741969-fd01fa7f-cb95-430c-baab-e9201514abe5.mp4

https://user-images.githubusercontent.com/12681970/179742004-db108720-63c8-41cf-bccd-7e25fc8ee48d.mp4

Santarh commented 2 years ago

Thanks for your reporting. This issue seems to depend on how Unity Mecanim Humanoid works, not UniVRM.

Unity Mecanim Humanoid is useful for animation retargeting to different models, but each model has different bones, so there will always be differences.

Applepiee commented 2 years ago

Thanks for your reporting. This issue seems to depend on how Unity Mecanim Humanoid works, not UniVRM.

Unity Mecanim Humanoid is useful for animation retargeting to different models, but each model has different bones, so there will always be differences.

But there has to be some kind of solution for this right? Any idea what could be a potential fix?

Santarh commented 2 years ago

Unity Mecanim Humanoid converts a raw animation data into muscle space. Therefore, as long as you use Humanoid, there can be a lack of animation information. ( I see the lack of animation information as an unavoidable trade-off with convenience. 😔 )

If you can assume that your two models have the same bone structure, you may be able to achieve that by copying the Transform. (e.g. using Generic animation type, using script that copying transform values.)

FujiSunflower commented 1 year ago

説明通りUnityの仕様なのでCloseで良いかなと思います。