【先週の】GaussianSplatting VS 黒色無双【ツリー再利用】

# はじめに
アドベントカレンダー上の先週の記事にて
[「3Dプリンターで印刷したクリスマスツリーをARアプリで飾り付け」](https://qiita.com/GONBEEE_project/items/a53e2b49bd5b26b809c0)という記事を
公開しましたが、今回はそのツリーを再利用しよう！という企画です。

前回の記事で、PLAブラックで印刷した黒いクリスマスツリーを3Dスキャンして、
それをARマーカーとして扱う、というフローをご紹介しました。
実は各種3Dスキャンは（これまでの常識では）**黒いモノ・光沢・反射など**に大変弱く、
記事でも「印刷カラーが黒のため識別精度が低く、題材としてはよくない」と
但し書きをしました。

ところが2024年現在急激に流行っている（要出典）新たな3D表現技術
**GaussianSplatting**という技術は、黒いモノや反射なども含め
**人間が見たままの空間**をそのまま表現できる・・・可能性があるものです。

今回の記事はそんな黒・光沢・反射をも表現できるGaussianSplattingと
超特殊塗料である**黒色無双**をバトルさせてみよう！という企画になります。

# GaussianSplattingって何？
GaussianSplattingとはフォトグラメトリやLiDARに次ぐ、
現実空間の3Dスキャン・表現技術の1つです。
複数の画像や動画から結像させるという点でフォトグラメトリと似ていますが、
生成されるデータ形式や「人間がパッと見たときに感じる品質」に大きな差があります。

フォトグラメトリの場合はポリゴンで形成されたメッシュデータが、
レーザースキャンの場合は大量の点で表現される点群データが
それぞれ出力されます。
一般的に「3Dモデル」と呼ばれるものは基本的にメッシュデータで、
工業向けなど精度の高いデータが求められる場合に点群データが扱われます。

それらに対しGaussianSplattingの場合では、
ガウス分布と呼ばれる形式で表示されます。
（ガウス分布：正規分布とも呼ばれる。偏差値グラフとかのアレです）
具体的にどのような形で描画されるかというと、
実際に画像を見ていただくのが一番早いですね↓。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/f1890efd-efe6-7977-54a6-7b634bd12b83.jpeg" width=40%> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/11d71efd-6810-9c44-2f4c-4650f65a20fb.png" width=40%>

左側が全体図、右側がズームした時の画像です。
全体としてみるとまるで写真かのようなグラフィック品質・表面の質感が見えます。
表面にズームしていくとそれぞれの粒子が**ぼんやり半透明の細長い楕円**として
描画されているのがわかります。（青い円で囲っている部分）
これがGaussianSplattingにおけるガウス分布の1つずつの粒子です。

超ざっくり説明すると**1つ1つが楕円形になった点群データ**という認識で大丈夫です。
データフォーマット的に点群と直接の互換性はありませんが、
完全に座標データ・色データしか保持していない点群に対し、
座標・色・方向・広がり度合いなどのデータがあるGaussianSplattingといった形です。

旧来のフォトグラメトリやレーザースキャンなどと比べ、
生成される結果が極めて写実的で
**人間がパッと見たときに感じる品質が非常に高い**のがGaussianSplattingの特徴です。
3Dスキャン分野の常識としては、
鏡面反射や特徴点の少ない壁、黒一色の表面などはスキャンが非常に難しく、
そういった物体をフォトグラメトリでスキャンしようとすると頻繁に形状が崩れます。
しかしGaussianSplattingだとそういった鏡面や黒い表面なども表現することができます。
そこで、GaussianSplattingはどこまでスキャンが出来るのか知りたいということで
**GaussianSplatting VS 黒色無双**という企画が発足しました。

## KTECとGaussianSplatting
一応アドカレなので会社のことをひとつまみ。
KDDIテクノロジーでは実は結構ガッツリGaussianSplatting関連に取り組んでます。
（公知情報なので書いて大丈夫な内容）

実際にGaussianSplattingを活用した取り組みとして、
株式会社壽屋さん（フィギュアでおなじみのコトブキヤ）による
「GS3Dフィギュア メガミデバイス 忍者」の制作に技術協力として、
スキャン～結像などの部分で携わらせていただきました。

https://company.kotobukiya.co.jp/news/news-10553/ 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/87ca6db8-8dab-29da-99fe-43313b6bd404.png)
　　　↑この辺に注目

# 黒色無双って何？
黒色無双とは「可視光域の光吸収率99.4%、世界一黒い水性塗料」です。
今回は暗素研さんから販売されているものを利用しています。

https://www.ansoken.black/musoublack/

可視光の吸収率が極めて高い、ということは
入射した光が反射せず、そのまま消滅してしまうということです。
立体物に塗布した場合、立体物の形状によらず文字通り真っ黒な状態になってしまうため、
どのパーツが手前・奥にあるのか、立体感を失ってしまうレベルの見え方になります。
動画で見ると多少分かりやすいかと思います、
3本あるツリーの真ん中のものが黒色無双で塗装されたツリーですが、
多少の立体感はあるものの、異質なシルエットであることがわかります。

<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr">こ、これが黒色無双………！ <a href="https://t.co/jpCtOQ7V1X">pic.twitter.com/jpCtOQ7V1X</a></p>&mdash; ごんびぃーᯅ@XR開発者集会 (@GONBEEE_project) <a href="https://twitter.com/GONBEEE_project/status/1871230653888655787?ref_src=twsrc%5Etfw">December 23, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


## 太黒門について
太黒門は同じく暗素研さんから販売されている可視光吸収率99.9%の布です。

https://www.ansoken.black/taikokumon/

こちらは塗料ではなく背景などに利用する布状で販売されており、
これはこれで立体感を失う特殊なアイテムです。
同じく動画で見ると分かりやすいでしょう。

<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr">新しいおもちゃをゲットした！！！！<br><br>太黒門、世界一黒い布………<br>GaussianSplattingとバトルだ！ <a href="https://t.co/x2Q8hvHVpx">pic.twitter.com/x2Q8hvHVpx</a></p>&mdash; ごんびぃーᯅ@XR開発者集会 (@GONBEEE_project) <a href="https://twitter.com/GONBEEE_project/status/1868908539911323753?ref_src=twsrc%5Etfw">December 17, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

あまりにも黒すぎて、スマホのカメラで撮影しようとすると
露出補正を頑張ってしまい、画面全体が真っ白になります。
中央においてあるツリーは黒いツリーのはずですが、
グレーっぽい色になってしまっています。

--------------------

これらの**可視光吸収率が極めて高い塗料・布**と、
**人間が見た様子に極めて近いGaussianSplatting**、
戦わせたら何が起こるかな・・・？という
3Dスキャンの技術発展と、塗装業界の技術発展の代理戦争（過言）が始まります。

# GaussianSplatting VS 黒色無双
ということで本題です。
今回3Dスキャンに利用するツールは前回の記事同様、
スマホスキャンアプリの**Scaniverse**です。
GaussianSplattingの撮影はLiDAR非搭載の端末でも出来るため、
AndroidユーザーでもiPhone14ユーザーも、
すぐにお手元で検証していただけます。


## バトル① 通常ツリー・通常背景
まずは手始めに通常のPLA黒で印刷したツリーと、何も置いていない通常の背景です。
いくら黒いツリーとはいえ、フォトグラメトリでも十分結像できる特徴点はあり、
GaussianSplattingでも余裕で結像できます。
（逆にこの時点でアウトだったらそもそもバトルが成り立たないですからね・・・）

流石にGaussianSplattingの勝利！（というか土俵に立ってない）

<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr">GaussianSplatting vs 黒色無双、その1 <a href="https://t.co/4FFydpZ8F6">pic.twitter.com/4FFydpZ8F6</a></p>&mdash; ごんびぃーᯅ@XR開発者集会 (@GONBEEE_project) <a href="https://twitter.com/GONBEEE_project/status/1871236095381520545?ref_src=twsrc%5Etfw">December 23, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## バトル② 通常ツリー・太黒門背景
このあたりから雲行きが怪しくなってきます。
まずは結像した様子から御覧ください。

<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr">GaussianSplatting vs 黒色無双、その2<br>もう怪しい！ <a href="https://t.co/ZD7w8aWTE9">pic.twitter.com/ZD7w8aWTE9</a></p>&mdash; ごんびぃーᯅ@XR開発者集会 (@GONBEEE_project) <a href="https://twitter.com/GONBEEE_project/status/1871236481941156131?ref_src=twsrc%5Etfw">December 23, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

**もうだいぶ怪しい！**
ギリギリクリスマスツリーの3Dモデルであることは認識できますが、
特定アングルからだとほとんど崩れてしまっている瞬間もあり、
引き分け・・・かギリギリGaussianSplattingの負けまである
（スマホカメラの限界だろと言われると、それはそう。）

こうなってしまう背景情報として、
スマホカメラの補正性能、及びScaniverseのアプリ挙動が挙げられます。

<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr">Scaniverseでスキャンしようとした時の挙動まじおもろい、<br>露光調整めっちゃ頑張ってる………すごいな…… <a href="https://t.co/9Q9VG2GJQh">https://t.co/9Q9VG2GJQh</a> <a href="https://t.co/TBeO7V4wbL">pic.twitter.com/TBeO7V4wbL</a></p>&mdash; ごんびぃーᯅ@XR開発者集会 (@GONBEEE_project) <a href="https://twitter.com/GONBEEE_project/status/1868982382101196879?ref_src=twsrc%5Etfw">December 17, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

こちらの動画から分かる通り、Scaniverseから呼び出しているカメラは
各種パラメータがオートで制御されているため、太黒門背景で撮影しようとすると
凄まじい勢いで画面が白飛びを始めます。
その結果GaussianSplattingの撮影も白飛びしてる状態で始まってしまうため、
上記動画のように白いガウス分布で表示されてしまう、という流れになっています。

### パラメータを固定する場合
Blackmagic Cameraを利用してカメラパラメータを完全固定し動画撮影、
業務用のガチ結像環境に持っていって結像に挑戦しましたが、
残念ながら結像失敗でした・・・。
おそらく背景側の特徴点が少なすぎて、画像のアラインが出来なかったのだと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/afebeda7-2832-ddc2-cf70-b18a58302ec6.png)
![Screenshot from 2024-12-17 19-48-50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241210/1949665d-dfd2-ba70-fc31-5368086229d0.png)

逆に太黒門背景で白飛びor結像失敗ということは、
本体も黒色無双だった場合もう・・・。

一応Scaniverse環境ならギリギリモデル生成は出来たということで、
GaussianSplattingの勝利・・・かな？

## バトル③ 黒色無双ツリー・通常背景
ここからは本体が黒色無双で塗装されたバージョンになります。
スキャンする前の推測としては「通常背景では割といけるのでは？」と考えていました。
というのも、3Dスキャンにて重要なのは特徴点の多さであって
特に小物をスキャンする場合は本体の特徴点だけでなく、
背景空間の特徴点も参照することができます。
本体側の特徴点が0でも背景によって画像のアラインに成功すれば
モデル自体の結像は可能です。
そのため通常背景であれば本体の状態によらず結像可能・・・果たして？

<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr">GaussianSplatting vs 黒色無双、その3<br>本体が黒色無双のケース、割としっかり結像するし<br>輪郭もそこそこ分かるな<br><br>いやまぁ黒い塊過ぎて何もわからんけど… <a href="https://t.co/uAbAn0T2eO">pic.twitter.com/uAbAn0T2eO</a></p>&mdash; ごんびぃーᯅ@XR開発者集会 (@GONBEEE_project) <a href="https://twitter.com/GONBEEE_project/status/1871248373124349988?ref_src=twsrc%5Etfw">December 23, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

予想通り、比較的しっかり結像してくれました。
モデルを見てみると思いの外陰影がついてしまっており、奥行き感が結構ありますね。
ただ①で撮影した通常のツリーと比較すると明らかに黒くなっており、
結像はするもののだいぶ見にくい状態ではあります。

他の条件でのバトルもそうですが、
今回の検証を本当に厳密にやるならば撮影環境の統一はもちろん、
光源環境もかなり気を使って構築しないと真なる同条件検証にはなりません。
今回の記事は一旦Scaniverseなど手軽に追試できる状態でやるというのをゴールとし、
将来的に環境完全統一の本気の黒色無双バトルをいつかはやってみたいですね。

## バトル④ 黒色無双ツリー・太黒門背景
最後に対象物・背景ともども黒色無双で真っ黒になった場合です。
本体の特徴点・背景の特徴点両方ともが消滅すると
流石のGaussianSplattingでも結像は難しいはず・・・。

<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr">GaussianSplatting vs 黒色無双、その4<br>片面が完全に崩れた！ﾓｯﾜﾓﾜだ〜！ <a href="https://t.co/n6GIrt6WGn">pic.twitter.com/n6GIrt6WGn</a></p>&mdash; ごんびぃーᯅ@XR開発者集会 (@GONBEEE_project) <a href="https://twitter.com/GONBEEE_project/status/1871254279664890203?ref_src=twsrc%5Etfw">December 23, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

結果このような形で結像・・・？されました。
前半分が白いツリーの状態で結像され、後ろ半分が完全に崩れてしまっています。
やっと崩れました！逆にいうとここまでしないとScaniverseでのスキャンは崩れないのか？

こちらの動画はScaniverseの出力機能で出した動画で、
強制的に全方位から撮影するオプション（オービット）を選択しています。
それに対しScaniverseのアプリ内ビュアーでは、
特定アングルから先はモデルが崩れてしまっており、
回り込むことができませんでした。

<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr">Scaniverse、モデルが崩れてるアングルには回り込ませないっていう挙動があるんですよ実は <a href="https://t.co/d9AveEFcwO">pic.twitter.com/d9AveEFcwO</a></p>&mdash; ごんびぃーᯅ@XR開発者集会 (@GONBEEE_project) <a href="https://twitter.com/GONBEEE_project/status/1871262521493188864?ref_src=twsrc%5Etfw">December 23, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

撮影中に気になった部分としては、
撮影範囲内にあるもの全てが真っ黒に見えるせいで、
露光補正で視野がすごく明るくなるという現象がありました。
上の動画でもギリギリツリーが見えているアングルがありますが、
グレーっぽいツリーに見えなくもない、というカラーリングになっています。

黒くし過ぎると逆に露光補正で白くなって結像される、
というのはスマホスキャンならではの特性でしょうか。
今回はやりませんが、将来的に業務用のガチ結像環境で追試してみたいところです。

# 結論&おわりに
今回はスマホ3DスキャンアプリScaniverseを使って、
なるべく一般のご家庭で再現可能な形で検証してみました。

全体として、元々この企画を考えていた当初の予想よりも
GaussianSplattingが頑張ってくれたなぁという印象です。
今回完全にデータが崩れたのは④くらいで、
他は（見える・見えないは置いておいて）データ的には結像しています。
GaussianSplattingの表現力が思いの外高い事がわかりました。

ただし今回撮影環境が完全に統一できていないため、
（①②はKTEC豊洲オフィス、③④はごんびぃー宅）
若干検証する上ではノイズが入っている状態です。
今後塗装自体の塗る回数や吹き付け方などを変えてみたり、
今回は床面のみに配置した太黒門を5面分購入して、
真っ黒なボックスを作ってそこで検証したり、
他にも出来る事はまだまだ多くあります。

更に結像環境についてもスマホアプリではなく、
KTECの業務で利用している業務用結像環境（NDAなので詳細は言えませんが）を使って
各種パラメータを煮詰めた上での検証も可能です。

多くの変数が残っている状態なので、あくまでも今回の検証は
アドベントカレンダーの連携企画ということで一つお納めいただければと思います。

最後まで読んでいただきありがとうございました。
今後も引き続き3Dスキャン関連やXR関連情報を発信していこうと思いますので、
引き続きよろしくお願いします。
良いお年をお過ごしください！