HYWorld2 Memory Alignment
Glueing multiple camera passes into one coherent point cloud
- worldmirror_batch
- raw_splats
- ply_data
- memory_bank
- aligned_ply
- info
WorldMirror reconstructs the scene from multiple camera views, and those views don't agree with each other by default. HYWorld2 Memory Alignment is the stage that reconciles them - it takes the WorldMirror depths from the batch, runs the memory bank's alignment pass, and exports one coherent, aligned point cloud you can actually build on. This is the node that turns "four walls with gigantic seam lines" into a scene.
That's not me being cute about it: in the author's own release thread, the out-of-the-box WorldMirror v1 produced exactly that - separate walls with huge seams - until hidden parameters and this kind of alignment step were added. Seams between cameras are the known weak spot of this whole pipeline, and alignment is the anti-seam machinery.
How it works
The node takes a worldmirror_batch (from HYWorld2 Prepare WorldMirror Batch) plus the raw splats with metric depth. It runs in four logged stages:
- Consume depths - reads the raw splats' depth maps and writes them out as
depth_0000.npyetc. under the world mirror results dir. - Align - with
align_and_exportmode, runs the memory bank's alignment to register all the camera passes into one frame. - Export - exports the aligned global point cloud as
aligned_pcd.plyat your chosen downsampled point count. - Hand back the updated memory bank.
There are three mode options: align_and_export (the default and the one you want), consume_worldmirror_depths (just writes the depth maps, skips alignment), and bypass (skips alignment, exports the raw source point clouds instead - useful when you want to see the unaligned mess to understand what alignment is fixing). downsampled_pts defaults to 2M points, debug_mode adds verbose logging.
The inputs that matter
worldmirror_batch- required, fromPrepare WorldMirror Batch. It carries the memory bank and the depths.mode- keepalign_and_export. Switch tobypassonly if alignment is wrecking something and you want the raw geometry.downsampled_pts- quality vs. memory. 2M is a reasonable default.
Outputs
memory_bank- updated with the aligned geometry; feedsWorld Expansionand friends.aligned_ply- the string path toaligned_pcd.ply, your first real deliverable.info- JSON telling you how many depth maps were written and from what source.
Install & troubleshooting
Standard pack install: ComfyUI Manager (search HY-World 2.0) or clone + pip install -r requirements.txt + python install.py. Note that WorldStereo point rendering needs PyTorch3D, which is not in requirements.txt - install it manually with pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable" or the nodes that render points will fail.
The one error you'll hit: "requires connected raw_splats with metric depth" - that means you wired this node without a splat that carries gs_depth, so there's nothing to align. Connect the raw splats output from your WorldMirror node. If the aligned result still has seams, check debug_mode and look at the bypass export to see whether the problem is alignment or the reconstruction itself. This is also the node where kb_anomaly_percentile-style keyframe issues upstream can surface as weird holes in the aligned cloud.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| worldmirror_batch | HYWORLD2_WORLDMIRROR_BATCH | — | |
| mode | COMBO | align_and_export | 3 options: consume_worldmirror_depths, align_and_export, bypass |
| raw_splatsopt | VNCCS_SPLAT | — | |
| ply_dataopt | PLY_DATA | — | |
| downsampled_ptsopt | INT | 20000001–50000000 | — |
| debug_modeopt | BOOLEAN | false | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| memory_bank | HYWORLD2_MEMORY_BANK | — |
| aligned_ply | STRING | — |
| info | STRING | — |