PoC / 社内検証
ホールを、立って見る。
公的な標高データからゴルフコースの地形を再構築し、プレイヤーの目線で自由に歩けるようにする 技術検証です。打ち上げ・打ち下ろし、谷越えの落差、ブラインドの有無を、図ではなく空間として確認できます。
いま見られるもの
この PoC でやっていること
使っているデータ
| 地形 | 国土地理院 基盤地図情報 数値標高モデル DEM1A(1m メッシュ、垂直精度 0.3m 級)。 コースを覆う 6 メッシュを結合して使用。1m メッシュが未整備の東端だけ 標高タイル(DEM5A・5m メッシュ)で補完し、画素ごとにどちらから来たかを記録している |
|---|---|
| 樹木 | 静岡県 VIRTUAL SHIZUOKA 航空レーザ測量点群(CC BY 4.0 / ODbL)。 コース全域 40 図郭・約 5 億 9,300 万点、密度 105〜140 点/m² |
| 地表の色 | 国土地理院 オルソ画像(ort)z18(約 0.49m/px)。 抜けは seamlessphoto で補完 |
| 区画 | OpenStreetMap のホール中心線・ティー・フェアウェイ・グリーン・バンカー・池・コース輪郭 |
| ホールの統計 | 一覧ページの高低差・起伏は国土地理院 標高タイル(DEM5A)から算出。 3D 表示だけは DEM1A を使う |
計算していること
| 座標変換 | 経緯度グリッドの標高データを平面直角座標系(第8系)へ投影してから 正方 1.0m セルへリサンプリング。緯度により実セルが南北 1.23m × 東西 1.13m の長方形になるため、 そのまま流し込むと南北に伸びた地形になる |
|---|---|
| データの検査 | 欠測値(−9999)の除去、メッシュ境界の標高不連続の検査。 境界は生の標高差ではなく両側の勾配から予測した差との残差(二階差分)で判定する。 生の差分では急斜面を段差と誤検出するため |
| 選択的平滑化 | フェアウェイ・グリーン・ティーにのみ σ = 1.5m のガウシアン。 バンカーは膨張マスクで完全に除外する。全面にかけるとバンカーの窪みが消え、 かけないと地上視点で地面が波打って見える |
| 区画の焼き込み | ポリゴンをスプラットマップ(RGBA = フェアウェイ / グリーン / バンカー / コース輪郭)に焼く。 ラフはコース輪郭の内側で他のどれでもない画素として導出する |
| 水面 | 池の標高は実測で 0.2〜0.6m ばらつくため、地形メッシュとは別に 実測水面高の平らな面を張る |
| 樹冠高モデル | 点群から DSM(セルの最高点)− 地表面(分類 2 の最低点)= CHM を 0.5m 格子で作り、 3m 以上を樹木候補として局所最大値で立木の位置と樹高を取る。 地表面も点群から作るので、標高成果の版が違うデータを引き算せずに済む。 樹高の分布は 32m 付近で切れるため、45m を超える高まりは送電鉄塔などとみなして除外する |
| 樹冠の大きさ | 半径は樹高に比例させ、全樹冠の面積の合計が CHM で実測した樹冠面積に一致するよう 係数を決める。分水嶺による個別分割も試したが、得られる半径が樹高と相関せず採用しなかった |
| 弾道 | ティー地上 1.7m・中間地点 地上 50m・グリーン地上 1.7m の 3 点を通る二次曲線。 水平方向はホール中心線をそのまま辿る |
描画していること
| 視点 | カメラ高 1.7m(プレイヤー)と 50m(弾道頂点)を切り替え。地面に追従し、めり込まない。 垂直方向の誇張はなし |
|---|---|
| 範囲の切り方 | ホールごとに中心線の外接矩形 ±300m を切り出して 1 画面ぶんの地形にする。 18 ホール分を同じ手順で自動生成しており、ページも course.json から書き出している |
| 地形メッシュ | 1m 格子の頂点をそのまま起こした 47〜88 万頂点(ホールにより変わる)。 区画の塗り分けは地形自体に焼いているので、境界は必ず起伏に沿う |
| 芝の質感 | 二層合成。オルソ由来のマクロカラー(低周波)× 手続き生成の芝ディテール(2cm/テクセル、高周波)。オルソ単体では カメラ高 1.7m で足元が完全にボケる |
| 樹木 | 幹と樹冠を 2 つの InstancedMesh に畳んで一括描画。 本数によらずドローコールは 2 回で済む。接地標高は地形メッシュから取り直し、 葉色と向きは位置から決めて同じ絵が再現するようにしている |
| 光量 | ACES フィルミックトーンマッピング、露出 1.0。 近景の芝がオルソの実測色に最も近くなる組み合わせを 12 通り描画して選んだ |
| 弾道ライン | 線幅の指定が多くの環境で効かないため、実寸の芯(半径 0.55m)と 光彩シェル(半径 1.7m)の二重チューブで描く。ティーに立つと内側に入るので手前はフェードする |
| 遠景 | ハイトマップの端が空との境界として見えないよう、大気遠近で背景色に溶かす。 等高線(5m ごと、20m ごとに強調)は起伏を読むために重ねている |
やらないこと
グリーン内アンジュレーション(振幅 20〜60cm)は、使用している標高データの垂直精度と同じオーダーで ノイズに埋もれるため再現しません。パットラインの提示は本 PoC の対象外です。