投稿

ラベル(アニメーション)が付いた投稿を表示しています

Open3DでMesh Deformationを行ってみる

イメージ
以下の動画のように、3次元メッシュモデルの一部をつまんで変形をさせる場合の代表的な手法としてAs-Rigid-As-Possible(ARAP)という制約を用いた方法がある。 As-Rigid-As-Possible Surface Modeling, EUROGRAPHICS/ACM SIGGRAPH Symposium on Geometry Processing 2007 この方法では、変形の前後で局所的な構造(各頂点の相対的な位置関係)を保つような制約を用いた最適化によって変形後の各頂点位置の算出を行っている。ARAPを用いた変形に関しては、 CGAL や libigl にも実装がされているが、 Open3D にも 0.9.0 から実装がされているのでこちらを試してみた。 #include <iostream> #include <string> #include <open3d/Open3D.h> int main(int argc, char** argv) { // モデルの読み込み open3d::geometry::TriangleMesh input_mesh; open3d::io::ReadTriangleMeshFromOBJ("../model/elefante.obj", input_mesh, true); // 変形後のモデル std::shared_ptr<open3d::geometry::TriangleMesh> output_mesh; // 制約を付加する点のIDと頂点位置 std::vector<int> constraint_idx; std::vector<Eigen::Vector3d> constraint_pos; int count = 0; for (size_t i = 0; i < input_mesh.vertices_.size(); ++i) { Eigen::Vector3d vtx = input_mesh.vertices_[i]; if (vtx.z()...

顔写真からアバターを作ってみる

イメージ
最近、コロナウイルスの影響で、色々なイベントがオンラインやVR開催になってきている。VR開催の場合、自分自身のアバターを使いたいというような要望も多いようで、Photogrammetryの技術を使って全身を撮影したデータから3次元復元してアバターを作るサービスなどもあるよう。実際に撮影してみたい気持ちもあるが、緊急事態宣言が出されている状況では撮影スタジオに行くのもどうかと思うので、別の方法で作成してみることにした。 色々と調べていると、有料だけれどもCharacter Creatorというソフトウェアがよさそう。このソフトウェアのHeadShotというプラグイン(別売り)を使うと顔写真1枚からアニメーション可能な頭部のモデルを作ってくれる。しかも2020年4月30日までの限定で全ての製品が半額になるキャンペーンをしている。今年はゴールデンウイークもまだ緊急事態宣言期間中なので、自宅に引きこもることになるのでキャラクターアニメーションの勉強のためにも購入することにした。 Character Creator https://www.reallusion.com/store/product.html?l=4&p=cc どんなことができるかはこの動画を見ると分かるかと思う。 Wikipediaの安倍総理大臣の顔写真から作った3次元モデルは以下のようになった。 画像をドラッグアンドドロップするだけでこのクオリティで生成できるのはすごい。また、処理の過程を見ていると、まずは髪の毛無しの頭部を復元して、後から髪のモデルを生成しているよう。 生成したモデルは、以下のように顔の表情を変えることもできる。 アバターに関しては、頭部のみパーソナライズされていれば、首から下はいくつかのテンプレートが用意されていれば十分な気がする。 今回は、全自動で頭部のモデルを生成する「AUTO」モードを利用したけれど、「Pro」モードについてもどういったことができるのかこれから試してみようと思う。 ところで、AR/VRでリアルなアバターの需要ってどのくらいあるんだろうか。有名企業がDigital Humanのプロジェクトをやっているのを見ると、それなりに需要はあるのかな。