鉄工所の三代目がもがくblog

鉄工の仕事の話はほぼ出てこない

【Unity】タブレットで点群データを表示させたかった

(追記)失敗談なのでiPad用の点群ビューアをお探しの方は"KiwiViewer"で検索をかけると宜しいかと思います。
(さらに追記)kiwiViewrが64bit対応されないまま消滅してしまいました。

前フリ

レーザースキャナは広域をそのまま3次元データとして取得するには優れた方法ですが、
いかんせん生成物がヘビーすぎるので取り回しに非常に苦労します。

というのも点群データだけではせいぜい眺める程度にしか使えないのですが、
そのお気軽な用途に反して蓋を開ければ少なくても数十万、場合によっては数千万、数億点の点の集まりという性質がストレージとメモリの少ない環境での取り回しを非常に困難にしています。
かと言って点群から3Dモデルを起こすのも大変な手間がかかりますし、情報もかなり抜け落ちるのでありのままを取得する点群データの良さも無くなってしまいます。
一応、今現在ではPCにおいては無料のビューアも配布されるようになりそこそこのスペックでも閲覧できるようになりましたが、モバイル用途(タブレット)では皆無と言っていい状態です。*1
ましてや点群と3Dモデルの同居という構成では見たことがありません。
というわけでUnityで点群ビュアー作成に挑戦してみました。
目標は建物の建設予定地を計測した広域点群に3D完成モデルをドンと配置してその中をウォークスルー、といった感じです。

 

作ってみよう

まずはプログラムを書くところから。
点群データはASCやXYZなどテキスト形式のデータで吐き出せば中身は
X座標,Y座標,Z座標,赤,青,緑,(+明度など)
といったシンプルな構成になっています。
これを区切り文字ごとに切って配列に格納。
あとはひたすら軽量化の為余計なコンポーネントを省いた球のプレハブを呼び出して座標と色を当てはめていきました。
恥ずかしながら何の工夫もない力技です。他にいい方法が思いつきもしない・・・。

とりあえず点群のサンプルとしてFARO Focus3Dで取得したスカイツリーの模型を使うことにしました。
サンプルなのでだいぶ間引きましたがこんな感じ。

 

f:id:kkei17:20150825154748p:plain

駄目だった

f:id:kkei17:20150825154754p:plain

何か出てる。が、異常に重い。
一部の表示には耐えたものの引いて全体を表示させようとするとOSごとフリーズ。
ファンもフル回転の爆熱状態。
これは、駄目だ・・・。

見え方が悪いのはこれから改善していきましょうとか言う以前の重さ。


ちなみに点群データの中身はこんな感じ。

f:id:kkei17:20150825154759p:plain


1行が1点の座標と色を表しています。
今回は7378行なので7378オブジェクト生成したことになります。
この数自体が果たしてUnity的にどうなのかは分かりませんが、Late2011の13インチMBP(オンボード/メモリ16GB)では全体を表示させるとOSごと固まる結果となりました。
この有様ではこの方法でiPad用広域点群ビュアーを作るのはかなり厳しい様子。

というわけで、別の方法をとることにしました。
また次回。

(追記)続き書きました

thethird.hatenablog.comちなみに

UnityのAssetstoreにPointcloudに関するアセットが幾つかあったりします。

Point Cloud Viewer and Tools $75

しかしモバイルでは動かず。

Point Cloud Free Viewer 無料

対応がoff形式のみ。中身はただのテキスト座標データだが頭に2行余計なものがあるので他からデータを引っ張ってくる場合これをどうしたものか。

MeshLabがoffを吐き出せるみたいなので後で試す予定。

*1:あるにはありますが、任意の点で点群を回転させる+ズームイン/アウトくらいで建物に入っていくようなビューは難しい。