🦔

Instant Skinned Gaussian Avatarsを試す

に公開

これです。

https://github.com/naruya/gaussian-vrm

概要

  1. スマホでスキャンしてplyファイルを作る
  2. plyファイルをちょっと編集する
  3. GVRMに変換する
  4. 動かして興奮する

Scaniverseでスキャン

npakaさんが紹介してくれてます。
アプリでスキャンして点群データを作ってパソコンに送ります。

https://note.com/npaka/n/na1e66c6136ff

データを綺麗にする

後の工程でGVRMに変換するのですが、私の場合は以下のエラーが発生してGVRMに変換できませんでした。

データが悪いのかもと思い、playcanvasのSuperSplatを使って中身をみてみます。

https://github.com/playcanvas/supersplat

git clone https://github.com/playcanvas/supersplat.git
cd supersplat
npm install
npm run develop

http://localhost:3000/ を開いてみると以下のような感じで、上下逆さまになってました。

これが原因かはわかりませんが、良くない気がするので修正します(想像)。
左上にあるZの値が180になってるので0にします。

ゴミデータが多いのも良くない気がするので削っちゃいます(想像)。
少なくとも処理に時間かかるだろうし。

「ピッカー選択(R)」で人物の箇所を辺りを囲んで、「反転」をすると簡単です。
反転したあとにDeleteキーで不要なデータを削除しちゃいます。

このあと、可能な限り無駄を削ってみてたのですが、削りすぎてもエラーになりました。
これまた想像ですが足元(床)も消しすぎちゃうとダメとか?

作業が終わったらエクスポートでplyファイルを出力します。

GVRMに変換する

前述のnpakaさんの記事に手順が書いてあります。
以下のリポジトリをクローンしてアプリを起動します。

https://github.com/naruya/gaussian-vrm

http://localhost:8000/ を開くとこんな画面が表示されますので、一番上のメニューを選択して、先ほどのplyファイルをアップロードします。

スキャンっぽいことをしてるクールな画面をしばらく眺めてると、できあがります。

動かしてみる

適当にアプリに組み込んでみて動かしてみます。

VRMなのでExpression Managerも使えるのだろうかと試しましたが、エラーにはならないものの何も起きませんでした。
もしこれが動いたらフォトリアルなAIアバターこれでいいじゃんと思ったけど残念。

gvrm.character.currentVrm.expressionManager.setValue("blink", 1.0);
gvrm.character.currentVrm.expressionManager.setValue("aa", 1.0);

Discussion