
TouchDesignerで大量の点群を読み込む方法
点群データとは、位置情報(正確に言えば、空間座標(x,y,z))と色情報を持った点の情報を集めたデータとなります。
現実世界の位置情報を表現できる点群はミラーワールドやVRといったメタバースを表現するのに大変便利なデータだと考えます。また、iPhone12からはLiDARと呼ばれる、空間情報を認識するためのセンサーが搭載され、だれでも気軽に点群データ作成をすることができます。
とても便利な点群データなのですが、土木・測量向けに作られたデータの場合、データ容量が大規模になり、取り扱いが大変になります。点群データを扱えるTouchDesignerも、ある程度のデータ量であれば手軽に読み込めるのですが、大容量の点群データになると画像が崩れることがあります。この解決方法をまとめました。
なお、今回使用した点群データはARCHI HATCH様が計測した点群データで、許可いただいて利用しています。
より良い方法等ございましたら、ご教授いただければ幸いです。今回の内容は下記の様になります。
1,このテストを行ったPCの構成とソフトについて
2,エラーの現象とその数値について(TouchDesigner)
3,解決方法について
1,このテストを行ったPCの構成とソフトについて
パソコン構成
OS Windows10
CPU Intel Core i910900K
メモリー 64GB
GPU GeForce RTX 3090
使用ソフト
TouchDesigner 2020.22080 Commercial版
CloudCompare http://www.danielgm.net/cc/
2,エラーの現象とその数値について(TouchDesigner)
エラーが出た時は下記の写真の様に、点群情報がぶれたようになります。
発生時の共通点を調べると、私のパソコンでは点群データが600万頂点を超えたときに発生する事が分かりました。
600万頂点という数字はGPUかメモリーの性能によって変わると思うのですが、どこの性能が影響しているか?は未検証です。
もし、限界値の挑戦をされた方がいらっしゃれば、検証したPCの構成と頂点数をコメントしていただけると幸いです。

3,解決方法について
解決方法は「点群データを分割しTouchDesignerのpoint file in TOPを複数使って読み込む」です。
点群データの分割にはCloudCompareというソフトが簡単に使えて便利です。
CloudCompareの基本的な使い方に関しては、朝日航洋株式会社さんの「CloudComparによる点群データ処理方法のご紹介」を参考にしていただければと思います。(最後にリンクをまとめています)
分割の方法ですが、CloudCompareに点群データを読み込み、「直行断面作成」の機能を使い分割していきます。この時ボックスの厚さという数値のところで、点群全体のX軸Y軸Z軸それぞれの数値が出ていますので、ここの数字を調整し、1BOX当たりのサイズを決めます。
今回私がやったのは3600万点でしたので、大まかに7等分すれば、1ボックスあたり600万点以下となるので、ボックスの厚みのY数値を7等分して、上から順番に断面制作を行いバラバラにします。
(分割中にボックスを移動するときは「ボックス移動」のボタンを使うとスムーズです)
バラバラにした点群はそれぞれ別の名前をつけて拡張子(.ply)で保存してください。


余談ですが、TouchDesigneとCloudCompareはXYZの方向が違います。
TouchDesigneは横がX、縦がY、奥行がZ
CloudCompareは横がX、縦がZ、奥行がY、になります。
なので、CloudCompareで作ったデータをTouchDesigneに読み込むと90度回転したデータになります。
そこで、CloudCompareでデータを処理する際はカメラを「上面にセット」のボタンを押して、その方向をを正面と考え書き出すと、TouchDesignerに方向を変えず読み込むことができ、手間が省けます。

TouchDesignerに読み込む時は分割した点群ファイルをpoint file in TOPに一つずつ読み込みます。
読み込み後はPalette内の、PointClouds→pointMergeを使い二つのpoint file in TOPを一つにまとめます。これを繰り返し、7つのファイルを全て結合しました。なお、
色情報はpointMerge の後からだとエラーがでるので各point file in TOPからpoint file Select TOPを使い直接読みだします。なお、RGBに設定したpoint file Select TOPもpoint file in TOP同様にpointMergeで結合できます。
このように結合した点群の位置データと色データを使うと、不思議と点群情報のブレが無くなります。
私なりの見解なのですが、このブレが発生する原因はpoint file in TOPに限界値が設定されているのではないかと思います。point file in TOPは1ドットに1点の点情報を持っています。しかし、point file in TOPの解像度に限界があるので、それを超える点情報が入って読み込める点の数に限界があり、そこに無理に多くの点情報を入れるので1ドットに複数の点情報が入り、点の位置がブレるのではないかと思います。
今回使用した中銀カプセルタワービルの点群データの制作
ARCHI HATCH株式会社
https://archihatch.com/
参考にしたサイト
CloudCompareのダウンロードはこちらから
http://www.danielgm.net/cc/
CloudCompareの日本語化はこちら(ねこやま考古)
http://nekoyama.aoni.net/cloudcompare%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%83%9A%E3%83%BC%E3%82%B8/
CloudCompareの使い方(朝日航洋株式会社)
https://committees.jsce.or.jp/cceips17/system/files/%E6%B4%BB%E5%8B%95%E5%A0%B1%E5%91%8A_04_CloudCompare%E3%81%AB%E3%82%88%E3%82%8B%20%E7%82%B9%E7%BE%A4%E3%83%87%E3%83%BC%E3%82%BF%E5%87%A6%E7%90%86%E6%96%B9%E6%B3%95%E3%81%AE%E3%81%94%E7%B4%B9%E4%BB%8B.pdf
最後まで読んでいただきありがとうございました。
imgee株式会社では点群をはじめとする様々なデータを使いメタバースをイメージする映像制作を行っております。
ご質問やお問い合わせはお気軽に
info@imgee.toko
へご連絡ください。
https://imgee.tokyo/