Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LLCk2y5xE8YGVgjbTntWsY
12 KiB
12 KiB
조사 B — B05 흑백지형 · 3D ③ 채택 · 돌붙임/도수로 (10-9 · 읽기 전용 조사 에이전트)
약칭: _X = B05_Profile/B05_Profile_UI_Corridor_X.ts · 뷰어 = B05_Profile/B05_Profile_UI_Viewer.ts · 뷰어코리도 = B05_Profile/B05_Profile_UI_Viewer_Corridor.ts · 보기줄 = B05_Profile/B05_Profile_UI_Panel_View.ts. 화면 확인 없음(코드 · 자료로만).
1. 3D 「흑백 지형」 단추가 안 먹음
- 현재: 단추 기본 켬(보기줄:100) →
setSurfaceGrayscale(뷰어:492) →applyGrayscaleTo(뷰어:393-415) = 정점색을 제자리에서 회색으로 덮고 원래 색은 메시마다 처음 본 값으로 기억(뷰어:399). 지형 적재 직후 회색 먼저(뷰어:469) → 그 뒤 코리도 조립(뷰어:472). - 원인(코드로 확인): 예상형상 지형(모든 방식 · ③ 포함)은 밴드 분할본에서 만듦 — 분할본이 이미 회색인 지형 색을 복사(
_Split.ts:49) · near/far 가 색 버퍼 하나 공유(_Split.ts:113-114). ③ 망 · 남은 조각이 그 색을 받음(_Tin.ts:103-106 · 275 · 360-363) → 새 메시의 「원래 색」 = 회색 → 끄기 눌러도 회색. far 메시를 덮을 때 공유 버퍼까지 바뀌어 다음 [3D 업데이트]에도 번짐. 예상형상을 끄면(원지형) 단추 먹음. - 고칠 자리:
_Split.ts생성자 — 사본 색을 지형 원래 색으로 되돌림 · far 색 버퍼 따로(clone) · 뷰어applyGrayscaleTo— 원래 색 기억을 메시 → 색 버퍼 열쇠(WeakMap 하나 · 새 메시가 같은 far 조각을 감싸도 한 번만). 합 8줄 안팎. - 다른 길(2줄): 단추 때
corridor.resetTerrain()+rebuild()— 단추마다 ③ 다시 짬(약 1.2 s · PLAN 115-10 실측). - 재사용: 절성토 색 남김 표식
userData.keepColor(_Tin.ts:357) — ③ 사면 색은 흑백에서도 남음(115-1 결정 그대로). - 시험: 새 1건(분할본 색 = 원래 색 · far 버퍼 분리 · Node 도우미) · 깨질 시험 없음.
- 위험 · 이음매:
_Split.ts는 ③ 이 남기는 파일 — 요구 2 와 충돌 없음. - 크기: 작음.
2. 제안 ③ 채택 · 나머지 방식 Old 로
- 현재: 등록부
_Modes.ts:135-176(지금 · 옛 A · 새 ① · 제안 ② · ③) · 고르기 줄 보기줄:66-87 · 128-129 · 뷰어코리도가 방식을 골라 그림(:115-120 · 205-216 · 233-261). PLAN 115-3(옛 로직 지움 · 미체크)과 같은 일. - ③ 사슬(남김):
_Loft→_Loft_Profile·_Loft_Toe·_Loft_Grid·_Loft_Shade·_Tin(망 · 지형 이음) ·_Tin_Pslg·_Tin_Design:1-140(TinDesign · structureTopLoops · insideLoop) ·_Deform:184-231roadRows(+형 셋) ·_Deform_Structure:246-276noFillLimits(+도움 넷) ·_Region:1-233CellRegion ·_Split·_Terrain· 바탕 빌드(_Build·_Frames·_Station·_Station_Structure·_Structures*) ·_Mesh(노면 · 마구리 · 구조물) ·_Envelope·B05_Profile_UI_Corridor.ts. - 서버 몫(지우면 안 됨): ③ = 저장본(노면 리본 · 구조물 솔리드 · 외곽 · 마구리)을 받아 지형 망만 브라우저가 새로 짬(저장 안 함) —
B05_Profile_Corridor_Prebuild.py·B05_Profile_Corridor_Node.ts·B05_Profile_Router_Corridor.py·_Envelope. BUILD_VERSION(_Envelope:206) 그대로 — 「지금」 꼬리를 빼도 노면 · 구조물 · 외곽 같음(자르기는 성토 리본만_Cut:485) · 옛 저장본의 남은 몫은roadOnly가 버림.
| 통째 이동 | 줄 | 까닭 |
|---|---|---|
_Modes |
207 | 등록부 · 지금 심 보정 · 스커트 붙임 |
_Legacy |
60 | 옛 A |
_Deform_Terrain · _Deform_Breakline |
317 · 612 | 새 ① |
_Plan · _Plan_Footprint · _Cut · _Carve · _Carve_Wing · _Union · _Skirt |
629 · 348 · 620 · 494 · 256 · 34 · 223 | 지금(스케치 · 자르기 · 패치 · 스커트) |
_Clip |
468 | 지금 · 옛 A 띠 자르기 · ③ 실패 대체(⬜1) |
| 고칠 파일 | 남김 | 빼서 Old 사본에 |
|---|---|---|
| 뷰어코리도 | roadOnly + loftTerrain 바로 부름(③ 고정) |
방식 고르기 · 느림 알림 · clip 대체(:216) · __corridorPlanCurves(:268-285) |
| 보기줄 | 보기 · 표시 단추 | 「3D 방식」 줄(:8-14 · 66-87 · 128-129) |
B05_Profile_UI_Corridor.ts |
캐시 · 저장 | rememberLegacyInputs(:32 · 250) |
_Deform(692) |
roadRows · 형 셋(약 70) | 변형 장 전부(약 620) |
_Deform_Structure(430) |
noFillLimits · setOf · axisOf · 껍질 · 넓이(약 120 · StationAxis 형은 안에 적음) |
포락선 · 구조물 단면 · 구멍 · 드레이프 · 관 입구(약 310) |
_Tin(375) |
tinTerrain(설계자 인자 필수) | ② deformDesign(:176-193) · import 손봄(:21-23) |
_Tin_Design(349) |
:1-140 | buildTinDesign(:142-349) |
_Region(404) |
:1-233 | CorridorStrip · PlanLoopRegion · SubtractedRegion(:235-404) |
_Build |
행 루프 · 리본 · 외곽 · 마구리 · 구조물 | legacy 옵션(:184-188 · 282 · 600) · 깃발(:72 · 90) · 스케치 · 자르기 · 패치 꼬리(:601-633) |
_Build_Types · _Envelope · _Mesh · B05_Profile_UI_Viewer_Debug.ts |
노면 · 구조물 몫 | patch · cellMask · trimTris · cutWalls · planCurves(_Mesh:39-74 · 159-190 · 411-485) |
_Station |
측점 분류 | silhouette 옵션(:93-100 · 401-417) |
A00_Common/b_page_state.ts |
— | 키 셋 corridor-deform · legacy · mode(:69-74) |
- Old 자리:
B05_Profile/Old/— 선례(54-24fb5ab57c7) ·tsconfig.json:38exclude 이미 · git 추적 유지 · vite 는 import 로만 끌어 무관 · ruff 대상 아님.0_old/은.gitignore:35→ 다른 창에서 사라짐(사실상 삭제)이라 안 씀. 일부 자른 파일은 손대기 전 원본을 Old 에 같은 이름으로. 번들 낡음 판정이B05_Profile를 rglob(common_util/common_util_node_bundle.py:24) → 옮긴 직후 서버 번들 한 번 다시 만듦(무해). - 시험: Old 로 =
resources/tester/old/+conftest.py:8collect_ignore 에 "old" — test_115_corridor_deform · 115_4 · 115_5 · 115_6 · 115_7 · b05_cut_merged_loop · b05_patch_skirt · b05_corridor_envelope_flags(+도우미 7). 고침 = test_115_8 등록부 단언(:84-87 · 도우미 :720-732). 그대로 = test_115_10 · b05_corridor_separation · switching · spline · structures_order · router · prune · prebuild · hash_probe · session_keys. - 디버그 훅: 뺌
__corridorPlanCurves·__corridorSkirt·__corridorHoles· 남김__corridorDeform(③ 수치) ·__corridorClip·__corridorBuild(planCurves 몫만 뺌) ·__corridorScene·__corridorSource. - 순서: 커밋 둘 — (가) 등록부 · 고르기 줄 · 옛 A · ① · ② (나) 지금 꼬리 + 스케치 파일. 도우미가 TS 를 런타임 require 로 읽어 import 끊기 · 이동은 같은 커밋에서.
- 덤(범위 밖): 저장본에서 절 · 성토 리본까지 빼면 17 MB → 수 MB(추정 · serialize 한 줄).
- 위험: 요구 3 의 3D 띠가
_Structures·_Mesh·_Tin_DesignstructureTopLoops 를 만짐 → 요구 2 뒤에. - 크기: 큼(통째 약 4,300줄 + 잘라냄 약 1,800줄 · 기계적).
- ⬜1 ③ 을 못 만들 때(점 구름 지형 = 높이 색인 없음 · 측점 2 미만): (가) 원지형 그대로 ·
_Clip이동(추천 — 지금 대체는 비탈 자리까지 도려내 빈 구멍 · 추정) (나) 띠 자르기 남김.
3. 돌붙임/도수로 형상 · 상자 [빼기]
- 정체: 관 · BOX · 세월교 · 물넘이 포장 폼의 선택 상자 「도수로/돌붙임」(하나만) — 키
chute_add_{n}_*(A00_Common/design/design_structure_guard.ts:149-157) · 물넘이만ford_chute_{n}_*(design_structure_ford_pavement.ts:29-32). 형상 = B06 횡단 띠(유출 성토사면 안쪽 두께 + 돌 · 90-2)appendChuteBand(B06_Section/B06_Section_UI_Cross_Wall_Hatch.ts:323) ← 관_Cross_Culvert.ts:107· BOX_Cross_Box.ts:160· 세월교_Cross_Ford.ts:132. 자료 = 서버_chute(B06_Section_Engine_Culvert.py:229-251) ↔ 짝chute(common_util/common_util_culvert_sets.ts:131-151). - 끊긴 곳(코드로 확인):
- ① 실시간 — 폼 → 횡단 캐시 길
applyPipeOptionsToCache(B06_Section_UI_Page_Pipe_Options.ts:48)가 chute 를 안 얹음 · BOX · 세월교 제어기(B06_Section_UI_Page_Ford_Controls.ts:257 · 304)도 · 흙막이 쪽만guardSet(culvert_sets.ts:244)으로 얹힘 → 상자 넣어도 [저장] · 새로고침 전엔 띠 없음. - ② 물넘이 포장 —
ford_chute_*읽는 곳 0: 세트(Engine_Culvert.py:485-515·culvert_sets.ts:404) · 정규식chute_add_만 · 오버레이(_Cross_Ford_Pavement.ts:122) 띠 없음 · B08 집계도gchuteadd만(B08_Quantity_Router_Summary.py:252-254). - ③ B05 3D — 띠 솔리드 없음(
_Structures:76종류 revet · basin · pipe) · 해시에도 없음(_Structures_Hash) · 상자에 종방향 길이 칸 없음.
- ① 실시간 — 폼 → 횡단 캐시 길
- 고칠 자리: ①
applyPipeOptionsToCache한 곳(네 폼이 다 지남)에서chute(patch)→culvert·box·ford의 chute 갈아 끼움 + 카드 다시 그림(5줄 안팎) ②chute(values, 머리)·_chute같은 인자 · 물넘이 세트에 붙임 · 오버레이에 유출측(inflowSign반대) 성토사면 띠 ③ 3D = 유출 성토 조각(outletFill·fillSegments) 띠를 스윕하는 솔리드 + 해시 키. - [빼기]:
A00_Common/design/design_structure_form.ts:268-287— 공용 명세 폼 · 선택 상자 이름표(legend) 안 · 클래스b05-route__irregular-btn. 「내부 컨테이너의 선택」 = 「구조물 조합」 줄 선택 — 같은 클래스 + 상자 몸통 작은 단추 틀(높이 26 px · 위아래 여백 0 ·B05_Profile_UI_Style_Structures.css:565· flex none:454). [빼기]는 그 틀에서 일부러 뺌(:563-564) → 여백 8 px(B05_Profile_UI_Style.css:355) · 이름표 흐림 0.8(Style_Structures.css:168). - 고칠 자리: 글 「삭제」(+title) · CSS 한 규칙(이름표 단추도 작은 단추 틀) · 흐림은 이름표 글에만.
- 바뀌는 곳(공용): 도수로/돌붙임(관 · BOX · 세월교 · 물넘이) · 노면공 「상세 내용」(
design_structure_road.ts:60-63) · M02 구조물 옵션 미리보기(흙막이 포함 ·M02_SO_Def_Spec.ts:99). B05 · B06 흙막이는 단 수가 개수를 정해 단추 없음(B05_Profile_UI_Drainage_Facility.ts:345·_Drainage_Revet_Choice.ts:113). - 재사용:
chute()·_chute·appendChuteBand·guardSet· 작은 단추 틀. - 시험: test_90_chute_band · test_b06_culvert_sets_mirror(파이썬 짝) · test_52_3_structure_spec_ford_pavement 늘림 · 새 1건(폼 → 캐시 chute) · 단추 글을 단언하는 시험 없음.
- 위험 · 이음매: 패널 아래 구조물 [삭제](빨강 ·
B05_Profile_UI_Structures_Form.ts:130)와 이름 겹침(모양 다름) · B06 요구(유출 수평 절토 · 관보호공 높이 · 연동 풀림)와Pipe_Options.ts·culvert_sets.ts·Engine_Culvert.py겹침(추정) · 3D 띠는 ③ 구멍(_Tin_Design:68)이 뚫지 않게. - 크기: ① 작음 · ② 중간 · ③ 중간 · 단추 작음.
- ⬜2 「형상 연결 안됨」 범위: (가) 횡단 실시간 ① + 물넘이 ②(추천 · 먼저) (나) + B05 3D ③.
- ⬜3 3D 띠 종방향 길이: (가) 유출 구조물 폭 따라감(관 유출 벽 길이 · BOX/세월교 날개 사이 · 추천) (나) 상자에 길이 칸 더함.
- ⬜4 [삭제] 이름 · 모양: (가) 공용 한 번 — 노면공 상세 · M02 미리보기도 함께(추천) (나) 도수로/돌붙임만.
파일 겹침
| 파일 | 요구 1 | 요구 2 | 요구 3 |
|---|---|---|---|
| 뷰어 | ○ | ||
_Split |
○ | 남김 | |
뷰어코리도 · 보기줄 · _Modes |
○ | ||
_Mesh · _Tin_Design |
○ | ○(3D) | |
_Structures · _Structures_Hash |
남김 | ○(3D) | |
design_structure_form.ts · B05_Profile_UI_Style_Structures.css |
○ | ||
Pipe_Options.ts · culvert_sets.ts · Engine_Culvert.py · _Cross_Ford_Pavement.ts |
○(B06 요구 겹침 추정) |