BlendShapeBuilder icon indicating copy to clipboard operation
BlendShapeBuilder copied to clipboard

animationしているものの修正について

Open TsuPMC opened this issue 5 years ago • 17 comments

Timelineでanimationさせたobjectに対して 例えば(animationで変形が入った)キメのposeの顔を調整したい 場合にこのToolが使えるかなーと試してみたのですが そもそもUnity上でanimationでobjectが変形したり元の位置から移動しているmeshに対してモーフターゲットを生成しても「objectの元の位置でanimation変形前の形状にしかモーフターゲットは生成できない」でしょうか Unityの仕様な気もしているのですが…

TsuPMC avatar Apr 17 '19 07:04 TsuPMC

すみません、上記ですが 「animationでobjectが変形したり元の位置から移動しているmesh」をそのフレームで複製してモーフターゲットにすることができました が、また違うところで躓いているのでまたご質問させていただくかと思います 失礼いたしました

TsuPMC avatar Apr 17 '19 10:04 TsuPMC

ボーンで変形してる Mesh に関しては問題なく編集できるはずです。(内部的には、skinning された頂点に対して編集を適用、逆 skinning をかけて結果を Mesh に格納、とやってます) Blendshape は考慮していないので、0% ではない Blendshape がある場合はおかしなことになると思います。(全て 0% なら大丈夫なはず) 以上を踏まえた上で、バグが疑わしい挙動などあればその旨指摘していただけると幸いです。

i-saint avatar Apr 19 '19 05:04 i-saint

お疲れ様です 2017.4.25f1でとりあえず試しています TimelineでアニメートされたobjectをコピーしてBlendshapeターゲットにすることはできました で、Skinned Mesh RendererのBlendShapesの値を0-100の間で色々操作すればblendshapeもできたのですが、シーンを保存して再び開くともうSkinned Mesh RendererのBlendShapesの値を変えてもBlendShapeが有効になりません 何か操作方法が間違っているのか、おわかりになりますでしょうか

TsuPMC avatar Apr 22 '19 02:04 TsuPMC

fbx などのファイルからインポートしたモデルはシーンを開く度に再生成が行われるので、独立した Mesh にする必要があります。readme の説明を参照ください。https://github.com/unity3d-jp/BlendShapeBuilder#%E6%B3%A8%E6%84%8F%E7%82%B9

i-saint avatar Apr 22 '19 06:04 i-saint

それも行ったつもりなのですが… やったこと ①TimelineでアニメートされたobjectをコピーしてBlendshapeターゲットにした(Framesにこのコピーしたobjectを設定した) ②Generate New AssetでExportして元のmeshのSkinnedMeshRendererのMeshを②に差し替えた ③blendshapeターゲットを編集して②をUpdate MeshしてBlendShapeの値を変えて変化することを確認 ④シーンを保存した ⑤再び④を開くがBlendShapeの値を変えても無反応 なのでございます

ちなみにこの場合 「Timelineでアニメートされたobjectをコピーした」ものはobjectの階層から出すとか出さないとか関係ありますか?それともそもそも①②あたりのオペレートを何か間違っていますでしょうか

TsuPMC avatar Apr 22 '19 08:04 TsuPMC

Mesh が正しく保存されているかを確認したいです。 ②で生成して blendshape を編集した Mesh を単体でシーン内に配置し、blendshape の値を変えて意図した通りに動きますでしょうか。 この時点で既におかしいのであれば BlendShapeBuilder 側の問題が疑われます。

BlendShapeBuilder はあくまで Mesh の内容を編集するだけです。Timeline やアニメーションなどには一切関与しません。なので

「Timelineでアニメートされたobjectをコピーした」ものはobjectの階層から出すとか出さないとか関係ありますか?

これはほとんどの場合関係ないはずです。Timeline に Mesh の内容を変えるものがあれば関係しますが、それ用の特殊なスクリプトがない限りは起きないことだと思います。

i-saint avatar Apr 22 '19 10:04 i-saint

お疲れ様です 色々試していくつかわかったこととわからないことがありました うまく説明できないのでサンプルデータを作成して解説エクセルを作りました BlendShapeBuilderSampleCube.xlsx

サンプルデータはここに載せられないようなのでメールでお送りさせていただきます

ご覧いただければ幸いです

TsuPMC avatar Apr 23 '19 08:04 TsuPMC

解説ありがとうございます。しかし、これはオペレーションの問題であり、このオペレーションに合うように BlendShapeBuilder を改良できるかはちょっとわかりません。

それはそれとして、Unity 2018 や 2019 でも動作するパッケージをリリースしました。今上がっているパッケージをお試しいただけると幸いです。 (ディレクトリの構成が変わっているので、古いのはディレクトリごと削除してからインポートすることを推奨です)

i-saint avatar Apr 24 '19 19:04 i-saint

承知いたしました Unity内でBlendShapeが作れるというツールですものね 使い方がトリッキーだったようです 「animation後直接頂点編集をする」というのはまた別途考えます ありがとうございました 2018対応リリースもありがとうございました ダウンロードして試してみます

TsuPMC avatar Apr 25 '19 04:04 TsuPMC

「animationしているmeshの特定のフレームのmeshの形からBlendShapeTargetを編集したい」ですが 教えていただいたオペレートで可能になったのですがこのやり方だとFBXのmeshが変形してしまうという事態になるようです もちろんFBXをreimportすれば作成したBlendShapeシーンに影響は出ないのですがFBXのmeshのreimportを忘れるといろんなカットで元データが変形しているという事態になりかねないので危険だなぁと思った次第

Unity2018.2.9f1で作成したsample detaをUpさせていただきます 何かこうしたら良いなどアドバイスをいただけるとありがたいです よろしくお願いいたします

BlendShapeTest.zip

TsuPMC avatar Apr 25 '19 12:04 TsuPMC

現状のままですと、忘れずに reimport するように徹底する以外ないと思います。 しかしこれは '+' ボタンが意図通りに機能しないのが諸悪の根源であり、確かにここは改良すべきポイントだと思うので、対応しようと思います。(ボーンを持つ場合はポーズまで一致させつつコピーさせます)

i-saint avatar Apr 26 '19 08:04 i-saint

パッケージを更新しました。 https://github.com/unity3d-jp/BlendShapeBuilder/releases/download/20190425/BlendShapeBuilder.unitypackage

主な変更点は 2 点で、

  • 上記の通り、"Frames" の "+" ボタンを押した時、ボーンを持つオブジェクトについてはポーズまで一致させつつコピーするようにしました。
  • FBX 由来の Mesh など、編集不可能な Mesh については、"Add BlendshapeBuilder" ボタンを押したタイミングでコピーを作成して MeshRenderer / SkinnedMeshRenderer の mesh を差し替えるようにしました。

よって、"Add BlendshapeBuilder" して Frames の "+"、追加された frame に対して "Edit"、編集後 "Update Mesh"、シーンを保存、とやれば以降シーンを開き直しても編集結果が残っているはずです。("Generate New Asset" が必須ではなくなった) 元々これで完結する使い方を想定しておりました。

i-saint avatar Apr 26 '19 11:04 i-saint

ありがとうございます 試してみます!

TsuPMC avatar Apr 26 '19 12:04 TsuPMC

お疲れ様です お時間が空いてしまって申し訳ありません 確認させていただきました シンプルなモデルでは 「"Add BlendshapeBuilder" して Frames の "+"、追加された frame に対して "Edit"、編集後 "Update Mesh"、シーンを保存、とやれば以降シーンを開き直しても編集結果が残っているはずです」 がUnity2018.2.9fでも確認できました

複雑なモデルだと下記のような不具合が出ています 「Editしたとたん元のshapeと異なった形状になってしまう(animationが反映されていないというような大きな不一致ではなく、微妙に頂点がズレるという不一致です)」 モデルに問題があるのかをまず調査中です

TsuPMC avatar May 08 '19 10:05 TsuPMC

Blensshape が入っていませんでしょうか。Blendshape は考慮していないので、0% ではない Blendshape がある場合はそのようになると思われます。 ただ、申し訳ないですが、それが原因だったとしても直近で対応はできないと思います。

i-saint avatar May 08 '19 10:05 i-saint

BlendShapeではないようです テストしていたobjectはmayaでBlendShapeを仕込んでいたmeshではなく、念のためfbx出力時のBlendShapeチェックも外し、fbxのinspectorからもImportBlendShapesのチェックも外しましたがEditボタンを押すと微妙に頂点がズレます… もう少しじっくり見てみないとわかりませんが… 直近でご対応いただけないのは理解しておりますので大丈夫です こちらでももう少しよく調べてみます

TsuPMC avatar May 09 '19 06:05 TsuPMC

ところでUnityで操作の履歴ってどこかで見れないものでしょうか mayaのscriptEditorで表示されるような…

TsuPMC avatar May 09 '19 06:05 TsuPMC