unity3d-jp / MeshSync

A package for synchronizing meshes/models editing in DCC tools into Unity in real time.
Other
1.55k stars 174 forks source link

BlendShapeについてご質問 #53

Closed TsuPMC closed 5 years ago

TsuPMC commented 5 years ago

BlendShape animationについて質問があります

MeshSyncでUnity内に生成されるanimation clipの中にBlendShapeのanimationカーブは確認でき、実際にMeshSync sceneではBlendShape animationが再生されました

が、このanimation clipはmayaからfbx出力したモデル(Skinned Mesh Renderer にBlendShapeは持っている)には(BlendShape animationが)再生されないのですが、仕組み上そういうものですか?

i-saint commented 5 years ago

AnimationCurve の名前が一致していれば再生できるはずです。(手元で再生できるのを確認しました) ただ、名前を一致させるにはいくつか条件が必要で、

namespace などが原因で一致しなくなっている可能性もありますが、この場合は再現データを送っていただけるとすぐに解決できるかもしれません。

i-saint commented 5 years ago

別件で恐縮ですが、pivot が fbx で持ってきたデータと一致しない問題、とりあえず手元では解決を確認できました。が、影響が大きい変更ゆえにどこか別の部分で問題が出ている可能性を否定できません。 お手数ですがそちらでも検証していただけますでしょうか。 MeshSync_20190326_internal.zip

TsuPMC commented 5 years ago

こちらで調査いたしましたところ、恐らくnamespaceの問題ではないかと考えています テストデータをお送りさせていただいたのでご確認いただけますでしょうか よろしくお願いいたします

TsuPMC commented 5 years ago

あ、レスを一つまたいでしまったようです

pivot が fbx で持ってきたデータと一致しない問題、とりあえず手元では解決を確認できました。が、影響が大きい変更ゆえにどこか別の部分で問題が出ている可能性を否定できません。 お手数ですがそちらでも検証していただけますでしょうか。 ですが急ぎ拝見させていただきます ありがとうございます

i-saint commented 5 years ago

テストデータ確認しました。 単純に namespace 対処漏れですね…。直しておきます。

i-saint commented 5 years ago

とりあえず更新版パッケージ。 MeshSync_20190327_internal.zip

namespace 除去はできていますが、テストデータの Unity 用データが欠けている?ようで整合性チェックはできていません。

TsuPMC commented 5 years ago

確認させていただきました 正しく再現できるようです ありがとうございました

TsuPMC commented 5 years ago

別件で恐縮ですが、pivot が fbx で持ってきたデータと一致しない問題、とりあえず手元では解決を確認できました。が、影響が大きい変更ゆえにどこか別の部分で問題が出ている可能性を否定できません。 お手数ですがそちらでも検証していただけますでしょうか。 MeshSync_20190326_internal.zip

について確認させていただきました

非skinningデータについては一致するようになりました が、skinningデータについてMeshSync scene内で意図しないtransform値が入るようになったようです

現象が再現できるテストデータを作成したのでご確認いただけますでしょうか Pivot_issue.zip

i-saint commented 5 years ago

ありがとうございます。再現取れました。 思ってたよりも厄介な問題のようです。以前のバージョンでも正しい結果にならないですね。

i-saint commented 5 years ago

少なくとも提供いただいたデータは正しく出るようになりました。お手数ですが確認お願いいたします。 Maya の skinning に絡む処理は非常に複雑であり、おそらくこのバージョンでも意図した結果にならない状況はあると思います。その時はお手数ですがまたテストデータをいただけると幸いです。

また、#51 のマテリアルの件も対応が入っています。 同名マテリアルがあった場合、編集可能な方を優先して割り当てるようにしています。FBX prefab に入っているマテリアルは編集不可能なので、結果的に要件を満たします。

それと、残像?のようなモデルが残るのも対策が入っています。以前はネームスペース除去のオン/オフを切り替えながら同期すると確実に残っていたのが、今は残らなくなっています。

MeshSync_20190330_internal.zip

TsuPMC commented 5 years ago

お早いご対応どうもありがとうございます MeshSync_20190330_internal.zipについてただいま確認させていただいております 今のところ不具合は確認されておりません 念のためもう少し多くのデータで確認させていただきますのでまたご連絡申し上げます

i-saint commented 5 years ago

マイナーアップデート版です。 Maya 側の Animation の項目に "Keep Flat Curves" というチェックが増えています。これを有効にしておくと、キーフレームリダクションを有効にしつつ、全くアニメーションしないオブジェクトのキーも保ちます。Unity 側のアニメーションのインポートそのものも若干速くなっています。 あと、今回の件には関係ないかもしれませんが、Unity 側 MeshSyncServer のアニメーションの補間 ("Animation Interpolation") の Constant をちゃんと動くように直せました。アニメーションの補間を完全に無効にしたいケースがあれば役立つと思われます。

MeshSync_20190410_internal.zip

TsuPMC commented 5 years ago

ありがとうございます! Constantも動くとは尚素敵です 早速試させていただきます

TsuPMC commented 5 years ago

"Keep Flat Curves" について確認できました キーフレームリダクションを有効にしつつ、今までならば全くanimationしないobjectはanimation clipが生成されなかったですが、"Keep Flat Curves" にチェックを入れるとそういったobjectのanimation clipも生成できました

Constantも確認できました Constantについては以下に現場の感想を述べさせていただきます animation curveの種類はシーンで一律に決めるものでもないかもしれません 「キャラクターはリミテッドアニメーションで作る」からConstant Curveで作ったとしても カメラのanimation curveはsmoothにしたいなどanimation curveは1シーン内に種類が混在することが多い気がいたします またそもそもリミテッドアニメーションでもないものについてはanimation Curveの種類は1objectの中でも混在することでしょう デザイナーは「この部分のanimationをどう表現したいか」でanimation curveを使い分けます

そういたしますと現状の「"Animation Interpolation"はUnityの方で一律Smooth/Constant/Linearの選択をする仕様」であるとあまり都合がよくないかもしれません 恐らく「mayaで設定したcurveの種類がそのまま再現される」が理想となるかと思われます

勝手を申しましたが今後の開発のご参考になれば幸いです

i-saint commented 5 years ago

フィードバックどうもありがとうございます。

やはり Constant は現状のままだと使いにくいですよね。DCC 側のカーブに合わせるのが理想なのですが、残念ながらこれは不可能に近いレベルで困難で、別の対策が必要だと感じています。 現状で一番現実的だと思っているアイデアは、Unity 側で sync 設定を上書きできるようにするコンポーネントを用意する、といったものになります。MeshSync で生成されたオブジェクトに対してそのコンポーネントを追加すると、以降 MeshSyncServer の設定よりもコンポーネントが持つ設定を優先する、といった具合です。