Instant Skinned Gaussian Avatarsを試す
これです。
概要
- スマホでスキャンしてplyファイルを作る
- plyファイルをちょっと編集する
- GVRMに変換する
- 動かして興奮する
Scaniverseでスキャン
npakaさんが紹介してくれてます。
アプリでスキャンして点群データを作ってパソコンに送ります。
データを綺麗にする
後の工程でGVRMに変換するのですが、私の場合は以下のエラーが発生してGVRMに変換できませんでした。

データが悪いのかもと思い、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さんの記事に手順が書いてあります。
以下のリポジトリをクローンしてアプリを起動します。
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