ある人型の3Dモデルを、別の人型の3Dモデルに差し替えたいと考えています。
しかし、見た目をパッと変えるのではなく、昔の3DCG映画のような徐々に形が変わる補間の仕方をさせたいのですが、どのような方法があるでしょうか?
調べても全く関連する記事を見つけられないです。
どなたかお力添え頂けるとありがたいです
一番近いイメージがこれでした笑
Youtube
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
任意のモデル同士をなめらかにモーフィングさせるというのは、かなり厳しいんじゃないでしょうかね...
モーフィングの一例としては、「【UnityShader】レイマーチング入門【5】 #36 - 知識0からのUnityShader勉強」のような方法があり得ると思います。とはいえ、記事では形状を立方体と球体に相互に変形できていますが、あれは物体の作る距離場を単純な数式で表現できるため十分高速に実現可能なのでしょう。
Unity上で用いられるモデルはポリゴンでできたメッシュなのが普通だと思いますが、そのような物体について距離場を定義するとなると、メッシュを構成する面一枚一枚について距離を求めることになりそうです。数枚~数十枚程度の面でできたシンプルな形状ならいいでしょうが、人型であればそれなりのポリゴン数があるでしょうから計算コストが大きくなってしまうと思います。
彫像のような動かないモデルであれば、距離場を事前計算してTexture3Dだとかの形で持っておくことも可能かもしれません(たとえば「SDF テクスチャを uRaymarching で描画してみる - 凹みTips」の記事中に登場する天使像はそういった状態になっているようです)。ですが、三次元のテクスチャはちょっと精密にしようとするとたちまち莫大なメモリを消費しますし、そのサイズに比例して距離場生成の計算コストも増大しますので、あまり高解像度にはできないかと思います。
他の候補としてはブレンドシェイプとかでしょうか。キャラクターの表情を変化させるのにブレンドシェイブを使っている例をご存じかもしれませんが、その延長として全身を変形させてしまう...というのもなくはないかもしれません。
ですがブレンドシェイプは変形元と変形先の頂点数が同じで、トポロジー的にも矛盾がないという条件でないと使えないでしょう。また、人型のモデルとなるとスキンメッシュアニメーションを行う場合があるでしょうが、ブレンドシェイプではボーンウェイトまでは操作できないようですので、あまり元の形から離れた変形をさせるとアニメーションへの追従具合が不自然になりそうな気もします。
ブレンドシェイプだとどうなるか気になりまして、Standard Assetsに収録されているEthanがSpace Robot Kyleに変身する...というのを試してみました。あの二人は体格が似ていましたので、これぐらいの比較的ささやかな変形量ならアニメーションにもさほど影響しないように思います。
ですがこれはアセットに収録されているモデルそのものではなく、ブレンドシェイプによる変形を行うためにだいぶ仕込みを行っています。詳細を申し上げるには回答欄だと厳しいですが、概要は...
- Ethanの方をベースとする。元のメッシュは頂点数が少なくてKyleの形に変形させるには不十分に感じたので、メッシュを細分割して頂点数を増やす。
- EthanとKyleのモデルを重ね、姿勢も同じにする。KyleはEthanより若干身長が高かったり、体の各部位のプロポーションもだいぶEthanに近いとはいえ幾分ずれがあったので、Ethanに合わせて整形する。
- Ethanの頂点をKyleの体表に沿った位置に移動させたメッシュを作り、その頂点位置と元の頂点位置との差分を求めブレンドシェイプとする。
- EthanとKyleではUVマップもまるで違っている。仕方ないので、頂点位置をKyleの体表に合わせる際に併せてKyleの体表のUV座標を求め、それを手がかりにKyleのテクスチャをEthanのUVマップに合わせて再配置する。
といった感じです。正直なところけっこう粗悪な出来で(Kyleに変身した状態の図をご覧いただくと明確でしょうが、オリジナルのKyleよりもかなりデコボコで、テクスチャも汚くなっています)、きれいに仕上げるにはもっとモデリングのスキルが要求されそうです。
やってみた感想としては、ブレンドシェイプは変形前も変形後も最初からご自身で変形を前提としてモデリングしたのでしたら有効でしょうが、どこかの誰かが作った由来の異なる2つのモデルの間で変形させるのは、かなり手間を要するでしょうからちょっとお勧めしにくいですね...
投稿2021/06/14 14:38
総合スコア10811
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/15 00:21