【iPhoneLiDAR活用】大量のスキャンデータを一括でフォーマット変換する方法【CloudCompare】【BATファイル】
#ふつーのひとのiPhoneLiDAR活用術
こちらの記事ではCloudCompareのコマンドラインモードをbatファイルから呼び出して、自動的に複数のスキャンデータファイルのフォーマット変換を行う方法について紹介しています。
スキャンデータをいろいろなソフトで使いたい
iPhoneLiDARでスキャンした3Dデータは様々なことに使うことができます。(みんキャプで地縛る、Unityを通してVRに持ってく, etc.)
ただし、そのためにはスキャンデータを使用したいソフトウェアに合わせたフォーマットに変換する必要があります。これからスキャンするのであればスキャンソフトで適切なフォーマットを選択すればよいですが、もうすでに出力してしまったデータはそうもいきませんね。数が多いと変換作業も大変です。
そこで今回はCloudCompareのコマンドラインモードを活用して、複数のスキャンデータを一括でフォーマット変換する方法を試してみましょう。
↓これを手動で変換するのは大変ですね...
CloudCompareのコマンドラインモードについて
CloudCompareはCUIから呼び出すためのコマンドをいくつか用意してくれています。(公式Wikiはコチラ)
まずは1つのファイルについて変換するコマンドを作成してみましょう。
CloudCompare -SILENT -C_EXPORT_FMT LAS -O 20211104-1.ply -NO_TIMESTAMP -SAVE_CLOUDS
① CloudCompareの実行ファイルパス指定
先頭から見ていきましょう。『CloudCompare』にはCloudCompareの実行ファイルが格納されているパスが入ります。
<例>
D:\0_home\05_Software\CloudCompare\CloudCompare.exe
② CloudCompareを起動しないように設定
『-SILENT』はCloudCompareのGUIを起動しないようにする設定です。
③ 出力フォーマット指定
次に『-C_EXPORT_FMT LAS』の部分です。ここには変換先のファイルフォーマットが入るので、今回はみんキャプに使えるようLASを指定します。
<変換先として指定できるフォーマット>
『-C_EXPORT_FMT』で出力できるフォーマット(点群)
・ASC
・BIN
・PLY
・LAS
・E57
・VTK
・PCD
・SOI
・PN
・PV
『-M_EXPORT_FMT』で出力できるフォーマット(メッシュ)
・BIN
・OBJ
・PLY
・STL
・VTK
・MA
・FBX
④ 入力ファイルパス指定
『-O 20211104-1.ply』では入力ファイルパスを指定します。入力ファイルとしてはCloudCompareで読み込めるすべてのフォーマットが対応していると思います。(私の方ではply,obj,lasが読み込めることは確認しました。)
(CloudCompareの対応フォーマット表はコチラ)
⑤ ファイル名に時刻を入れないようにする設定
『-NO_TIMESTAMP』はファイル名に時刻を入れないようにする設定です。(※これでファイル名は変更されなくなりますが、同名のファイルが存在すると上書きされるので注意してください。)
⑥ ファイルを保存する設定
『-SAVE_CLOUDS』を指定することでフォーマット変換後のファイルを保存することができます。(メッシュ形式のファイルをフォーマット変換した場合は『-SAVE_MESHES』を指定します。)
ここまでで、CloudCompareのコマンド準備は完了です。
batファイルの作成
さて、CloudCompareのコマンドの準備ができたので、いよいよbatファイルの作成に取り掛かります。下図のように変換したいファイルがあるフォルダに「format_conversion.bat」というファイルを作成して下さい。
次に作成したファイルをメモ帳等で開き、下記コマンドの内容をコピー&ペーストしてください。
@echo off
rem フォーマット変換
for %%f in (*.ply) do (
D:\0_home\05_Software\CloudCompare\CloudCompare.exe -SILENT -C_EXPORT_FMT LAS -O %%f -NO_TIMESTAMP -SAVE_CLOUDS
)
コピーをしたら、保存してメモ帳を閉じ、「format_conversion.bat」をダブルクリックして実行してください。すると下図のように変換後のファイル(今回はlasファイル)が出力されます。
これで大量のスキャンデータをみんキャプで使用できるフォーマットに変換することができましたね!
おまけ
今回作成したファイルでも一括変換はできますが、入力パスとかを編集するときに間違えそうなので、私は下記のように整えたbatファイルを使用しています。記事本編と同様にbatファイルを作成してコピペすれば動くと思うので良ければ使ってみてください~。
↓rem はbatファイルにおけるコメント(人間用のメモ)
@echo off
setlocal
rem CloudCompareのパスを指定
set Path_CloudCompare=D:\0_home\05_Software\CloudCompare\CloudCompare.exe
rem 変換したいフォーマットを指定
set input_format=PLY
set output_format=LAS
rem 入出力フォルダのパスを指定
set CURRETNT_DIR=%~dp0
set Path_input=%CURRETNT_DIR%input
set Path_output=%CURRETNT_DIR%output
rem フォーマット変換
cd %Path_input%
echo %Path_input%の中身をlasに変換中...
for %%f in (%Path_input%\*%input_format%) do (
echo %Path_input%\%%~nxf...
%Path_CloudCompare% -SILENT -C_EXPORT_FMT %output_format% -O %Path_input%\%%~nxf -NO_TIMESTAMP -MERGE_CLOUDS -SAVE_CLOUDS
)
rem 出力されたファイルを出力フォルダに移動
move *.%output_format% %Path_output%
cd %Path_output%
endlocal
rem 出力確認用の一時停止
pause
↓ふつーのひとのツイッター
Twitter:@HNohito