【完全無料】FreeCADで数百万円規模の土木CADを超えろ!Hori Lab開発「並列超高速土量計算&LODヒートマップ」ツールの全貌
はじめに:高額な土木専用ソフトはもう不要?
近年、国土交通省が推進する「i-Construction(アイ・コンストラクション)」やBIM/CIMの普及により、3次元点群データや3D地形モデルを活用した土量計算が当たり前の時代となりました。しかし、これらを処理するための土木専用CADソフト(Civil 3DやLandXML対応ソフトなど)は、導入費用が数百万円、年間ライセンス料だけでも数十万円にのぼることも珍しくありません。
「もっと手軽に、無料で、しかも爆速で土量計算ができるツールはないのか?」
そんな現場のエンジニアや測量士の皆様の声に応えるべく、Hori Lab(ホリラボ)は、オープンソースの無料3DCADソフト「FreeCAD」上で動作する拡張スクリプト『並列超高速土量計算 & LODヒートマップツール』を独自開発しました。
本記事では、このツールの圧倒的なパフォーマンスと、実務に即したこだわりの機能、そして技術的な裏側までを余すところなく解説します。
1. 開発の背景:3D点群処理の「重さ」との戦い
オープンソースのCADで地形データを扱う際、最大のネックとなるのが「データ容量の重さによるフリーズ」です。UAV(ドローン)写真測量やレーザースキャナで取得した点群データは数百万〜数千万点に及ぶこともあり、一般的なCADにそのまま読み込ませて計算処理を行うと、メモリ不足(OOM)でソフトが強制終了してしまいます。
そこでHori Labでは、Pythonの強力な科学計算ライブラリである「NumPy」や「SciPy」を駆使し、何百万点というデータでも数秒で処理を完了させる独自のアルゴリズムを構築しました。高額なワークステーションではなく、一般的なノートPCでもサクサク動く「実用性」に極限までこだわって開発しています。
2. 本ツールの5つの「圧倒的」な特長
Hori Lab開発のツールには、市販の高級CADにも引けを取らない5つの強力な機能が搭載されています。
① 待たせない!独自ラスタライズによる「爆速並列計算」
現況地形(施工前)と計画地形(施工後)のデータ(メッシュまたは点群)を選択して実行すると、一瞬で切土量(Cut)と盛土量(Fill)を計算します。点群の密度に応じてアルゴリズムを自動で切り替える賢い設計になっており、データが10万点未満の場合は高精度な「Delaunay三角網補間(LinearNDInterpolator)」を、10万点を超える超高密度データの場合は、配列処理に特化した「高速グリッド集計(np.bincount)」を自動適用。最大2,500万セルの計算を安全に行い、計算待ちのストレスをゼロにします。
② FreeCADがフリーズしない「LODヒートマップ」自動生成
土量計算において、視覚的な確認は非常に重要です。本ツールは計算完了と同時に、切盛の深さに応じて7段階のカラーパレット(大切土〜施工境界〜大盛土)で色分けされた3Dヒートマップメッシュを自動生成します。特筆すべきは「LOD(Level of Detail)技術」を採用している点です。裏側の土量計算は10cmや20cmの超高解像度で行いながら、画面に描画する3Dメッシュは最大120×120のグリッドに自動で間引き(リサンプリング)して生成します。これにより、何百万点のデータからヒートマップを作っても、FreeCADの3Dビューが重くならず、60FPSでヌルヌルと快適に視点移動が可能です。
③ 実務仕様!土量変化率(L・C)に対応
単なるCAD上の体積計算(幾何学的な地山土量)だけで終わらないのがHori Labのこだわりです。土木工事の実務では、掘削した土は空気が混ざって体積が増え(ほぐし率:L)、ダンプで運んでローラーで締め固めると体積が減ります(締固め率:C)。本ツールはダイアログボックスからこの「L」と「C」のパラメータを自由に入力可能。
- 運搬土量(切土 × L): ダンプトラックが何台必要になるかの算出
- 必要地山土量(盛土 ÷ C): 盛土に必要な土砂の購入量の算出(これら実務で最も知りたい数値を、計算結果レポートとして即座に出力します)
④ 点群の欠損を救う「自動補間(インペインティング)」
ドローン測量やレーザースキャナーでは、重機や樹木を除去した跡、あるいは死角になった部分に「データの穴(NaN)」が生じます。従来のツールではこの穴が計算エラーの原因になっていましたが、本ツールには画像処理技術を応用した「インペインティング機能」を搭載。欠損したセルを周囲8セルの標高データから自動的に平均化して穴埋め補間を行います。これにより、荒い現場データでもエラーなく一発で計算が通ります。
⑤ 施工境界(クリッピング)の自由な指定
広大な測量データのうち、「今回工事するのはこのエリアだけ」というケースに対応するため、施工境界ポリゴンでのクリッピング機能を実装しました。FreeCAD上でスケッチ機能やワイヤーを使って任意の閉曲線(ポリゴン)を描き、ツール実行時に指定するだけで、その境界内の土量のみを厳密に抽出して計算します。
3. 基本的な使い方・ワークフロー
使い方は驚くほどシンプルです。数回のクリックで、高度な解析が完了します。
- データの準備: FreeCADに「現況データ(メッシュor点群)」と「計画データ(メッシュor点群)」を読み込みます。必要に応じて施工境界のスケッチを描いておきます。
- オブジェクトの選択: ツリービューで、比較したい2つのデータ(および境界スケッチ)をCtrlキーを押しながら複数選択します。
- ツールの起動: ツールバーの専用アイコン(地球と重機のアイコン)をクリックします。
- 条件の設定: ポップアップダイアログが開きます。
- 現況データの指定(どちらが施工前か)
- 単位系の選択(CAD標準のmm、または測量標準のm)
- DEM解像度の選択(0.1m / 0.2m / 0.5m / 1.0m)
- 土量変化率(L・C)の入力
- 実行&確認: 「OK」を押すと並列計算がスタート。数秒後に詳細な計算結果メッセージが表示され、画面上には美しい7色のヒートマップが生成されます!
4. Hori Labの技術的裏話(Tech Insights)
少しマニアックになりますが、このスクリプトを開発する上でHori Labが最も苦労し、こだわった「内部アルゴリズム」について解説します。
「Forループを殺せ、NumPyに任せろ」
Pythonは非常に書きやすい言語ですが、C++などで書かれたCADの内部処理に比べると実行速度が遅いという弱点があります。数百万点の座標データをPythonの標準機能(forループなど)で回すと、それだけで数十分〜数時間かかってしまいます。
そこで今回のスクリプトでは、座標のインデックス化と集計に numpy.bincount というC言語レベルで最適化された関数をハックして利用しています。X/Y座標をセルサイズで割り算して整数化(インデックス化)し、同じセルに入るZ座標(標高)の合計を点の数で割って平均標高を出す、という処理をベクトル演算のみで完結させています。これにより、Pythonでありながらコンパイル言語に匹敵する恐ろしい速度(まさに爆速)を実現しました。
さらに将来的なアップデートを見据え、Numba(JIT並列コンパイラ)にも対応するフック(try-except によるインポートチェック)を組み込んでおり、環境構築が整ったPCではさらなる限界突破が可能な設計思想になっています。
5. こんな方におすすめ!
- 中小規模の土木・建設業者様: 高額なCIMソフトの導入に踏み切れないが、発注者から3Dデータでの土量計算を求められている方。
- フリーランスの測量士・設計士様: ドローン測量(SfM)で出力した点群データを、クライアントにわかりやすくビジュアル化して提出したい方。
- 学生・研究機関の方: 地形変化のシミュレーションや、アルゴリズムの学習用途として、ブラックボックスではないオープンソースの土量計算ツールを探している方。
6. おわりに & ツール導入方法
これまで「お金を払わなければできない」と思われていた高度な3D土量計算とLODヒートマップ描画が、FreeCADとHori Labのツールを組み合わせることで、誰でも・完全に無料で実現できるようになりました。
実際の動作スピードやヒートマップが生成される瞬間の感動は、ぜひYouTubeの動画でご確認ください!動画内では、実際の点群データを使ったデモンストレーションをノーカットで収録しています。
▼YouTube動画の視聴はこちら▼
▼ツールのダウンロードとインストール方法▼
本Pythonスクリプト(CalcEarthworkParallelLOD.py)は、以下のHori Lab公式から無償でダウンロード可能です。
[こちら] ページへ飛び、FreeCADワークベンチの最新版をダウンロードします。
Hori Labでは、今後も「オープンソース×土木技術」をテーマに、現場で役立つ実用的なツールを開発・公開していきます。「こんな機能が欲しい」「ここを改善してほしい」といったご意見がありましたら、YouTubeのコメント欄や当サイトのお問い合わせフォームからお気軽にお寄せください。
皆様の日々の業務の効率化に、このツールが少しでも貢献できれば幸いです!
(記事執筆:Hori Lab)

0 件のコメント:
コメントを投稿
コメントありがとうございます!承認後に公開されます