CloudCompareでCloud layersを handling cloud layers in CloudCompare

1. このページ作成の意味

 もともとの関心はGISソフトでの3Dクラウドとgcpの重ね表示の可能性を探ることであった。ここに至る経緯は次のページに示している。

 このページの作成過程で,gisソフトでは実現しないことがわかった。MeshLabに期待したが,これも重い3Dファイルを受け付けない点で問題があった。結局,CloudCompareに頼らざるを得なかった。CloudCompareではMeshLabでどうにもならないものでも何とか作業ができるのである。

 で,問題はレイヤー構造で使用出来るかであるが,Danielの情報で,使えることがわかったのである。ただ,図1のように,Plugins: Cloud layers,は灰色になっている。

図1 (図7 使用しているCloudCompareのPlugins: Cloud layers は灰色)再掲

 Help > About Plugins,で開いた画面が図2である。Cloud layersを選択するが,これ以上進めない。Referencesとして,サードパーティのWiggins Tech website が見えるが,ここをクリックするとこの注記が消えてしまう。

図2 Cloud layersは表示されているが

2. Plugins: Cloud layersのインストールに向けて

図3 Webサイト 3Ds-scan.de にプラグインが

 図3を参照して欲しい。なにか不可解なのだが,CloudCompareのサイトではなくて,3ds-scan.de で公開されている。ぼくがインストールしているのは,図1の v 2.12.4 (Kyiv)なので,2.12.0はより古いバージョンだ。

 キーウで現在活動する企業(サードパーティ)のようだ。

 このサードパーティのリンクをCloudCompareを使用しているWindowsで立ち上げた。ドイツ語が表示される。言語を換える選択肢があり,日本語に替えた。その画面が図3のものである。このサイトは2016年11月から始まっている。図3の「Cloud Layers」プラグインをクリックするとmp4のムーヴィーが始まるがCCもなく,音声も出ない。

 図3の表示のすぐ下には,ダウンロードリンクがある。CloudCompareのミラーサイトの認証を受けているようだが,ヴァージョンが2.12.0のままだ。更新されていない。CloudCompareはフリーだけどサポートが要るというメッセージが色つきになっている。

 次の情報がある。ただし,当方の Editメニューでは,’Edit > Cloud > Create single point cloud‘しか有効でない。Edit > Scalar fields についても下に示された選択肢はすべて灰色になっているのである。

Here are the new menu entries:

  • Edit > Cloud > Create single point cloud
    • to create a cloud with a single point (set by the user)
  • Edit > Cloud > Paste from clipboard‘ (shortcut: CTRL+P)
    • to create a cloud from ASCII/text data stored in the clipboard
  • Edit > Scalar fields > Split clouds (integer values)
    • will split the cloud in multiple sub-clouds based on the (integer) values of its active scalar field.
    • to be used with a classification SF typically.
  • Edit > Scalar fields > Add classification SF
    • shortcut to the ‘Edit > Scalar fields > Add constant SF‘ method.
    • creates a ‘Classification’ SF with a constant (integer) value.

 このWebサイトに入ると,ぼくはすごく怪しい印象を持った。どこにもプラグインのダウンロードのリンクはなく,ただ,コンタクトせよという。しかも種々のページを見ていると,bluetoothに繋げようとする。

 Danielさんが,フォーラムで,
Maybe you can use the new ‘qCloudLayers’ plugin?
Another way, maybe more simpler, is to use the ‘Edit > Scalar fields > Split cloud (integer values)’ method. This will create as many (sub) clouds as classes present in your cloud.

という回答をしている理由もそこにありそうな気がしている。

3. 最新バージョンをインストールしてみる

 信頼できるGitHubギットハブで確認した。Version 2.12.0には,確かに,上記の魅力的なプラグインが新たに装備されている。では,何故,最新のステーブル版では灰色になってしまったのか。これがまずは最初のポイントだ。ver. 2.12.0のコードネームKyivを獲得したのもキーウの貢献ゆえだろう。

 V. 2.12.1〜.4まで,特に当該プラグインがinactiveになったのかは,記されていない。

 ではと,最新のアルファ版をダウンロードしてみるのがいいのだろう。GitHubよりももちろん,本家からがいいだろう。本家をみると,より進んだβ版になっている。
CloudCompare 3D point cloud and mesh processing software Open Source Project

 インストーラーは265MB以上ありダウンロード継続の表示が見えないので非常に取り扱い難い。圧縮版は64MBで軽く,7zで解凍して,ドラッグアンドドロップで,Program Filesに投げ込んだだけだ。ショートカットを作って,デスクトップに配置した。macの方は不思議なのだがダウンロードが始まったのは見えたが,時間をかけて見ると,消失している。2回繰り返したが同様の現象が見られた。ファインダーで検索しても見当たらない。図4にはGitHubのダウンロードページであるが,このオレンジでマークしたtar.gzファイルをダウンロードした方が早かったであろう。これは7zで解凍する。Windows64用である。

図4 GitHubからダウンロード
図5 CC v.2.13βにみえるPluginsリスト
図6 Cloud layersを選択すると,Cloud has no scaler fieldsのエラーが
図7 Edit > Scaler fieldsのsubmenu

 図5〜7は,新たにダウンロードしたCloudCompare v. 2.13βの表情である。CloudCompareを選択して,v. 2.12.4と比べてみた。確実に改善されている。灰色だったものがactiveになっている。図5のように,開いたPluginsの下方にCloud layersが見える。これを選択した結果が,図6で,Cloud has no scaler fieldsのエラーが現れる。図7には,Editのメニューが見えている。このScaler fieldsを選択した際のリストが見えているが,このうち,Add constant SFなどが関係しているようである。このSFは,Scaler fieldsの略号と思われ,この定義をした上で,Cloud layersを見ることができるのだろう。

図8 Cloud layersの一例

 図8を見れば,Cloud layerが何ものか,わかるであろう。これは実際にやってみないとわからない。海岸地形は緑藻や紅藻のなどの分布が地形的な位置づけを反映しているので,おおよその区分を実施する上で参考にはなるだろう。

 とはいえ,ぼくはこのようなCloud layerを求めていた訳では無いので,残念っという思いの方が強い。

 このCloudCompareのCloud layersはこの程度のものなのか。とにかく,Danielの意見に戻らないといけない。

4. gcpクラウドを作成すべく既存のツールに期待したのだが

 次の,Edit > Cloudのうち,single point cloudしか,アクティブになっていない。もしクリップボードにデータがあれば,アクティブになる可能性がある。

  • Edit > Cloud > Create single point cloud
    • to create a cloud with a single point (set by the user)
  • Edit > Cloud > Paste from clipboard‘ (shortcut: CTRL+P)
    • to create a cloud from ASCII/text data stored in the clipboard

2章の末尾のDanielさんのアドバイスを次に再掲する。

Maybe you can use the new ‘qCloudLayers’ plugin?
Another way, maybe more simpler, is to use the ‘Edit > Scalar fields > Split cloud (integer values)‘ method. This will create as many (sub) clouds as classes present in your cloud.

 メニューを見ると,Edit > Scalar fields > Split cloud (integer values),はグレイになっている。これも何らかの前処理があってのことである。さて。

以上,19:32,2024/01/07記。

 ちょっと,考えて見て,gcpのクラウドをエクセルやエディターで作成して,CloudCompareに取り込んで,メーンのdroneから得られたcloudの上のレイヤーとして表示するだけのことじゃないか,と考えついた。以前から頭にあったことが出てきたという感じである。

 で,その構造であるが,easting, northing, altitude,なのだけど,できれば,gcpの名称も欲しい。その観点で次に。

5. gcp cloudの書式は?

 どうしてこんな簡単なことをすぐにしなかったのか。CloudCompareでは幾つものメッシュやクラウドを取り込んで,DB Treeで,上下に移動してきたので,CloudCompareを使い始めてから,実はクラウドのレイヤーを操作してきたのである。

5.1 まずはEdit > Cloud > Create single point cloud

 結局,数点のクラウドをどのように作るかである。Edit > Cloud > Create single point cloud,って,何だろうか,ってわけで実際に使ってみた。x(easting: 地球座標系とは異なることに注意), y(northing), z値(altitude)を入力した(図9)。この値は,苦肉の策の,座標回転後のものである。

 この本題とは異なるが,2020年の調査結果をまとめたフォルダー毎,みつからない。別氏から送られてきたこれまでのdroneデータを全部削除する過程で,このフォルダーも殺したらしい。macのトラブルがあって,それに関するページを次のようにDec. 14に作成している。その翌日にTimeMachineでバックアップしたのだが,ここに殺したフォルダが残っていて,コピペした。幸い,座標回転までのエクセルデータがあった。このあたりから,別氏の再計算を待つ形で,キンドル本発行に注力したらしい。助かった。インフルエンザで多少熱があて鼻水だらだらながらの削除作業だったので,失策をしたらしい。怖いなあ−。

図9 Edit > Cloud > Create single point cloudの入力

 図10は,座標値の簡略化の誘いの画面であるが,これに乗ってはならない。個々の座標値入力の際には必ず出てくる。drone測量の結果であるPLYファイルをCloudCompareに取り込む際にもNoを選択しているので,地球座標系の数値(GIS用にXYは例によって逆転)のままである。同じ座標系でないとgcpは宇和美崎オブジェクトに載らない。

図10 座標値の簡略化の誘いに乗らないように

 図10左ペーン最上部のDB Treeには,a_rot, f_rot,が見える。cloud☁︎(図中は白色だが)アイコンがついている。階層は🗂️アイコンがついたdroneファイルと同じだ。これでは,全部選んだとしても,CloudCompareのbinファイルとしては保存できない。

 ここで取り上げているCreate single point cloudコマンドで実行すると,DB Treeには自動で#001, #002,などとナンバーリングされる。この名称をタップすると,名称変更が可能なように入力できるようになって,a_rot,f_rot,とした訳である。メーンペーンでは白い小さな丸が現れて位置を確認できるのである。左ペーン中央のPropertiesのWindowでは,Name: a_rot, Visable: ☑️,Show Name:◻︎,が見える。Show Nameに☑️すると,メーンペーンに「a_rot」が現れる。

 これはいい!,と他の点も作成してゆくのである。5点まで登録して,「待てよ」となった。とにかく,一度,保存してみようと。図11左ペーンに見えるように,差し当たり作成した5点をまとめて保存することにした。File > save,だ。メーンペーンに,Save Ascii file,のパネルが現れた。しめしめ。パネルの意味はなんとなくわかる。

図11 現れたパネル: Save Ascii file

 図12 Save Ascii fileパネルに適宜入力したけど。coordinate precisionを8から12に(xy座標の期待できる精度から)。Scalarは変更せず6で(a_rotなどの名称ではないかと考えては英数字6文字で十分だと)。テキストとしては扱いやすいcsvで(それでseparatorをcommaに),白いアイコンも欲しいのでColorsもそのまま。

図12 Save Ascii fileパネルに適宜入力したけど

 さて,もともとのPLYがあったフォルダーには,5点が別々のcsvファイルとして保存されていた。名称は,gcp_000000.csv〜_000004.csv,である。まあ,いわばブラウザーでまとめて選んだだけで一つのファイルになるという想定が問題ではあった。

図13 ブラウザーでの5点ファイル

 なんと,ぼくはこのブラウザーで,gcp_000000.csvをgcp_a_rot.csvなどと変えちゃったりしたのである。これらのファイルを開くと自動でエクセルが開くが,名称やアイコンの色情報もなく,ただただ,x,y,zの値のみだ。

図14 ブラウザーで5点のファイルを変更

 CloudCompareで,図15のように,この5点をまとめて,読み込んだ。

図15 この5点をまとめて読み込み

 図16のように,パネル「Open Ascii file」が個々の点について現れるのだ。

図16 Open Ascii file パネル

 図17のように,5点がそれぞれ,フォルダーを持っていて,その下位に配置されている。一点ごとに。これは不合理だ。ポイント位置が見えない。そこで,Show nameに☑️すると,ポイントの名称が所定の場所に現れるのでおよそは位置がわかる。これではどうしようもない。PropertiesのBox dimensionsでは,x,y,zともゼロになっている。ここの「10」程度の数値が必要だろう。

図17 大変なのだ

 以上の経験から次の方針: ポイント位置を保持するようなポイントの定義が必要だ。点をまとめて一つのフォルダーにまとめる必要がある。csvファイルに,ポイント名,座標情報,アイコン定義,が必要だ。

5.2 必要な属性を備えたgcpファイルを作成するには

 Create a new layer of just ground points (already classified) での質問回答は,Danielが開発者故のものであった。フランスの質問者は,まさにぼくのこのテーマなのである。ベーシックな質問であった。

 ASCII export variables – what are they? この情報に先に会っていたら,このページのここまでの試行錯誤は不要であったろう。図12のSave Ascii Fileパネルのパラメータに対するDanielの回答が次に。

Re: ASCII export variables – what are they?

Post by daniel » Sat Nov 05, 2022 3:03 pm

– coordinates precision: number of digits for coordinate values (X, Y, Z)
– scalar precision: number of digits for scalar field values (distance, intensity, etc.)
– separator: separator character between the above values (use a comma to create a CSV file for instance)
– order: order of the values (columns)
– header option: to add a description header (starts with ‘//’ and then you’ll find the name of each column)
– number of points: simply the total number of points on the first line (that’s expected if you want to create a valid ‘PTS’ file for some other tools)
– colors:
* use float values (between 0 and 1) instead of integer (between 0 and 255) for R, G and B components
* save the alpha (transparency) component as well

しかし,これではまだわからない。

 種々調べたけど,わからない。結局,自分でやるしかない。Danielさんに一度聞いてみたいものではあるが。xyz座標値は必須だが,マークbodyにxyz,それに,その色だ。そんなのはDanielさんの上のリストにはない。とにかく,エクセルでcsvファイルを作って,CloudCompareに読み込ませて,そこで指定してゆくのだろうなあ。

 図18のように,マックのエクセルでcsvファイルを作ってウィンドウズの所定のフォルダーに入れた。それをCloudCompareで開いたら,図19のように,念願の表Open Ascii Fileが出た。これが欲しかった。やってみないとわからない。図19の葡萄茶色の行はぼくが作成した列タイトルだ。適当に,Placemark, x-easting, y-northing, z-altitude, body-x, -y, -z, R, G, Bとしたのが,このテキストから適当に解釈して,それぞれ, この葡萄茶色の行のすぐ上の灰色の行のように,Label, cood.X, Y, Z, SF Scalar 3個,Red (0-255), Green (0-255), B (0-255), と配列している。

図18 macのエクセルで作ったcsvファイルをウィンドウズに配置
図19 Open Ascii Fileが出たあ
図20 タイトル行を削除
図21 図20の右方への続き

 自ら設定した列タイトルに合わない場合,図22のように,変更することができる。

図22 用意された見出しを出してみた

Nx, Ny, Nzは,Per-point normal vectorsでここでは関係ない。SF-Scalarは,Per-point scalar values,であるが,ぼくはbox-xなどとしてしまったものでこれに対応している。ぼくが設定したRGBは,A unique color for the whole entityに対応しているようだ。Quaternion WXYZは複素数のようだ。とにかく,わからない。

 とにかく,図22の右下の,apply allのボタンを押した。図23の右上には正方形が表示されている。box-x,-y,-zとして全部10としたものである。図23で画像の拡大縮小に関わらずこの正方形のサイズは変わらない。アホだな。図24のように全7点が点アイコンもこの画面では変色しているが,指定の黄色だ。

図23 右上の正方形はScalar field
図24 全7点が問題なく表示されている

 結局のところ,Scalar fieldの役割はわからないままだが,この3列を廃棄すればいいことがわかった。

6. drone cloudとgcpとの対応関係を見る

 上記のように, csvファイルの作成要素はわかったので,マックで編集して,図25のようにCloudCompareで読み込んだが,その結果が図26である。この画面では黄色というよりも明るい緑色になっている。Google Earthでもよく体験することだ。

図25 csvを読み込んだところ
図26 gcpが読み込めた

 これ以降については,研究に流れ込むので,プライベートページに移動する。

以上,22:11,2024/01/08記。