Skip to main content

Module sinks

Module sinks 

Source
Expand description

기본 출력 훅: 이벤트를 받아 cumulus3d stream 의 파일 출력을 만든다.

훅받는 이벤트출력
TimelineSink문구가 있는 이벤트(아래 표)timeline.txt (epoch초.나노 문구)
RunLogSink문구가 있는 이벤트, Log, Finishedrun.log(+표준 출력), DONE
ZonePlySinkZonePreview, ZoneRefined (dense 참)full/preview/preview_KK_posLO-HI.ply, full/refined/refined_KK_posLO-HI.ply
ModelSinkZoneArrived, ZonePreview, ZoneAdjusted, ZoneRefinedPose, AllRefinedDonework/models/{snap,preview,ba,refined}_K/, work/models/chain/
SnapshotSink구역 이벤트들, AllRefinedDonealigned/, 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
AllPositionsDoneall positions done
AllRefinedDoneall refined done

순서: 같은 출력 폴더의 훅들은 DefaultSinks 하나로 묶여 이벤트 순서대로 처리돼야 한다. 비동기 파이프라인에서는 종류별 레인 사이 순서가 보장되지 않으므로 attach(on_any 한 개)를 쓴다. default_sinks(종류별 목록)는 동기 모드(Pipeline::sync(true))나 직접 호출용이다.

Structs§

DefaultSinks
출력 폴더 하나의 기본 훅 묶음(timeline → run.log → full PLY → 모델 → 스냅샷 순서로 처리).
ModelSink
--save-models: work/models/ 아래 구역별 희소 모델. ZoneArrived → snap_K, ZonePreview → preview_K, ZoneAdjusted → ba_K, ZoneRefinedPose → refined_K, AllRefinedDone → chain.
RunLog
run.log 공유 손잡이. 여러 훅(요약을 쓰는 SnapshotSink 등)이 같은 파일에 쓴다.
RunLogSink
run.log: timeline 문구는 [HH:MM:SS] 문구, Log 는 그대로(stamped 면 시각 머리), Finished 는 단계별 시간(훅이 잰 post 포함)·최종 체인 모델 요약 뒤 DONE 파일. Warning/Error 는 같은 내용의 Log 와 함께 나오므로 따로 쓰지 않는다.
SinkOptions
기본 훅 설정.
SnapshotSink
정렬·마스킹·사건별 스냅샷·manifest·재고정(final_frame) 훅. 구역 결과를 모아 두었다가 AllRefinedDone 에서 post::run_zones 로 한 번에 만든다. 시각은 Started(없으면 처음 받은 이벤트) 기준 초.
TimelineSink
timeline.txt: 문구가 있는 이벤트마다 epoch초.나노 문구 한 줄(시각 = meta.at).
ZonePlySink
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 에 넘기는 모양).