unity3d-jp/BlendShapeBuilder

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

TsuPMC opened this issue · 17 comments

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

BlendShapeTest.zip

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

パッケージを更新しました。
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" が必須ではなくなった)
元々これで完結する使い方を想定しておりました。

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

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

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

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

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

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