測れる内見 ― 3D Gaussian Splatting を住まい・不動産に使う
By K.Yoshimi
はじめに
写真では広さが分かりません。図面では雰囲気が伝わりません。
不動産の情報は、この二つを別々に用意して補い合うのが当たり前でした。 3D Gaussian Splatting(3DGS) は、写真のような見た目と、図面のような実寸を、 ひとつのデータに収めてしまいます。
この記事では、弊社のセミナールームを XGRIDS の Lixel K2 で実際にスキャンし、 寸法計測・バーチャル内見・空調シミュレーションの 3 つの使い方を、 同じ 1 回のスキャンデータだけで通してみた結果をご紹介します。
以前の記事「3D Gaussian Splatting × 物理シミュレーション」では 屋外空間を扱いましたが、今回は室内が対象です。 室内では屋外と違い、温度差による浮力が流れを支配します。 そこが最も大きな違いであり、この記事の後半の主題でもあります。
1 回のスキャンで何が手に入るか
Lixel K2 でセミナールームを数分歩きました。三脚も位置決めも使っていません。 得られたのは次の 2 つです。
| データ | 内容 | 用途 |
|---|---|---|
| LiDAR 点群(LAS) | 5,117 万点 | 解析の入力形状 |
| 3DGS(LCC2 形式) | 386 万スプラット | 見せ方・内見 |
前回の記事と同じく、解析入力は LiDAR 点群、見せ方は 3DGS と役割を分けています。 3DGS のガウシアンは見た目を最適化した表現であり、面形状の正確さを目的としていないためです。
部屋の寸法は次のとおりでした。
| 項目 | 値 |
|---|---|
| 広さ | 6.80 m × 9.79 m |
| 天井高 | 2.54 m(点群の分布から)/ 2.499 m(画面上で 2 点を指定) |
| 天井設備 | 天井カセット形エアコン 2 台(0.95 m 角、5.35 m 間隔) |
💡 天井高が 2 通りあるのは、測り方が違うためです。 点群側は床面と天井面それぞれの高さ分布の山から求めており、 LCC Editor 側は画面上でつまんだ 2 点間の距離です。 4 cm の差はどちらかが誤りというより、何を「床」「天井」とみなすかの違いです。 実務では、どの面を基準にした値かを添えて伝える必要があります。
使い方 ① 寸法が測れる
3DGS の最大の特長は、見た目が写実的であることではなく、実寸を持っていることです。
スキャナは LiDAR で距離を直接測っているので、画面の中で 2 点を指定するだけで長さが分かります。 天井の高さ、窓の幅、柱の出っ張り。現地に戻らなくても、あとから何度でも測れます。
動画の 1:10 からが実際の操作です。作図した寸法線ではなく、LCC Editor の画面録画をそのまま載せています。
写真ではできないことであり、点群でもできますが、点群は隙間だらけで「どこを測っているか」が分かりにくい。 3DGS は面として見えるので、測る場所を目で確認しながら指定できます。
使い方 ② バーチャル内見と記録
遠方の方でも、画面の中を歩いて部屋を確かめられます。 気になるところはその場で寸法を測れるので、手持ちの家具が入るかどうかを、行く前に判断できます。
もうひとつは記録としての使い方です。 入居前と退去後を同じ条件で記録しておけば、どこがどう変わったかを重ねて比べられます。 壁の傷も床の擦れも、位置と大きさが数値として残ります。
いずれも「見せるだけ」の VR 内見との違いは、やはり寸法を持っていることです。
使い方 ③ 測った形で、流れを計算する
ここからがこの記事の本題です。
従来、室内の気流を計算するには、実測 → 図面を起こす → CAD で作る → メッシュを切る、 という工程が必要でした。数日から数週間かかります。
3DGS なら、測った形をそのまま計算に入れられます。
ボクセル化
点群から部屋を切り出し、2 cm 格子でボクセル化しました。
- 格子数:492 × 342 × 143 = 2,406 万セル
- 机 10 台と椅子が、現況のまま障害物として入っています
図面から起こすと、こうした什器は普通は省略されます。 実際の気流は什器で乱されるので、現況込みで計算できることには意味があります。
⚠️ ボクセル化では 2 つの落とし穴がありました。 ひとつは、雑音を落とすための収縮処理で、厚さ 1~2 セルしかない机の天板や椅子の座面が 一緒に消えてしまったこと。小さすぎる塊だけを取り除く方式に変えて解決しました。 もうひとつは床の高さで、下位 0.5 % 分位で決めていたため外れ値に引きずられていました。 この部屋は床が机と椅子にほぼ覆われており、床の点(71,828 点)と 天板の点(72,151 点)がほぼ同数という事情もあり、 高さ分布の全体を使って判定する方式に改めています。
天井設備の自動検出
天井面に平面を当てはめ、そこからの「下がり量」と「色の暗さ」で設備を探しました。
天井カセット形エアコン 2 台を検出できました。 外周のスリット(吹出)と中央の四角いグリル(吸込)がはっきり分かれて見えます。
吹出は 4 方向の水平ディリクレ速度条件、吸込は上向きの吸引として与えます。 吸込速度は吹出の 38.2 % に設定しました。 開口面積が吹出 0.275 m2 に対し吸込 0.720 m2 と異なるため、 同じ速度にすると流量が釣り合わず、密閉室内の密度が際限なく下がってしまうためです。
等温で計算すると、間違った結論が出る
まず温度を解かずに、運動量だけで計算しました。
得られたのは「風は天井付近に集中し、居住域はおおむね静穏」という結果です。 居住域(床上 0.1~1.8 m)の平均風速は 0.024 m/s、 ドラフト感の目安とされる 0.2 m/s を超えるのは体積の 1.0 % にとどまりました。
この結論は、温度を入れた計算で否定されました。
温度を解く ― D3Q19 + D3Q7 の連成
流れは D3Q19、熱は D3Q7 の別格子で解き、ブシネスク近似で結合しました。
$$ \begin{align} F_z = \rho \, g \, \beta \, (T - T_{\mathrm{ref}}) \notag \end{align} $$
ここで $F_z$ は鉛直方向の単位体積あたりの力、$\rho$ は密度、$g$ は重力加速度、 $\beta$ は体膨張係数($1/T$、約 0.00334 K⁻¹)、$T_{\mathrm{ref}}$ は基準温度(室内の初期値 26 ℃)です。 冷やされた空気は $T < T_{\mathrm{ref}}$ となるため $F_z$ が負、すなわち下向きの力になります。
今回の条件(温度差 11 K)では $g \beta \Delta T = 0.361$ m/s² で、 完全に冷えた空気には重力の約 27 分の 1 の下向き加速度が余分に働きます。
密度は浮力の項にだけ温度依存を残し、それ以外は一定とします。 力の項は Guo の方式(平衡分布を $u + F/2\rho$ で評価し、衝突後に source 項を足す)を用い、 物体力があっても 2 次精度が保たれるようにしました。
温度に D3Q7 を選んだのは、温度には応力テンソルを解像する必要がなく 7 方向で足りるためです。 記憶容量は D3Q19 の 37 % で済みます。
乱流熱拡散は、スマゴリンスキー渦粘性を乱流プラントル数 0.9 で換算しています。
計算条件
| 項目 | 値 |
|---|---|
| 給気温度 | 15 ℃(一定) |
| 室内初期温度 | 26 ℃(一様、静止状態から冷房開始) |
| 給気風速 | 2.5 m/s |
| 壁 | 断熱 |
| 格子 | 2 cm、2,406 万セル |
| 時間刻み | 0.4 ms |
| 総ステップ | 120,000(物理時間 48 秒) |
| 計算時間 | 24 分(RTX 2080 Ti、2,002 MLUPS) |
温度場を足しても計算速度は等温版(1,944 MLUPS)とほぼ同じでした。 D3Q7 の追加分は、演算とメモリ転送の隙間に収まっています。
なぜ浮力が効くのか
アルキメデス数 $Ar = g \beta \Delta T L / U^2$ で判断できます。
| 場所 | 速度 | $Ar$ | 支配するもの |
|---|---|---|---|
| 吹出口 | 2.5 m/s | 0.05 | 運動量(天井に貼り付く) |
| 広がった先 | 0.3 m/s | 3.6 | 浮力(落ちる) |
速度の 2 乗で効くため、ジェットが減速したところで急に浮力が優勢になります。 等温計算では原理的に現れない挙動です。
結果:冷気は 16 秒で足元に届く
| 時刻 | 冷気(24 ℃未満)の最も低い位置 |
|---|---|
| 2 秒 | 2.10 m(吹出口のすぐ下) |
| 6 秒 | 1.40 m |
| 11 秒 | 0.80 m |
| 16 秒 | 0.14 m(足元に到達) |
| 20 秒以降 | 0.02 m(床に達し、そこに溜まる) |
流れの筋道は次のとおりです。
- 吹出口から出た風が天井に貼り付いて水平に広がる(コアンダ効果)
- 広がるにつれて速度が落ちる
- 速度が落ちると浮力が勝ち、冷気が落下に転じる
- 床に達したあと、床面を這って広がる
48 秒後の高さ方向の平均温度は、天井付近 25.3 ℃ に対し床付近 24.1 ℃で逆転しています。
等温計算との差 ― 居住域の風速は 2.6 倍
| 指標(48 秒後、居住域 0.1~1.8 m) | 等温として計算 | 温度を解いた計算 |
|---|---|---|
| 平均風速 | 0.024 m/s | 0.063 m/s(2.6 倍) |
| 90 % 値 | 0.055 m/s | 0.127 m/s(2.3 倍) |
| 99 % 値 | 0.198 m/s | 0.341 m/s(1.7 倍) |
足元が冷えるかどうかは、温度を解かなければ答えが出ません。
気流の大きな骨格を知りたいだけなら等温計算でも足ります。 しかし「着席者が風を感じるか」「足元が冷えるか」という、 実際に人が気にする問いには答えられません。
| 問い | 等温計算 | 温度つき計算 |
|---|---|---|
| 気流の大きな形は | 答えられる | 答えられる |
| 換気の効率は | おおむね答えられる | 答えられる |
| 足元が冷えるか | 答えられない | 答えられる |
| ドラフトを感じるか | 過小評価する | 答えられる |
3DGS への重ね合わせ
計算結果を、スキャンした実景に重ねました。
前回の屋外の事例では、ParaView 側にマゼンタの遮蔽面を描いて色で前後を判定していました。 今回は 3DGS を自前で描画し、不透明度が 0.5 を超えた地点の距離を深度として取り出すようにしたため、 色に頼らず正しく前後関係を決められます。
3DGS と点群の位置合わせ
LCC Studio が書き出す 3DGS は、LAS の地図とは別の原点・向きを持っています。 どちらも同じ計測から作られているので重力方向は共通と考えてよく、 求めるのは Z 軸まわりの回転と平行移動だけです。
壁の占有図の相互相関で推定し、Z 軸まわり 7.29 度、(+3.20, +17.93, ~0.36) m という結果を得ました。
天井を真上から見ると、3DGS に写る空調パネル 2 枚の中心に、 点群から求めた空調位置(赤い十字)が正確に載っています。 照明 10 本の配置も一致しました。
⚠️ 高さの合わせ方で一度つまずいています。 床の山だけを見て合わせたところ、机の天板を床と誤認して 0.67 m ずれました。 前述のとおり床と天板の点数がほぼ同数だったためです。 床・机・天井の 3 つの山をまとめて相関させる方式に改め、 3 面すべてが 2 cm 以内で一致するようになりました。
この計算の限界
実務に使う前に、以下は明示しておく必要があります。
- 定常ではありません。 壁を断熱としたため室温は下がり続けます。 48 秒間の立ち上がりを見る計算であって、定常状態の計算ではありません。 ただし「冷房を入れて何秒で足元が冷えるか」という問いには、この計算が正しく答えています。
- 在室者がいません。 人体は 1 人あたり 60~100 W の熱源で上昇流を作ります。 冷気の落下と逆向きなので、実際の居住域の風速と温度は本計算とは違ってきます。 形状さえ与えれば人を入れた計算も可能です。
- 給気温度を一定としました。 実際の空調は還気を冷やして送り出すので、 室温が下がれば給気温度も追随します。冷房能力が十分ある場合の想定です。
- ルーバーは水平固定です。 下向きに振れば冷気はもっと早く落ちます。 角度は運転条件であって、スキャンからは分かりません。
- 乱流モデルは粗いです。 レイリー数は $1.9 \times 10^{10}$ で本来は十分に乱流ですが、 2 cm 格子では室内の乱流渦を解像できません。 大きな循環の形は信頼できますが、局所的な乱れの強さは過小評価しています。
まとめ
デモ機が届いた当日にスキャンし、翌日には流体解析まで通りました。 従来この工程には、実測 → 図面起こし → CAD モデリング → メッシュ生成という 数日から数週間の作業が入ります。それが省かれたことになります。
一方で、測れるのは形状だけです。 吹出速度も、温度も、ルーバーの角度も、スキャンからは分かりません。 そこは別途与えるしかありません。
「スキャンすれば解析できる」ではなく、「形状の準備が省ける」 というのが正確な言い方です。 そして、その先を解くのは計算力学の仕事です。
弊社では XGRIDS 3D スキャナの販売と、その先の流体・構造解析までを承っております。 不動産・建築・設備の分野でのご相談も歓迎いたします。
- XGRIDS 3D スキャナ製品ページ
- 関連記事:3D Gaussian Splatting × 物理シミュレーション ― 実空間を「丸ごと」解析する
- 関連動画:3D Gaussian Splatting とは? 仕組みをやさしく解説