mesh変形をboneに変換

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー



前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2014/2/14 3:35
sekiwada  新米 居住地: 岐阜県郡上市  投稿数: 5
はじめまして、セキワダと申します。
最近blenderを使うようになりました。

質問があります。
blender上で、クロスシミュレーションの結果をBoneで実現させる方法を考えています。

私が検討した方法は以下の通りです。
1.meshにBoneを適用 (変形用ではなく緋つけ用)
2.meshをクロス計算
3.頂点位置を元に、緋ついたBoneの座標に変換

頂点数 ≠ Bone数を想定していて、単に頂点座標をコピーするのではなく、頂点グループの平均を
Boneの位置/回転に変換するイメージです。

このような事を実現可能なアドオンってあるでしょうか?
自分で作ろうかと考えていたのですが、結構な作業量になりそうなので、
既にそうゆう物があるならそれを利用したいと思い、質問しました。
以上、よろしくお願いします

投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014/2/14 9:49
完全無欠猫  長老 居住地: 兵庫  投稿数: 750
それに意味があるかどうかを決定するのは本人だと思うので否定はしませんが・・・個人的には意味を見出せないと思います。
ArmatureをMeshと関連付ける際に複数の方法がありますが、Weightと関連付けている場合Vertexには存在している全てのBoneに対して
Weightが設定される可能性があります。
作成しようとしているのはWeightに基づいて決定されたVertexの位置情報から逆にBoneの位置情報を簡略計算するもののように思います。
Clothシミュレーションはコリジョン計算もしていますのでそれを無視したモデリングになりかねません。

単純にArmatureでPoseを決定し、その後にClothシミュレーションを実行するのが通常の方法だと思います。
Blenderに実装されている機能には得手不得手が存在するので、それを踏まえて工夫するのがいいと思います。

公式サイトにマニュアルがあるので一読されることを勧めます。
公式サイトのマニュアル
基本的には英文です。
表示されたページの画面上部に表示されているページの言語があるので、それをクリックして日本語を選択すれば日本語になります。
但し、翻訳されていない部分はオリジナルの英文のままです。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014/2/14 10:02
sekiwada  新米 居住地: 岐阜県郡上市  投稿数: 5
お答えありがとうございます。

> 個人的には意味を見出せないと思います。
これをしようと思った背景ですが、ゲーム用のデータを作成するためです。
頂点数分のデータをゲーム用に書き出そうとすると、膨大な量になると思い、
少数のBoneの動きで擬似的に表現できるかも、と思った次第です。
ループアニメーションにする必要もあり、Boneの方が調整が楽だと考えました。

もうちょっと色々調べてみようかと思います。ありがとうございました。

投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014/2/14 11:22
完全無欠猫  長老 居住地: 兵庫  投稿数: 750
失礼しました、回答の書き方が悪かったのかも知れません。
意味を見出せないと書いたのは、そういう意味ではありません。

どのように使用しようとそれは本人の自由なのでそれについて書いたわけではありません。
Clothシミュレーションで生成したMesh形状が必要であればシミュレーション結果を適用したmeshを使用し、
それをBoneアニメと組み合わせればいいと思いました。

物理演算を毎回するのでないので部分的に疑問の出る部分もあるかとは思いますが・・・。
Gameなどで使用されるMeshデータでもこれは発生します。
(最近の高度な物理演算を駆使したもの以外は・・・)

私もGame用にnifファイルをいじることがありましたが、それなりにデータ量は大きくなりますよ・・・。

投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014/2/14 14:33
sekiwada  新米 居住地: 岐阜県郡上市  投稿数: 5
優れた物理演算機能を持つゲームエンジンにリアルタイム計算させるのが最もデータサイズを抑えれるのでしょうが、
現状ではBoneアニメーションしか選択肢が無い状態です。
データサイズやクオリティに関しても、まだまだ先行き不透明ですね。

アドオンを自作する事になると思いますが、使えそうな物が出来たらここで報告できるかもしれません。
ありがとうございました。

投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014/2/18 7:21
yamyam  管理人 居住地: そうや、うちはおおさかやー  投稿数: 4404
アドオンはありませんが、一応方法はあります。
1.カーブの頂点にエンプティをフックとして指定しておく
2.1.で使用したエンプティを複数(1つまたは3つ)の頂点の子としてペアレントしておく(編集モード中[Ctrl]キーを押しながらエンプティを右クリックで選択し、[Ctrl]+[P]キー)
3.1.のカーブに追従させるアーマチュアのチェーンを作成し、スプラインIKコンストレイントを追加する
4.スプラインIKコンストレイントに1.のカーブを指定する

ただし結構面倒なうえ、いくつか制限があるため(エンプティは最大3頂点の子にしかなれないなど)、コードを書く手間と比較して選択してみてください。
投票数:3 平均点:3.33
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014/2/22 9:37
sekiwada  新米 居住地: 岐阜県郡上市  投稿数: 5
yamyamさんはじめまして。
しばらく覗いていなかったので、返信が遅れてしまい申し訳ありません。
返信ありがとうございます。

以下3点の機能でできるのではないか、という事ですね。
・頂点の子としてペアレント
・カーブ
・スプラインIKコンストレイント
どれも使った事の無い機能でしたので、これから調査してみたいと思います。
clothをカーブとして扱うこの方法は素晴らしいですね

pythonはまだまだ勉強中です..アーマチュアをLightWaveに書き出すところまではできましたが、
目的の機能を実現するには、Meshにアクセスする方法など解らない点が多いです。
上記の方法で解決できれば、pythonを書く手間が一気に省ける可能性がありますね。

投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014/2/22 12:45
sekiwada  新米 居住地: 岐阜県郡上市  投稿数: 5
とりあえず出来たので報告します。
結果的にはカーブは使いませんでした。
なるべく少ないBoneで再現する事を考えると、
SplineIKではBoneをチェーンにする必要があったので、今回は見送りました。

今回は以下の方法を実施しました
1.EmptyオブジェクトをMesh頂点の子にする
3.ChildコンストレインツでBoneをEmptyオブジェクトに追従させる

結果は以下の通りでした
変形結果

・左がオリジナルのシミュ
・右がBoneに焼付けした結果
セットアップがちょっと面倒なのと、
Boneでの再現性に問題はありますが、とりあえず出来る事が解って助かりました。
ありがとうございました

投票数:2 平均点:5.00

  条件検索へ


ログイン

ユーザ名:

パスワード:



パスワード紛失

クイックリンク

2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org

●Blender Q&A
- Blender Stack Exchange

●テストビルド
Buildbot(自動生成)


●開発関連
公式開発サイト
Blender開発blog
Blender Wiki