Expand description
기본 출력 훅: 이벤트를 받아 cumulus3d stream 의 파일 출력을 만든다.
| 훅 | 받는 이벤트 | 출력 |
|---|---|---|
TimelineSink | 문구가 있는 이벤트(아래 표) | timeline.txt (epoch초.나노 문구) |
RunLogSink | 문구가 있는 이벤트, Log, Finished | run.log(+표준 출력), DONE |
ZonePlySink | ZonePreview, ZoneRefined (dense 참) | full/preview/preview_KK_posLO-HI.ply, full/refined/refined_KK_posLO-HI.ply |
ModelSink | ZoneArrived, ZonePreview, ZoneAdjusted, ZoneRefinedPose, AllRefinedDone | work/models/{snap,preview,ba,refined}_K/, work/models/chain/ |
SnapshotSink | 구역 이벤트들, AllRefinedDone | aligned/, snapshots/event_NN_TTTT.Ts_KIND_K.ply, snapshots/manifest.json, snapshots/timeline.txt, final_frame/, run.log 요약 |
이벤트 → timeline 문구 변환표(Event::timeline_text, TIMELINE_TABLE):
| 이벤트 | 문구 |
|---|---|
Started { positions: Some(N) } | start NPOS=N |
ModelInitialized { registered: N } | init_model Registered images: N |
BaseAdopted { zone: K } | adopt refined K as base |
PositionDone { position: P, registered: R, expected: E } | pos P registered R/E |
ZoneArrived { range: K [LO,HI) } | region K arrived pos[LO,HI) |
ZonePreview { range: K } | preview K ready |
RefineStarted { zone: K } | refined K ba_start |
ZoneRefinedPose { range: K, registered: N, mean_reproj_px: X } | refined K pose_ready Registered images: N Mean reprojection error: X(소수 6자리)px (끝 공백 포함) |
ZoneRefined { range: K } | refined K ready |
AllPositionsDone | all positions done |
AllRefinedDone | all refined done |
순서: 같은 출력 폴더의 훅들은 DefaultSinks 하나로 묶여 이벤트 순서대로 처리돼야 한다.
비동기 파이프라인에서는 종류별 레인 사이 순서가 보장되지 않으므로 attach(on_any 한 개)를 쓴다.
default_sinks(종류별 목록)는 동기 모드(Pipeline::sync(true))나 직접 호출용이다.
Structs§
- Default
Sinks - 출력 폴더 하나의 기본 훅 묶음(timeline → run.log → full PLY → 모델 → 스냅샷 순서로 처리).
- Model
Sink --save-models:work/models/아래 구역별 희소 모델.ZoneArrived→snap_K,ZonePreview→preview_K,ZoneAdjusted→ba_K,ZoneRefinedPose→refined_K,AllRefinedDone→chain.- RunLog
- run.log 공유 손잡이. 여러 훅(요약을 쓰는
SnapshotSink등)이 같은 파일에 쓴다. - RunLog
Sink run.log: timeline 문구는[HH:MM:SS] 문구,Log는 그대로(stamped면 시각 머리),Finished는 단계별 시간(훅이 잰post포함)·최종 체인 모델 요약 뒤DONE파일.Warning/Error는 같은 내용의Log와 함께 나오므로 따로 쓰지 않는다.- Sink
Options - 기본 훅 설정.
- Snapshot
Sink - 정렬·마스킹·사건별 스냅샷·manifest·재고정(final_frame) 훅. 구역 결과를 모아 두었다가
AllRefinedDone에서post::run_zones로 한 번에 만든다. 시각은Started(없으면 처음 받은 이벤트) 기준 초. - Timeline
Sink timeline.txt: 문구가 있는 이벤트마다epoch초.나노 문구한 줄(시각 =meta.at).- Zone
PlySink full/preview/preview_KK_posLO-HI.ply,full/refined/refined_KK_posLO-HI.ply(x y z nx ny nz red green blue).dense가 거짓인 이벤트(조밀화 없음·실패)는 쓰지 않는다.
Constants§
- TIMELINE_
TABLE - timeline 문구가 나오는 이벤트 종류(변환 규칙은
Event::timeline_text).
Traits§
- Sink
- 이벤트를 받아 출력을 만드는 훅.
Functions§
- any_
hook - 훅 하나를 모든 이벤트용 훅(
on_any)으로. 받는 종류만 걸러 처리한다. - attach
- 파이프라인에 기본 훅을 붙인다(
on_any하나라 비동기 모드에서도 순서 보존). - default_
sinks - 기본 훅을 종류별 목록으로(상태 공유). 동기 파이프라인(
sync(true)) 또는 직접 호출용. - hooks
- 훅 하나를 종류별 훅 목록으로(같은 상태를 공유). 종류 사이 순서가 필요하면 동기 모드에서만 쓴다.
Type Aliases§
- Hook
- 훅 하나(파이프라인
.on/.on_any에 넘기는 모양).