2.9K Views
December 03, 19
スライド概要
先日公開されたUnity Japan Officeの点群を例に、大容量な点群を扱いやすいサイズへ間引く方法とその点群をVisual Effect Graphへ読み込み描画するまでのフローを紹介します。
※ここで扱う点群はレーザースキャナで事前取得した静的な点群です
■こんな人におすすめ
・大容量な点群の扱いに困っている
・点群をUnityで描画+動かしたい
■得られる知見
・点群データの間引き方
・Visual Effect Graph用点群ファイル.pcacheのフォーマットと作り方
・大容量点群をVisual Effect Graphで扱う際の注意点
リアルタイム3Dコンテンツを制作・運用するための世界的にリードするプラットフォームである「Unity」の日本国内における販売、サポート、コミュニティ活動、研究開発、教育支援を行っています。ゲーム開発者からアーティスト、建築家、自動車デザイナー、映画製作者など、さまざまなクリエイターがUnityを使い想像力を発揮しています。
点群ビジュアライゼーション 龍 lilea
ぷち自己紹介 龍ですがリョウです。本名。藤原 龍。 点群の人? 点描芸大作ってみた フォトグラメトリの人? 銭洗弁天VR作ってみた スーパー緊張人間なので「ご清聴」非推奨! リアクション大きめだと私が安心します! Twitter @lileaLab
何話すの? 1億1600万の点群をVRにして動かした話。 “点描芸大”を作ったときは700万点が限界だった。 しかし建築界隈だと1億点はザラ。 いつかは私も1億! ↓ Visual Effect Graph (VFX Graph) で出来た! Twitter @lileaLab
こんなの出来た 動画URL https://works.lilea.net/191129-unity-doujou/point-cloud-vr
どうやってつくるの? 1. 点群を用意 2. 点群を間引く 3. Point Cacheファイル化する 4. Visual Effect Graphで読み込む 5. お好みでビジュアライゼーション 6. 今後の課題 7. 点群 × ◯◯
使用ソフト Unity 2019.1系 Visual Effect Graphを使うのでLWRP。(HDRPだと負荷が大きいので) ただしLWRPだと点群に影は落とせない点に注意。(Lit系のOutputが使用できない) Visual Effect GraphがLWRPにも対応したのは2019以降のバージョンです。 Cloud Compare https://www.danielgm.net/cc/ 点群編集ソフト。点群を間引くのに使用。フリーソフト。 EmEditor https://jp.emeditor.com/ テキスト編集ソフト。点群ファイルの分割に使用。 ファイル分割スクリプト作れちゃう人は不要。
1. 点群を用意
1. 点群を用意 Unity Japan Officeの点群データはこちら http://aec.unity3d.jp/ ただし、重いです。 1億超えの点群。 普通には描画出来ません。 “点”ではなく大きさを与え描画する為負荷が上がる。
1. 点群を用意 いきなり1億点を扱うのはちょっと… という場合はこんなデータも公開されています。 「Shizuoka Point Cloud DB」 https://pointcloud.pref.shizuoka.jp/ 静岡県が公開している点群データ。 白糸の滝なんかもある。 「3D City Experience Lab.」 https://3dcel.com/ 渋谷駅地下。私と点群の出会いはこれ。
1. 点群を用意 点群描画にはKeijiroさんが作られた神ツール「Pcx」が便利! https://github.com/keijiro/Pcx ただしこれは大規模点群を想定されたものではないため、 1000万を越える点群を入れるとこうなります。 https://twitter.com/lileaLab/status/1102565355736588288 小規模な点群 にはPcxが簡単便利! 大規模な点群 には間引きorファイル分割してVFX Graph!
2. 点群を間引く
2. 点群を間引く 1mm間隔の点群を10mm間隔にすれば点群数は1/1000に。 間引いたらスカスカになるのでは? ↓ Visual Effect Graph内で点のサイズを調整出来ちゃいます。 間引きには「Cloud Compare」を使用。
動画URL https://works.lilea.net/191129-unity-doujou/how-to-subsample-point-cloud
3. Point Cacheファイル化する
3. Point Cacheファイル化する ざっくり言うと― Visual Effect Graphに読みこむ為の点群フォーマットです。
3. Point Cacheファイル化する ヘッダーと座標を持ったシンプルなフォーマット。 アスキーとバイナリ両対応。
3. Point Cacheファイル化する レーザースキャンの点群とほぼ同じフォーマット! なのでヘッダー調整して拡張子.pcacheにするだけで Point Cacheファイルの完成。 具体的にはブログにまとめました。 「Visual Effect Graphで点群表示 - Point Cacheファイルの作り方」 https://lilea.net/lab/pointcloud_vfxgraph/
3. Point Cacheファイル化する 点群をCloud Compareで読込。 不要なデータはこの時点で破棄 しておくと軽くなる。
3. Point Cacheファイル化する 次に表示される画面で 点群の座標を調整する。 点群によっては遥か彼方に 配置されている事があるので ここで確認しておく。 遠方にあると―
3. Point Cacheファイル化する Visual Effect Graphでノードを接続した際に変色する!? 座標が65,536以上の値を持っているとよろしく無いらしい。 座標は調整しておきましょう 不気味なので…
3. Point Cacheファイル化する スケール/座標の調整 ここでは割愛。詳しくはブログ参照ください
3. Point Cacheファイル化する 編集を終えたらASCII形式で保存。 この時点で 拡張子を.pcacheにしておく。
3. Point Cacheファイル化する 書き出し時の設定。
3. Point Cacheファイル化する ヘッダーを編集して完成。 elementsの値を このファイルに含まれる点の総数に 書き換えます。
動画URL https://works.lilea.net/191129-unity-doujou/how-to-make-pcache
3. Point Cacheファイル化する 出来上がったファイルのサイズに注意 1GB越えのファイルは認識しない! 右の例では1,048,576KBを超えたもの が読み込めていない
3. Point Cacheファイル化する 1GBを超えていた場合は(大規模点群の場合は大体越える…)、 ファイルの分割を行います。 そろそろ聞いててめんどくさくなってきましたよね。 面倒です。 この辺自動でやる方法募集中…
3. Point Cacheファイル化する ファイルの分割には「EmEditor」を使用。 スクリプト作れる人は自前でどうぞ!私は出来ないのでこれ使った… 分割の仕方はこちらを参考に。 「ファイルの分割と結合」 ファイルの行数を指定して分割可能。
4. Visual Effect Graphで読み込む
4. Visual Effect Graphで読み込む お待たせしましたUnityパートです! ここまで用意すればあとは簡単。 同じノード作れば出来ちゃう。
4. Visual Effect Graphで読み込む
4. Visual Effect Graphで読み込む
5. お好みでビジュアラインゼ―ション
5. お好みでビジュアラインぜ―ション Visual Effect Graph なので色々出来ます。 「渋谷駅 溶かしてみた」 https://twitter.com/lileaLab/status/1123233434380296198 「芸大 蒸発させてみた」 https://twitter.com/lileaLab/status/1123205997068046337
5. お好みでビジュアラインぜ―ション 「断面な表示」 点群を自由な位置でカット可能
5. お好みでビジュアラインぜ―ション! 「平面な表示」 1500mmより上部をカット
6. 今後の課題
6. 今後の課題 重い! 点群でLOD?点群でオクルージョンカリング? 最適化したい。 計測したい! 点群内で距離を取りたい。 Collider付けたい! 手付けは非現実的。 HoloLensでも活用したい! 見るだけなら今回のLWRP+VFX Graphで出来ちゃいます。 ただし500万点まで間引いても重い…
7. 点群 × ◯◯
7. 点群 × ◯◯ 点群をもっと幅広く活用したい 旧都城市民会館デジタルアーカイブプロジェクトでは 「レーザースキャン点群」 × 「写真」による フォトグラメトリを試行中。 レーザースキャン → mm精度! 写真 → 高品質テクスチャ! いいとこどりが可能!
「レーザースキャン点群」 × 「写真」 フォトグラメトリモデル
「レーザースキャン点群」 × 「写真」 フォトグラメトリモデル
「レーザースキャン点群」 × 「写真」 フォトグラメトリモデル
「レーザースキャン点群」 × 「写真」 フォトグラメトリモデル
7. 点群 × ◯◯ 「レーザースキャン」や「フォトグラメトリ」のメリット。 図面が無い… という場合でもモノがあれば3Dモデル化 → 活用が可能!
動画URL https://twitter.com/lilealab/status/1188420467876458497
7. 点群 × ◯◯ 次は… 「レーザースキャン点群」×「写真」×「GNSS」 緯度経度情報からcm精度で現実の座標に紐付いた3Dモデル。 技術の組み合わせで課題解決へつなげたい!
ご清聴ありがとうございました!!