chore(plan): B05 3D 새 방식 정밀 분석(조사)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LLCk2y5xE8YGVgjbTntWsY
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# 조사 — B05 3D 새 방식(115) 정밀 분석 · 요구 기준 · 개선안 (10-8 밤 · 읽기 전용 조사 에이전트)
|
||||
|
||||
요약 — 새 방식 원리(지형 정점 높이만 설계면으로)는 실제 자료에서 맞게 돎 · 마음에 안 드는 까닭 셋이 겹침: 버그 둘(A 비탈 폭주 구덩이 · B 코리도 행 자리 미끄러짐) + 지형 격자(1.07 m) 해상도 한계(비탈 끝 톱니 · 색 번짐 · 구조물 둘레 틈) · 버그 둘은 각 수십 줄 · 해상도는 비탈 끝 · 노면 끝 · 구조물 외곽 선을 지형 메시에 끼워 넣어야(브레이크라인) 풀림.
|
||||
|
||||
경로 약칭 `_X.ts` = `B05_Profile/B05_Profile_UI_Corridor_X.ts`.
|
||||
|
||||
## 0. 어떻게 쟀나
|
||||
- 자료(주): 검증_랩탑메인 `226fc805…` 노선 277(측점 70 · 배수관 9 · 세월교 2 · R12 곡선 14곳) · 재현: 엄상준_검증 `d2245e3b…` 노선 275 · 지형 `dtm_classification_smooth_preview.glb`(정점 201,540 · 삼각형 395,497 · 격자 1.07 m).
|
||||
- 프로젝트 TS 를 `helper_115_corridor_deform.cjs` 처럼 Node 트랜스파일 → `buildCorridor` → `deformTerrain` 을 뷰어와 같은 순서로 · 측점 설계는 DB SELECT 만 · 프로젝트 파일 변경 0 · 좌표 검산(측점 중심 메시 지반고 − B06 `center_z` = −0.13~+0.10 m).
|
||||
- 스크립트: `C:\Users\umsan\AppData\Local\Temp\aislo_3d_probe\`(probe_lib · probe_deform · probe_1~18 · probe_sum · extract_detail.py).
|
||||
|
||||
## 1. 새 방식이 실제로 그리는 모습(226 기준 · ※ = 폭주 구간 ch 270~310 · 840~890 뺀 값)
|
||||
| # | 항목 | 실측 | 원인 |
|
||||
|---|---|---|---|
|
||||
| A | 비탈 폭주 구덩이(치명) | 10 m 넘게 내려간 정점 1,797 · 최대 171 m(ch 285~293 좌 · 854~880 좌) · d22 최대 527 m | ① 비탈 끝 못 찾으면 도달폭 60 m 까지 끝까지 깎음(`_Deform.ts:322-339` 마지막 구배 계속 연장) ② both_cut 배수관 유출측 실루엣 auto → 절토 분류(내려가는 선 · `_Deform_Structure.ts:120-124`) ③ 측점에 없는 조각을 먼 제어점에서 빌려 옴(`_Deform.ts:232-241` · 옛 빌드는 `_Build.ts:330` 에서 끊음) · B06 앞뒤 측점 둘 다 없는데 붙은 행 · 측 fill 5,446 · cut 4,386 · 실제 지형 움직임 258(d22 179) |
|
||||
| B | 코리도 행 자리 미끄러짐(옛 방식과 공통) | 행 중심 실제 노선상 위치 − 명목 누가거리: 중앙 0.77 · p90 3.57 · 최대 7.23 m · 측점 행 되접힘 44곳 · 노면고 최대 0.51 m 어긋남(d22 최대 5.37 m · 되접힘 19) | `_Frames.ts:137-158` 균일 Catmull-Rom · 노선 구간 길이 1.2 m~93 m 섞여 매개변수 틀어짐 · 측점 행만 B06 중심(`_Build.ts:299-307`) · B06 측점 중심은 노선 길이 직선 보간과 0.0000 m 일치 · 저장본 `corridor_0277` 도 ch 39.8→40→40.2 에서 5.9 m 되접힘 → 옛 방식 파편화 일부 원인(추정) |
|
||||
| a | 비탈 끝 톱니 ※ | 렌더 발끝이 참 비탈 끝보다 바깥 중앙 0.55 m · p90 1.1(절토)~2.0(성토) · 1 m 이웃 흔들림 중앙 0.3 · p90 1.2~2.7 m · 성토 발끝 부풂 0.11/0.22/최대 1.7 · 절토 어깨 깎임 0.18/0.40/최대 1.17 · 비탈면 오차 성토 0.05/0.16 · 절토 0.20/0.45 m | 정점에서만 clamp · 비탈 끝 · 암/토사 꺾임 · 소단이 격자 변 위에 없음 · 보간으로 성토 위로 · 절토 아래로 둥글게 |
|
||||
| b | 노면 리본 ↔ 변형 지형 이음 ※ | 앵커 3 cm 밖 지형 없는 틈 282/10,712(2.6 % · d22 1.8 %) 폭 중앙 0.07 · p90 0.31 · 최대 0.74 m · 겹침 25(0.2 %) · 이음 높이 차 중앙 0.03 · p99 0.12 · 최대 1.35 m · 노폭 변화 4곳 0.03 ㎡ 삼각 구멍 · T자 균열 1 cm 넘음 298/32,142(0.9 %) · 20 cm 넘음 33 · 최대 1.39 m | B 의 접힌 행으로 만든 노면띠 칸이 앵커 밖까지 · `_Clip.ts:77-131` 무한직선으로 자르고 `:225-235` 조각 정점 공유 안 함 → 변형 뒤 균열 |
|
||||
| c | 구조물 구멍 둘레 ↔ 솔리드 ※ | 둘레 표본 4,012 중 지형 모서리가 솔리드 윗면보다 0.1 m 넘게 높음 57 % · 0.5 m 넘게 25 % · 1 m 넘게 5.6 %(중앙 0.22 · p90 0.8 · 최대 3.47 m) · 지형이 솔리드 바닥보다 낮은 곳 215(5 %) | 구멍을 링 폴리곤 최대 폭(기초 · 뒷굽 포함)으로 뚫음(기슭막이 기준 1.3 m · 윗폭 0.97 m `_Plan_Footprint.ts:31-47,194-232`) · 모서리 지형은 단면선 높이 그대로라 솔리드까지 내려오는 면 없음 |
|
||||
| d | 법선 · 음영 | 문제 없음 — 13 프로젝트 × 6종 미리보기 GLB 78 개 모두 POSITION · COLOR_0 만(NORMAL · 재질 없음) → flatShading · 변형 면은 자기 기울기대로 음영(각진 면) | — |
|
||||
| e | 절성토 색 경계 ※ | 칠한 삼각형 69,663 중 경계 띠 11,226(최장변 1.51 m) · 색 번짐 폭(90→10 %) 중앙 1.0 · p90 3.1 m · 50 % 선이 참 비탈 끝에서 p10 −0.65 ~ p90 +0.4 m · 절토↔성토 보라 번짐 304 · 빗금 없음 | 정점 색 칠하기(`_Deform_Terrain.ts:75-113`) · 경계가 격자 변 따라감 |
|
||||
| f | 측점 사이 · 곡선 · 헤어핀 ※ | 역투영 바깥 0~25 m 정점 50,147 실패 0 · 다른 가지 83(0.17 % · ch 100 · 400 = B 되접힘 자리) · R12 곡선 14곳 문제 없음 · 가지 사이 최소 57 m · 60 m 안 안 닫히는 비탈 fill 25 · cut 52 행 · 측 · B06 대비(측점 55) 평균 오차 중앙 0.05 m · 측점별 최대 오차 중앙 0.42 · p90 1.66 · 최대 4.01 m · 비탈 끝 편거리 차 규칙 중앙 0.10 · p90 1.0 · 렌더 중앙 0.6 · p90 2.8 m · 구조물 측점 최대 오차 1.35~3.82 m(폭주 측점 30 · 42 m) | 규칙 자체는 B06 과 잘 맞음 · 남는 오차는 대부분 격자 해상도 · B06 지반(샘플) − 메시 지반 ±0.13 m |
|
||||
| g | 성능(Node 22) | 빌드 1.28 s + deformTerrain 1.18 s(클립 0.75 · 변형장 0.20 · 정점 루프 0.13 · 높이 색인 0.14 · 분할 0.05) · 밴드가 지형 삼각형 93 %(369,278/395,497) · 조각 정점 +110,958 · 움직인 정점 129,630 · 브라우저 비슷~1.5배(추정) | 밴드 = 코리도 AABB + 80 m(`_Split.ts:14`) · 노선이 지형을 휘감아 거의 전부 클립 |
|
||||
|
||||
## 2. 지난 방식에서 싫어한 점 → 요구 기준표
|
||||
| # | 사용자 말(날짜 · 출처) | 만족 기준 | 새 방식 지금 |
|
||||
|---|---|---|---|
|
||||
| 1 | 「3D 가 B06 횡단을 그대로」(08-23) · 「횡단을 안 본다」(08-24 계획 :119) | 측점선 3D 단면 = B06 design_line ±0.1 m · 비탈 끝 편거리 ±0.2 m | 측점별 최대 오차 중앙 0.42 · p90 1.66 · 비탈 끝(렌더) 중앙 0.6 m ✗ |
|
||||
| 2 | 「파편화 · 절성토와 구조물 연결 이상」(10-8) | 노면 · 비탈 · 지형 · 구조물 사이 틈 · 겹침 · 단차 0 | 이음 틈 2.6 % · 구조물 둘레 57 % · 균열 0.9 % ✗ |
|
||||
| 3 | 「기존 성토면을 강제 변형시키던 로직 비활성화」(08-25 · 결함 = 구간 경계 단차 8.1 m · 리본 접힘 · 벽 전면 성토색) | 구조물 구간 비탈이 B06 실루엣대로 · 접힘 · 단차 · 뜬 면 없음 | 포락선 + 테이퍼로 접힘 없음 ○ · 폭주 구덩이 ✗ |
|
||||
| 4 | 「투영 및 삭제는 원지반 제외」(08-25) · 「원지반 오리지널 데이터에서 가져오라니까 · 너가 그냥 만든 거잖아」(08-27) | 지형 = 원본 메시 · 공사 범위 밖 1 mm 도 안 움직임 | 원본 사본 · XY 고정 ○ · B06 에 없는 조각이 지형 움직인 곳 258 ✗ |
|
||||
| 5 | 「투영 커브가 감싸는 성토면을 지운다 · 한 가지 방법으로」(08-26) | 구조물 종류별 특례 최소 · 한 규칙 | 한 규칙 ○ · 특례 둘(BOX noExtend · 날개 안쪽 성토 금지) |
|
||||
| 6 | 「삐져나오지도 벌어지지도 않게」(08-27) · 패치 끝 공중 · 날개벽 옆 빈 구멍(08-27) | 지형이 벽 상단 · 뒷면에 딱 붙고 빈 구멍 0 | 둘레 틈 0.5 m 넘음 25 % ✗ |
|
||||
| 7 | 「종방향 끝단 별도 연결 없음 — 막혀 보이면 됨」(08-27) | 구간 끝 단차 안 보임 | 테이퍼로 해결 ○ |
|
||||
| 8 | 「구조물은 머지하지 말고」(08-26) · 「엣지를 살릴 것」(08-23) · 「구조물 서피스 형상은 손대면 안 됨」(10-8) | 솔리드 그대로 · 모서리 각 살림 | ○ |
|
||||
| 9 | 「측구 바깥 상단은 노견과 같은 Z」(08-23) · 측구 없는 구간엔 서피스 없음 | 노면부 = B06 | 리본 유지 ○ · B 행 어긋남 ✗ |
|
||||
| 10 | 「서피스 생성 · 구조물 들어온 경우 메시 삭제 등 전혀 변함 없음」 · 「새 · 옛 A 모두 마음에 안 듦」(10-8 밤) | [3D 업데이트] 후 바뀐 곳 바로 · 3 s 안 | 2.5 s(Node) ○ · 보이는 품질 ✗ |
|
||||
만족할 그림(추정): 측점에서 3D 를 자르면 B06 횡단도와 같음 · 비탈 끝은 매끈한 한 줄 · 절성토 색 경계 = 그 선 · 비탈이 구조물 벽 상단 · 뒷면에 딱 닿음 · 공사 밖 지형은 원본 그대로 · 구덩이 · 틈 · 겹침 없음.
|
||||
|
||||
## 3. 새 방식 개선안(① 제안 바탕 · 차례)
|
||||
| 순 | 흠 | 고칠 길 | 크기 | 위험 | 라이브러리 |
|
||||
|---|---|---|---|---|---|
|
||||
| P0-1 | A 폭주 | ① 비탈 끝 못 찾으면 도달폭 0(또는 단면 끝까지만) ② 조각은 앞뒤 측점 중 하나라도 가진 행에만(`_Build.ts:330` 규칙) ③ auto 실루엣 종류를 기울기로 판정 ④ 높이 변화 \|Δz\| ≤ 단면 높이 + 1 m 안전 상한 | `_Deform.ts` · `_Deform_Structure.ts` 약 40줄 + 시험 2 | 낮음 | 없음 |
|
||||
| P0-2 | B 행 자리 | 노선 길이 기준 선형 보간(측점 중심과 0 m 일치 · 곡선부 노선점 중앙 1.18 m 간격이라 충분) 또는 centripetal Catmull-Rom + 호길이 표 | `_Frames.ts` 약 15줄 + BUILD_VERSION 올림 | 중간(옛 방식 · 서버 사전생성 · 저장본 해시 모두 바뀜 — 같은 방향으로 좋아짐) | 없음 |
|
||||
| P1-3 | a · b · e 해상도 | 브레이크라인 국소 재삼각분할 — 비탈 끝(행별 catch 점 0.2 m) · 노면 끝(앵커) · 단면 꺾임(암/토사 · 소단) 선을 지형에 넣음 · 선이 걸친 삼각형만 선 조각으로 나눠 earcut 재삼각분할 · 변 교점 변 키로 공유(T자 균열 0) · 꺾임이 격자 변 → clamp 결과 = 규칙 · 비탈 끝 선에서 메시를 비탈/원지반 둘로 나눠 색 · 빗금 면 단위 | 새 파일(예 `_Deform_Breakline.ts`) 200~300줄 · `_Clip.ts` 무한직선 절단 대체 | 중간(퇴화 · 짧은 변 · 삼각형 +20~40 % 추정) | three r185 `ShapeUtils.triangulateShape`(earcut 내장) · `BufferGeometryUtils.mergeVertices` |
|
||||
| P1-4 | c 구조물 | 구멍은 솔리드 윗면 외곽만(기초 · 뒷굽은 묻음) · 풋프린트 안과 둘레 0.5~1 m 띠는 z' = min(z', 솔리드 윗면) 드레이프 → 절토 어깨가 벽 상단까지 · 외곽선도 브레이크라인 · 집수정 열린 윗면 · 관 입구만 구멍 | 약 120줄 · 솔리드 읽기만 | 중간(BOX · 세월교 날개 · 다단 기슭막이 실측) | 없음 |
|
||||
| P2-5 | g 성능 | 밴드를 행별 비탈 끝 + 5 m 띠로(93 % → 20~30 % · 클립 0.75 → 0.2 s 추정) | 약 40줄 | 낮음 | 없음 |
|
||||
| P2-6 | e 빗금 | 역투영 (누가거리, s)를 UV 로 · 기존 빗금 텍스처 | 약 40줄 | 낮음 | 없음 |
|
||||
| 대안 | 전면 재삼각분할 | 밴드 전체 제약 들로네(지형 점 + 모든 브레이크라인) · 가장 깨끗 | 새 의존성 또는 직접 약 500줄 | 중간~높음 | cdt2d · poly2tri · delaunator 미설치 · earcut 3.2.3 은 maplibre-gl 하위 의존(package.json 에 없음) |
|
||||
기대(추정): P0 둘 → 구덩이 0 · 이음 틈 대부분 사라짐 · 다른 가지 정점 0 / P1 둘 더 → 측점 오차가 B06 지반 − 메시 지반(±0.13 m) 수준 · 톱니 · 색 번짐 0 · 구조물 둘레 틈 거의 0.
|
||||
|
||||
## 4. 정할 것(조사 에이전트 제시)
|
||||
1. P0 두 건(어느 방향이든 필요한 버그 수정 · B 는 옛 방식에도 영향) 먼저 고칠지.
|
||||
2. 3D 지반 기준: 메시(화면 일치 · B06 과 ±0.13 m) vs B06 샘플(측점에서 B06 과 정확히 같음).
|
||||
3. 해상도 해결: 브레이크라인(P1-3) vs 국소 세분 vs 전면 재삼각분할(새 의존성).
|
||||
4. 구조물 둘레 드레이프(P1-4) — 기초 · 뒷굽 묻어도 되는지.
|
||||
5. 절성토 빗금 유지.
|
||||
Reference in New Issue
Block a user