# 阿仙原1工区その3(法面工)— 3Dモデル・ブラウザビューア 県道八重原延岡線 阿仙原1工区 道路改良(法面)工事その3(令和7年度 交建防安 第959-13-1号、日向土木事務所)。 実施設計図(`../R08-541-28006-zumen.pdf` 17枚)と設計書・特記仕様書から作った形状確認モデルです。 ## 開き方 `index.html` をダブルクリックし、Chrome か Edge で開いてください。インターネット接続・インストール・サーバーは不要です。 初回は材質と光の準備に数秒かかります(画面上部に「準備しています」と出ている間)。 - 左ドラッグ:回転 右ドラッグ:平行移動 **Shift+ホイール押し込み(中ボタン)ドラッグ:平行移動** ホイール:拡大・縮小 - タッチ:1本指で回転、2本指で移動・拡大 - 「工事の段階」:施工前(前工事で上の法面まで出来ている状態。仮設防護柵・既設ブロック積・電柱が残る)/完成 - 「表示する部材」:部材の種類ごとのチェック。プリセット「全部・その3・アンカー・鉄筋」 - 「見え方」:実物に近い表示/色分け、地形を半透明(地中のアンカーを見る)、法枠・吹付を半透明(鉄筋を見る)、測点・アンカー番号、輪郭 - 部材をクリック:名称・寸法・数量(図面とモデル)・再現方法・参照図面 - 「2点間の距離」、「▧」で表示画像を PNG 保存、「3Dデータ ↓」で GLB・OBJ・STEP・JSON - 動作が重い端末では URL の後ろに `?noshadow` を付けると影を切って開けます ## 作り方の考え方(smlibpy と three.js の組み合わせ) | 役割 | 使ったもの | 中身 | |---|---|---| | 形を正確に作る | **smlibpy 0.2.3**(SMLib:NVIDIA が Apache 2.0 で公開した NURBS BRep カーネル) | 法枠(梁を1mごとの断面でつないだ立体を和集合)、アンカー頭部金具(回転体・面取り)、H形鋼・山形鋼(フィレット付き断面)、集水桝(差し引き)、グレーチング。体積・断面積を BRep で計算し、STEP(AP214)でも書き出す | | 見た目と閲覧 | **three.js r170** | 材質(吹付モルタル・打放し・亜鉛めっき・アルミ・錆・黒皮・杉丸太・アスファルト・地形・水)をシェーダーで描く。空(Sky)・太陽の影・空の映り込み・GTAO(物陰の暗さ)・ACES トーンマップ。画像ファイルは使わず、ノイズは起動時に作る | | 図面の読み取り | Python・pymupdf・scipy | 平面図の等高線・横断図・展開図・配置図の線と文字から座標を取る | ## ファイル | ファイル | 内容 | |---|---| | index.html | オフラインで開く 3D ビューア(約 6MB) | | Asenbara3_sono3.glb | その3 の工事目的物(法枠・吹付・張コン・アンカー・鉄筋類・排水工)。部材情報を extras に保持 | | Asenbara3_full.glb | 上に地形・道路・周辺・前工事・撤去する物・仮設防護柵を加えた全体 | | Asenbara3_sono3.obj / .mtl | その3 の工事目的物(単位 m、Y 上) | | out/Asenbara3_sono3.step | smlibpy で作った法枠(その3)の正確な形(STEP AP214、単位 mm)。原点は局所 E=−9.130、N=6.921、標高 35.038(測量 Y=52844.211、X=−57598.130)、X=東・Y=北・Z=上 | | out/parts.step | アンカー頭部金具・H形鋼・山形鋼・集水桝・グレーチングの原形(STEP、mm) | | model-data.json | 部材の属性(名称・区分・寸法・数量・参照ページ・再現方法)と座標の基準 | | preview.png | 完成の斜めの静止画(headless Chrome の実描画) | | data/*.json | 図面から読み取ったデータ(地形・法面・法枠・アンカー・周辺・中心線・smlibpy のメッシュ) | | extract/*.py | 図面 PDF からデータを作るスクリプト | | brep/*.py | smlibpy で法枠・部品を作るスクリプト | | model.mjs | データから形を組む(Node と閲覧ページで共通) | | real.js | 実物に近い材質・空・光・後処理 | | viewer.template.html / viewer-app.js / build-viewer.mjs | 閲覧ページの元と組み立て(index.html は直接直さない) | | export-model.mjs | GLB・OBJ・model-data.json の書き出し | | three.module.js / OrbitControls.js / lib/examples/ | three.js r170(MIT)。OrbitControls.js は Shift+中ボタンの平行移動を追加済み | | validation/ | 検査(照合表.md、quantities.py、geometry-check.mjs、load-check.mjs、browser-check.py) | ## 座標の基準 - 平面:測量座標(X=北・Y=東)。局所 E = Y − 52853.341、N = X + 57605.051(原点は測点 NO.2)。 - 高さ:標高そのまま。three.js の y = 標高 − 25.000(DL=25.00)、x = E、z = −N。 - 中心線:平面線形の諸元(クロソイド A=45・60、R=75・140)から計算し、図面の中心線座標 19点と 2.3mm 以内。 - 平面図 PDF → 測量座標:測点の円 10点で残差 0.3mm(1pt=0.2119m。A1 原図の A3 縮小)。 ## 範囲 | 区分 | 内容 | |---|---| | その3(本工事) | 下の法面の切土 544m³、現場吹付法枠 500×500 □3.0m(232m²)、軽量吹付法枠 350×200 □2.0m(115.8m²)、枠内モルタル吹付 t=8cm、張コンクリート①②③、モルタル吹付Ⓐ、グラウンドアンカー 2段目12本・3段目14本(SEEE-F50UA、傾角35°、削孔φ90)、法枠の鉄筋・主アンカー・補助アンカー・水抜きパイプ・ラス金網・目地、小段排水工・流末排水工・跳水防止板・1号集水桝・仮設排水管、既設ブロック積の撤去、電柱移設(移設前の位置)、仮設防護柵の撤去 | | 参考(前工事) | 上の法面の現場吹付法枠(1段目アンカーの帯)・軽量吹付法枠・枠内モルタル、1段目アンカー12本、小段 | | 周辺 | 平面図の全範囲の地形(等高線1m・標高点・横断図)、県道の舗装、トビノ木橋、川の水面、家屋・倉庫、かごマット、ガードレール、電柱、基準点。樹木は描かない | ## 簡略化・推定・未反映事項 - 法面は横断図5断面の計画線を中心線に沿って補間し、展開図・平面図の外形に合わせた。展開図の横軸は法尻線(中心線の左 4.50m)の水平長(測点間の長さと 0.005m 以内)。法尻の離れは横断図の 4.63m を使った(平面図は 4.50m)。 - 法枠は梁の中心線(1m ごとの折れ線)に沿って作った。角の面取り・丸めは描いていない(曲がった長い梁では smlibpy の角丸めが通らず、短い梁だけ丸まって見た目がそろわないため)。 - 法枠の体積は図面の延長×断面積より +4.9%(現場吹付)・+8.9%(軽量)大きい。3D の長さが展開図より長いこと(曲線区間)と、梁の端を交わる枠の中まで延ばしたことによる。 - 鉄筋:現場吹付法枠の主鉄筋は断面図の D19×4本(数量式の「D25×8本」は採らない)。軽量法枠の主アンカー D16 は p8 の文「各交点」に従い 101本(数量表の密度 28本/100m² は標準の格子の値)。補助アンカー D10 は 1.5m 以上の横梁の区間に1本ずつ 76本(数量表の密度から約61本)。目地は 3か所(数量は 4か所、位置の記入なし)。かぶり・位置は梁断面図から推定。重ね継手は描かない。補助アンカー・水抜きパイプの位置は「1枠4本」「1枠1本」から推定。主アンカーはグラウンドアンカーと交差するため 0.15m 上へずらした(p7 注記)。SGフレームのウェブタイは 200mm ごとのジグザグで表した。前工事の鉄筋は作らない。 - アンカー:集計表 p11 の値(LA・Lf・La・礫質土・軟岩・削孔長)をそのまま使った。頭部金具は詳細図 p14 の主要寸法で作った。地中は礫質土・軟岩の区間で色分けし、地層の境の面は作っていない。 - 張コンクリートの厚さは図面に無く 0.1m と推定。①(4.6m²)・②(0.6m²)は上の法面の前工事、③(2.8m²)がその3(p10)。 - 仮設防護柵の撤去跡は、設計書の数量(表層 48m²=0.8m×60m、埋戻し 19.8m³=基礎 31基分)から、防護柵の線に沿った幅 0.8m の舗装の帯として表した。 - 仮設防護柵:支柱は赤線を 30 等分した 31 本(図の赤丸は 28 個)。H形鋼は図のとおり地上 3.5m〜基礎の底(数量表の L=5.0m とは 0.5m 違う)。山形鋼の高さは正面図から 3.46m と 1.73m。 - 小段排水工は展開図 p9 の上の法面の下端 B0〜B9(37.6m)に沿わせた。流末排水工は上の法面の右端 B10 から集水桝まで、平面は直線、高さは地形に沿わせた(p1・p9 の二重線。p15 の 1:0.7/1:0.9 の折れは地形に任せた)。集水桝の道路端からの離れ(中心 3.95m)は推定。仮設排水管の向きは推定。 - 仮設用モルタル吹付(347m²)は作っていない。範囲は現場吹付+軽量の全面(232.0+115.8=347.8m²)と読めるが、掘削直後の仮の吹付で、完成後は枠と枠内吹付の下に隠れるため。アンカーの足場(742空m³)は任意仮設で形が図面に無いため作っていない。 - 電柱の移設先は図面に無いため、完成の表示では出さない。 - 家屋の高さ・屋根の形、ガードレールの種類、電柱の高さは推定。平面図の範囲外は表示用の平面(標高 21.5m)。 - 図面どうしの食い違いと採った値は `../図面の食い違い.md`。 ## 作り直し方 ``` # smlibpy の環境(どこか作業用のフォルダーで) python -m venv smlib-venv smlib-venv\Scripts\python -m pip install smlibpy==0.2.3 # 図面からデータ(Python 3.14、pymupdf・numpy・scipy) python -I extract\alignment.py data\alignment.json python -I extract\georef.py ..\R08-541-28006-zumen.pdf data\georef.json python -I extract\terrain.py python -I extract\plan_features.py python -I extract\slope.py python -I extract\terrain_cut.py # smlibpy で形(約7分) smlib-venv\Scripts\python -I brep\build_parts.py smlib-venv\Scripts\python -I brep\build_frames.py # 書き出し・閲覧ページ・検査 node export-model.mjs node build-viewer.mjs node validation\geometry-check.mjs node validation\load-check.mjs python -I validation\quantities.py python -I validation\browser-check.py <撮影の出力先> --gpu ```