EN
← Volver al Portafolio
3D y Visualización julio de 2026

Lidar3D — Laboratorio de Reconstrucción 3D Streaming

Un laboratorio de investigación temprano de reconstrucción 3D streaming feed-forward: un stream ordenado RGB o LiDAR se convierte en trayectoria de cámara, profundidad métrica densa y una nube de puntos coloreada fusionada. El motor pesado corre offline en GPU; el sitio reproduce la nube horneada en cuatro renderers de nubes de puntos bajo una transformación unificada — con una disciplina estricta de honestidad de renderer como el punto.

Motores de reconstrucción
Red propia profundidad+pose (~0,28 m ATE, ~12,8 M params, 8 escenas reales) · modelo 2026 vendorizado (4 exteriores) · LiDAR ICP Open3D · sintético CPU
Calidad de profundidad (held-out)
AbsRel 0,38 → 0,22
Renderers
4 (three.js · deck.gl · surfels · Potree LOD), una nube horneada, unificada (x, −y, −z)
Modo
Reconstrucción offline en GPU → replay en navegador (NO tiempo real, NO SLAM por defecto)
Datos
Escenas reales (TUM / 7-Scenes / ICL) + exteriores; 14 casos. Lab temprano (v0.1)
Lidar3D — Laboratorio de Reconstrucción 3D Streaming — Arquitectura
#3d-visualization #research #computer-vision #point-cloud #reconstruction #lidar

Contexto de Negocio

La reconstrucción 3D y la visualización de nubes de puntos importan en topografía, minería y robótica, y la falla recurrente es la confianza: un render hermoso que tergiversa silenciosamente los datos subyacentes. El valor de Lidar3D es el hábito opuesto — un lugar para comparar motores de reconstrucción y renderers en igualdad de condiciones, donde las discrepancias se encuentran y se muestran (un bug de espejo de coordenadas corregido, una aproximación etiquetada) en vez de pulirse. Es un instrumento de investigación sobre lo que la reconstrucción realmente entrega, y para mantener honesto al visor.

Valor Estratégico

Lidar3D demuestra un pipeline completo de reconstrucción streaming construido y evaluado con honestidad — una red de profundidad-y-pose desde cero con un error de trayectoria held-out real, un modelo SOTA debidamente vendorizado y claramente etiquetado como tal, y un visor de cuatro renderers donde la paridad se impone bajo una transformación y cada aproximación se revela. Está deliberadamente enmarcado como un lab temprano: reproduce artefactos horneados (no es tiempo real ni SLAM por defecto), no reclama superar al estado del arte, y lidera con un registro de resultados negativos. Ese es el patrón reutilizable — reconstrucción y renderizado en los que sí puedes confiar porque te dicen dónde no.

El Desafío

Convertir un stream de imágenes o LiDAR en una escena 3D coherente es difícil, y los demos suelen ser la parte menos honesta: una nube de puntos pulida que esconde dónde derivó la pose, qué números no tenían ground truth, o que distintos visores muestran silenciosamente datos distintos. Las preguntas interesantes y honestas — qué tan bien lo hace realmente un reconstructor feed-forward desde cero, y si lo que ves en el navegador coincide fielmente con la nube reconstruida — rara vez se muestran.

Nuestro Enfoque

Lidar3D es un laboratorio, no un reclamo de producto. Un motor pesado corre offline en una GPU local y hace reconstrucción feed-forward (sin optimización por escena): un stream ordenado RGB/LiDAR se convierte en trayectoria de cámara, profundidad métrica densa y una nube de puntos coloreada fusionada. Dos motores de reconstrucción están realmente cableados — una red de profundidad-y-pose desde cero (backbone ResNet-18, una cabeza de pose SE(3) Siamesa, profundidad aleatórica; ~0,28 m de error de trayectoria held-out en TUM, reconstruyendo ocho escenas reales de TUM/7-Scenes/ICL) y un modelo 2026 genuinamente vendorizado para cuatro escenas exteriores — más odometría LiDAR ICP de Open3D y un motor sintético en CPU. El sitio público es un SPA estático que reproduce los artefactos horneados en cuatro renderers de nubes de puntos (three.js, deck.gl, surfels, Potree LOD), todos dibujando la misma nube bajo una transformación de coordenadas unificada. La disciplina es el titular: métricas sin ground truth se muestran como "ninguna" con una razón, y donde un renderer físicamente no puede hacer replay por frame, la app aproxima y lo dice en la UI en vez de fingirlo.

Indicadores Clave de Rendimiento

KPILínea BaseResultadoImpacto
Método de reconstrucciónOptimización por escenaProfundidad + pose feed-forward (red propia, ~0,28 m ATE en TUM)Un reconstructor medido y desde cero
Honestidad de rendererDistintos visores, nubes que se ven distinto4 renderers, una nube horneada, una transformación unificadaLo que ves es el mismo dato
Sin métricas falsasNúmeros mostrados sin ground truthMétricas sin GT muestran "ninguna" + una razón; aproximaciones etiquetadas en la UIEl demo no sobre-vende

Arquitectura

lidar3d renderers

lidar3d renderers

Reconstruct honestly, render honestly

Lidar3D is an early research lab for feed-forward streaming 3D reconstruction: an ordered RGB or LiDAR stream becomes a camera trajectory, dense metric depth and a fused colored point cloud, with no per-scene optimization. The heavy engine runs offline on a GPU; the public site is a static SPA that replays the baked cloud across four point-cloud renderers. Live at lidar3d.fasl-work.com.

What is actually wired

Two reconstruction engines: a from-scratch depth-and-pose network (ResNet-18 backbone, a Siamese SE(3) pose head, aleatoric depth) with a real ~0.28 m held-out trajectory error on TUM, reconstructing eight real indoor scenes (TUM / 7-Scenes / ICL); and a genuinely vendored 2026 model (kept clearly labelled as vendored) for four outdoor scenes. Plus Open3D ICP LiDAR odometry and a CPU synthetic engine.

Renderer honesty is the headline

Four renderers — three.js, deck.gl, surfels and Potree LOD — all draw the same baked cloud under one unified (x, −y, −z) transform (a deck.gl mirror bug was found and fixed). Where a renderer physically cannot do per-frame replay, the app approximates and says so in the UI rather than faking it, and any metric without ground truth is shown as “none” with a reason.

Honest scope

This is a lab, framed as one: it replays baked artifacts (it is not real-time and not SLAM by default — loop closure and global bundle adjustment are opt-in), it does not claim to beat the state of the art, the outdoor model is vendored not ours, and there is no textured mesh or Gaussian-splat output. The value is the discipline and the negative-results ledger, not a fidelity claim.

Live demo · Source on GitHub

Stack Tecnológico

Python PyTorch Open3D TypeScript React three.js deck.gl Potree

Los recursos visuales de este proyecto no están disponibles públicamente.