点群からBIMへ: 自動パイプライン
このデモは、ほぼ完全に自動認識が可能なモデルにおける、ポイントクラウドからBIMへの完全なパイプラインを示しています。
ロードとセットアップ
まず、Dockerを使用してMLサーバーを実行します。これはセマンティックセグメンテーションに必要です。MLコンポーネントは、C++ APIとは独立した別のDocker + Pythonサービスとして実行されます。次に、OdaScan2BimAppを起動し、「ポイントクラウドからBIMへ」モードを選択して、ポイントクラウドをロードします。
ステージ1:セマンティックセグメンテーション(オプション、MLベース)
専用のパレットからセマンティックセグメンテーションを開始します。使用されるモデルはPoint Transformer V2 Extendedで、現在私たちが注目している2つのモデルのうちの1つであり、もう1つはPointMLPです。どちらも、S3DIS(Stanford 3D Indoor Scene Dataset)と私たち自身がアノテーションしたポイントクラウドでトレーニングされた、私たち自身の実験に基づいて選択されました。
セマンティックセグメンテーションは、クラウド内の各ポイントを壁、床、天井、またはその他としてラベル付けします。これはオプションのステップですが、下流の精度を大幅に向上させます。これがないと、パイプラインはテーブル、椅子、ベッド、ラジエーターなど、クラウド内のすべてのものから平面領域を抽出します。これらの非構造オブジェクトはノイズを生成し、BIM認識中に誤った壁や床として誤解されます。セグメンテーションはこのノイズを早期にフィルタリングします。
完了後、アプリケーションはセグメンテーション結果とのインタラクションを可能にします。クラスを選択的に非表示または表示したり、元の点群の色を復元したり、異なる視覚化モードを組み合わせたりすることができます。
ステージ2:平面領域の計算
この段階では、意味的にセグメント化された点群から平面を抽出します。初期の過剰セグメンテーション(異なる表面を結合する可能性のある過少セグメンテーションを意図的に回避)のためにスーパーボクセルクラスタリングと領域成長を使用し、次に反復RANSAC平面検出によって平面を見つけ、その後、領域成長を使用して表面を洗練します。
最初のステップであるスーパーボクセルクラスタリング、領域成長、およびRANSACは、サードパーティのPoint Cloud Library (PCL)を使用します。それ以降のすべてはODA独自のコードであり、表面の洗練と拡張、および境界認識が含まれます。境界は、3D点を2D画像(上から見た投影と側面から見た投影)に投影し、2D領域を分析し、それらを3Dにマッピングすることで決定されます。
このアプリケーションは、平面領域のみ、点群のみ、またはそれらの組み合わせといった異なる視覚化モードの組み合わせをサポートしています。
ステージ3:BIMオブジェクト認識
このテストモデルでは、認識はほぼ完全に自動であり、わずかなパラメータ調整のみが必要です。認識は以下の固定されたシーケンスに従います。
まず、床の認識 — 水平な領域はIfcSlabとして識別されます。近くにある同一平面上のスラブは結合され、断片化された領域は接続され、小さなセグメントは除外されます。
次に、壁の認識 — 垂直な領域にも同じ手順が適用されます。壁は識別され、結合され、接続され、フィルタリングされます。
次に、床と壁のリンク — 壁と床の間の空間的関係が確立され、正確に位置合わせされるように幾何学的調整が適用されます。
次に、傾斜した領域が存在する場合は屋根の認識を行います。
最後に、開口部の認識 — 壁の形状の空隙は窓やドアとして識別されます。これはMLセグメンテーションが役立つ2番目の場所です。家具(ベッド、本棚、ラジエーター)の背後にある壁の点がないことによって生じる見かけの開口部は、誤検出として識別され、フィルタリングできます。MLセグメンテーションはこのフィルタリングを可能にします。MLがない場合、誤った開口部は自動的にフィルタリングされません。
出力
結果はIFCファイルとしてエクスポートされます。検証と品質評価のために、ODAのOpenIFCViewerなど、IFC互換のビューアで保存および開くことができます。
点群からBIMへ: 手動修正
このデモは、自動パイプラインが大幅な手動介入を必要とする現実世界のシナリオを示しています。OdaScan2BimAppで利用可能な修正ツールと、実際に発生する問題の種類を説明します。
保存された中間結果から開始
時間を節約するため、セマンティックセグメンテーションと平面領域計算から事前に計算され保存された結果から開始します。このアプリケーションでは、中間パイプラインの状態を保存し、後でそこから再開することができます。これは、最初の2つの段階(セグメンテーションと領域計算)に時間がかかるワークフローにとって不可欠です。
課題:閉じたドア
この特定の点群の主な問題は、ほとんどすべてのドアが閉じた状態でスキャンが実行されたことです。閉じたドアは点群データでは壁と区別できず、パイプラインはドアがあるべき開口部を検出できません。これは、スキャン・トゥ・BIMワークフローで最も一般的な現実世界の問題の1つです。
自動ステップ
最初の認識ステップは依然として自動です。スラブ認識、壁の識別、壁の結合。これらは、困難なスキャンでもかなりうまく機能します。
手動修正ワークフロー
自動接続後、結果を確認し、手動修正を開始します。アプリケーションはいくつかの主要なツールを提供します。
BIMモデル上の点群オーバーレイ — 元の点群を認識されたBIMジオメトリに重ね合わせることができます。これにより、生のスキャンデータと生成されたモデルを視覚的に比較することで、認識がどこで間違っていたかを簡単に見つけることができます。
個別操作の取り消し — 最初のケースでは、ドア領域が誤って壁領域に接続され、無効な壁が生成されました。その特定の接続のみを取り消し(操作履歴全体ではなく)、ドア領域を削除し、正しい領域を手動で接続します。
壁のサイズ変更 — いくつかの壁は調整が必要です。短くしたり、長くしたり、幅を広くしたりします。この段階では厳密な精度は必要ありません。後の自動手順(床と壁の幾何学的調整)が正確な位置合わせを処理するためです。
手動フィルタリング — 自動ノイズ壁フィルタリング後も、いくつかの誤った壁が残ります。これらを手動で削除します。
手動の床と壁のリンク — 自動リンクでは床に届かない壁を処理できません。これらには手動でのリンク作業が必要です。
開口部認識の課題
幾何学的調整後、開口部認識に進みます。閉じたドアの問題により、このスキャンでは自動的な誤開口部除去の性能が低くなります。元の点群を再度重ね合わせ、誤った開口部を手動で削除します。
一部のドア開口部は全く検出されません — スキャンがドアを固体表面として捉えたため、壁のように見えます。これは根本的な限界です。スキャン中に物理的なドアが閉じていた場合、その背後に開口部が存在することを推測できるアルゴリズムはありません。
結果
手作業が必要であるにもかかわらず、最終的なBIMモデルは建物の構造を正確に表現しています。手動修正ツール、特に個々の操作の取り消し、点群の重ね合わせ、要素のサイズ変更は、困難なスキャンであってもプロセスを管理可能にします。
メッシュからB-Repへ
このデモでは、複雑度の異なる2つのモデルにおけるメッシュからB-Repへの変換パイプラインを示します。これはSDK内の独立した方向であり、点群からBIMへのパイプラインとは接続されていません。
メッシュからB-Repへの変換とは
目的は、ポリゴンメッシュ(三角形分割されたサーフェス)を、CADおよびBIMアプリケーションで使われる標準的なジオメトリ形式である正確な境界表現(B-Rep)に変換することです。B-Repモデルは、正確な数学的サーフェス、きれいなエッジ、適切なトポロジーを備えており、編集、測定、および下流のエンジニアリングワークフローに適しています。
変換プロセス
このパイプラインは2つの段階で機能します。まず、メッシュがセグメント化されます。曲率解析と鋭いエッジ検出によって領域に分割され、各領域は正準サーフェス(平面、円筒、球、または円錐)として分類され、セグメントは隣接する一貫した領域をカバーするように拡張されます。
次に、B-Rep構築です。各セグメントは解析的サーフェス表現に変換され、隣接するサーフェス間の交差曲線がエッジを定義し、サーフェスはトリミングされて完全なB-Repソリッドボディに組み立てられます。使用されるB-Repエンジンは、ODA Lightweight B-Rep Modelerです。
モデル1:非平面フィーチャを持つ単純なジオメトリ
最初のモデルは主に平面で構成されており、平面領域の識別は容易です。しかし、円筒形および円錐形の穴が含まれており、これは正準サーフェス認識能力をテストします。システムはこれらを円筒と円錐として識別し、対応する解析的サーフェスを作成し、穴と周囲の平面との間の交差曲線を含む有効なB-Repジオメトリを構築します。
モデル2:複雑な曲面ジオメトリ
2番目のモデルは三角形の数は少ないですが、より困難です。これは、はるかに多くの円筒セグメントを含んでいるためです。曲率半径が大きい場合、円筒面を識別するのはより困難です。なぜなら、そのような面はほぼ平坦に見え、平面と混同される可能性があるからです。このモデルは、システムがこの曖昧さをどのように処理するかを示しています。
非正準セグメントの問題
平面、円柱、球、または円錐として認識できないセグメントが主な課題です。現在、SDKはブルートフォースのフォールバックを使用しており、認識されないセグメント内の各三角形がB-Rep出力で個別の平面フェイスになります。これにより有効なモデルが保証されますが、フェイス数が増加します。実験的なスプラインベースの曲面フィッティングアプローチは、限られたケースで有望な結果を示していますが、任意のセグメントの堅牢な再構築は未解決の研究課題です。
DWGエクスポート
結果はDWG形式でエクスポートでき、標準的なCADプログラムでの検証や、DWGベースのワークフローを使用するチームとの共有に役立ちます。慣れたツールでB-Repの品質を確認できることは、変換結果を検証するために重要です。