Skip to content

点群が異常に肥大化して表示される不具合(Rikugi-en / HOUSE of HOSOO)— ADAPTIVE点サイズと平坦データの相性 #2

Description

@naokazuterada

概要

一部の点群データ(HOUSE of HOSOORikugi-en)で、ビューア上の点が異常に肥大化し、円盤状に重なって表示される不具合。特に植物の葉や点密度が低い領域で顕著。

Image (House of Hosoo / December)

この状況を再現する視点

症状

ADAPTIVE 点サイズモードにおいて、植物の葉や点密度が低い領域で点がディスク状に肥大化して重なる。地面など点密度が一様で平坦な領域では発生しにくい。

データセット 状態
HOUSE of HOSOO ❌ 不具合あり
Rikugi-en ❌ 不具合あり
joei_ji / Murinan / 風月楼 / Sessyutei 等 ✅ 問題なし

これまでの経緯

1. ビューア側の対症療法を試行(解消せず)

  • pointcloud.material.maxSize = 15(Potreeデフォルトは50)でサイズ上限をクランプ → 症状は緩和するが本質的解決にならず、見た目への影響も大きい
  • 点サイズモードを ADAPTIVEATTENUATED(カメラ距離のみで点サイズを決定)に切替 → giant point は回避できるが見た目が大きく変わってしまう

いずれも完全な対策にはならず、現状コードは ADAPTIVE モードのまま(クランプ無し)に戻している。

2. 点群データ側の問題と判断し、提供元へ問い合わせ

当初の調査では「z方向(高さ)の範囲が x, y に対して極端に狭い」というデータ特性に起因すると判断。提供元に対し、z方向の外れ値の確認PotreeConverter の変換パラメータ再検討代替ツールでの変換を相談した。

3. 提供元からの回答

  • 変換は PotreeConverter のデフォルト設定で実施しており、パラメータの変更箇所の調査からになる。検証効率の観点から、LASファイルをこちらに送るので寺田側で検証してほしい
  • 代替ソフトでの変換は調査中
  • **「z軸方向の外れ値は無さそう」**との確認結果

4. 実LASファイルを受領 → 本Issueで再調査

0101TDK_TLSLDC_M001E001.las(Rikugi-en / 1億5600万点 / 3.8GB / PDRF2)を受領し、ヘッダ解析・点分布のサンプリング・密度解析を実施。


今回の実LAS解析結果

① 外れ値は存在しない(提供元の確認と一致)

1億5600万点をサンプリングして全軸の分布を確認。

min/max全体 上下0.1%除去後
X -7.0 〜 431.7(438.7m) 13.4 〜 426.6(413m)
Y 34.4 〜 443.0(408.2m) 52.0 〜 438.6(387m)
Z -7.1 〜 28.6(35.8m) -6.4 〜 23.1(29.5m)

上下0.1%を除去してもバウンディングボックスは 438.7m → 413m とほぼ変わらない。
「外れ値を除去して再変換」しても giant point は解消しないことが確定。

② spacing 3.43m は計算ミスではなく仕様どおりの値

spacing = cube一辺 / 128(PotreeConverter 2.x のデフォルト)に正確に一致(438.8 / 128 = 3.43)。
実点間距離はボクセル占有解析から約1〜2cm。3.43m はオクツリー最上位ノードの間隔であり、異常値ではない。
PotreeConverter 2.x をデフォルトで再変換しても完全に同じ結果(決定論的)。

③ 真の判別因子は「平坦さ(z/cube比)」

リポジトリ内の全データセットを横並び比較した結果、不具合の出る2件だけが突出して平たい。

データセット cube一辺 spacing 実z範囲 z/cube 状態
Hosoo 116m 0.91 11.0m 9.5%
Rikugi-en (新) 438.8m 3.43 39.9m 9.1%
Rikugi-en (旧) 568.3m 4.44 70.1m 12.3% (旧版)
ryogen-in 57.5m 0.45 10.0m 17.3%
Murinan系 98〜118m 0.77〜0.92 33〜68m 33〜58%
風月楼系 97〜143m 0.76〜1.12 29〜59m 30〜53%
Sessyutei 154.6m 1.21 57.9m 37.5%
  • 不具合の出る2件だけが z/cube ≈ 9% と突出して平たい
  • spacing の絶対値は判別因子ではない(Hosoo の 0.91 は問題のない Sessyutei 1.21 より小さい)
  • z方向に薄いデータを Potree が立方体オクツリーに収めることで、ADAPTIVE モードの点サイズ算出が破綻する構図

結論

  • 点群データに欠陥はなく、変換も誤りではない。
  • 「外れ値除去 → 再変換」では直らない(②の確定事項)。提供元が同じ方向で作業しても空振りになる。
  • 直すなら方向は2つ:

A. データ側で対応する場合

PotreeConverter 2.x のデフォルトでは spacing が変わらないため、より細かい spacing を強制する必要がある。

  • PotreeConverter 1.x--spacing 指定
  • 変換前に z方向の薄さを考慮したダウンサンプリング 等

→ 当環境に PotreeConverter を導入して、本LASで再変換パラメータの当たりを取ることは可能(156M点・3.8GB のため変換に時間を要する)。

B. ビューア側で対応する場合

以前 ATTENUATED / maxSize を試して「見た目が変わる」と見送ったが、material.size と組み合わせて再チューニングすれば実用範囲に収まる可能性がある。実アプリ上で着地点を探れる。

推奨

まず B(ビューア側の再チューニング) で着地点を探るのが、工数・確実性ともに有利と考える(データ側は提供元の再変換待ちになり、かつ確実に直る保証がないため)。


補足

  • 解析対象LAS: 0101TDK_TLSLDC_M001E001.las(Rikugi-en)
  • 関連ファイル: app/pages/[alias].vuepointSizeType 設定箇所 / 現状 L1616 付近)
  • HOUSE of HOSOO は本Issueの解析対象外だが、同一の根本原因(z/cube ≈ 9.5%)と推定される

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions