Nubes de puntos georeferenciadas
Transformación de coordenadas georreferenciadas a coordenadas locales
Conversión de nubes de puntos georreferenciadas a coordenadas locales de Revit
Objetivos
- Aprender a transformar nubes de puntos georreferenciadas a las coordenadas locales de nuestro proyecto en Revit.
- Evitar los problemas de gestión de coordenadas grandes de Revit.
Prerrequisitos
- El usuario tiene acceso a los siguientes programas:
- Autodesk ReCap. Puedes descargar una versión de prueba aquí.
- CloudCompare, para procesar y transformar las nubes de puntos.
- Autodesk Revit 2020 o superior
- El usuario tiene nubes de puntos georreferenciadas y un modelo de Revit con coordenadas compartidas alineados. Descarga un modelo y nube de ejemplo aquí.
Descripción
Cuando los valores de coordenadas son demasiado grandes (básicamente siempre que nos salimos del límite de 30 kilómetros desde el origen interno de Revit) el motor de render de nubes de puntos de Revit no resuelve correctamente la transformación de cada punto de la nube desde sus coordenadas UTM a las coordenadas locales del proyecto, dando lugar a un baile de puntos alrededor de cada coordenada.
En esta guía mostramos el procedimiento para determinar la transformación geométrica que tenemos que aplicar a las nubes georeferenciadas para pasarlas a las coordenadas internas de nuestro proyecto de Revit.
Procedimiento
Preparación de las nubes de puntos en ReCap
El formato de nubes de puntos .rcp / .rcs de ReCap es propietario y CloudCompare no puede abrirlo. Para poder procesar los archivos, tendremos que exportar las nubes desde ReCarp en alguno de estos formatos:
- pts (formato de texto legible ASCII, ocupa una barbaridad de espacio)
- e57 (formato binario estructurado)
Usaremos el formato binario e57
El procedimiento a seguir será:
- Exportar la nube original desde ReCap usando el menú o el atajo Ctrl + E
- Exportamos la nube con las ediciones que haya tenido marcando la opción “3d-only”
- Guardamos el fichero e57 en disco para trabajar con CloudCompare
Extracción de información del modelo necesaria
Mediante la definición de Dynamo que se encuentra en los archivos de soporte de esta guía, podemos extraer la información que necesitaremos para procesar las nubes de puntos en CloudCompare
La definición requiere que especifiquemos los siguientes inputs:
- Una carpeta en disco en la que guardar los archivos .txt que contendrán las matrices de traslación y rotación que usaremos en CloudCompare
- Marcar “True” para que se guarden los archivos al ejecutar la definición
- Especificar el Global Shift o desplazamiento global a utilizar para truncar las coordenadas de cada punto de la nube y que CloudCompare pueda procesarlos. La matriz de traslación que crea la definición tendrá en cuenta este desplazamiento global.
La definición trabaja en metros.
Procesado en CloudCompare
Abrimos las nubes en formato e57
En el cuadro de diálogo introducimos el global shift (1), desmarcando la opción “Preserve global shift on save” y aplicando el shift a todas las nubes con “Yes to All”. El objetivo es que las coordenadas UTM (3) se trunquen para (4) para poder ajustar las nubes a nuestro sistema de coordenadas local.
Si vamos a realizar este proceso con muchas nubes, el shift por defecto se puede configurar antes para que aparezca con un nombre identificativo en el cuadro de dialogo tal y como se ve en la imagen.
Puede suceder que el global shift no se haya aplicado a todas las nubes. Podemos comprobarlo visualizando coordenadas y haciendo zoom a cada una. En la versión de CloudCompare que utilizamos al redactar esta guía, la primera nube de la selección no se queda con el global shift registrado.
TIP Podemos mostrar las coordenadas de un punto activando la opción en Display > Show cursor coordinates. |
Nube con el shift erróneo (aún tiene las coordenadas georreferenciadas | Nube con el shift correcto |
Para corregirlo, editamos el shift de la nube incorrecta para recolocarla en su sitio. Lo importante es que sus coordenadas en el sistema local de coordenadas sean consistentes con las del resto de nubes:
Seleccionamos de nuevo el global shift por su nombre (1) si lo hemos guardado, y si no nos aparecerá la sugerencia de utilizar el último valor guardado.
Marcamos “Keep original position fixed” (2) y nos aseguramos de que las coordenadas locales cuadren. El cuadro de diálogo nos mostrará el desplazamiento a aplicar.
Comprobamos que la nube recolocada se registra correctamente con el resto y sus coordenadas se han truncado como esperábamos.
El siguiente paso es muy importante: debemos poner a cero el global shift de todas las nubes para que al guardar el archivo transformado, CloudCompare restaure el desplazamiento y mueva las nubes a su ubicación original.
Seleccionamos todas las nubes en el DB Tree (1), y en el menú edición (2), seleccionamos “Edit Global Shift and Scale” (3). Ponemos a cero el desplazamiento global (4) y desmarcamos “Keep original position fixed” (5). Veremos que en el panel izquierdo (que muestra como quedarán las coordenadas al escribir a disco) estas aparecen en azul con los valores truncados que tienen en el panel derecho.
A continuación aplicamos las matrices de transformación a todas las nubes, cargando la matriz desde los archivos .txt que creamos previamente con Dynamo. Para ello:
- Seleccionamos todas las nubes y en Edit > Apply Transformation cargamos los archivos txt con las matrices de transformación y clickamos Ok Aplicaremos primero la traslación y luego la rotación. El orden de las transformaciones es importante.
- Comprobamos que las nubes están ortogonales a los ejes principales, que están orientadas correctamente y el origen está donde esperamos
- Por último, guardamos el proyecto en formato e57, especificando en el nombre que es el archivo modificado en coordenadas locales.
Conversión en Recap
Creamos un Proyecto nuevo en el que importar nuestras nubes de puntos transformadas.
Creamos el nuevo proyecto .rcp que contendrá las nubes y será importado en Revit.
Importamos las nubes que hemos transformado y guardado en formato e57
Clickamos Next y ReCap se pone a procesar las nubes
Podemos abrir el proyecto y a medida que ReCap procesa las nubes, irán apareciendo los puntos. En cuanto una parte sea visible, comprobamos que las coordenadas están en los valores que nos esperamos para coordenadas locales.
Guardamos el proyecto .rcp cuando termina de procesar las nubes
Inserción en Revit
Las nubes convertidas (1) se vinculan en Revit insertándolas (2) de origen a origen interno (aunque, en realidad, Revit insertará el origen de la nube de puntos en el Punto Base de Proyecto)
Vinculamos la nube y comprobamos que cuadra con lo que esperábamos.
¡Listo!
Tips&Tricks
- En proyectos de pequeña escala (que puedan inscribirse en un cuadrado de 100 metros de lado) es mejor ponerse de acuerdo con nuestro topógrafo y trabajar con nubes de puntos en coordenadas locales en las que tengamos puntos de referencia para poder localizarlas correctamente.
- Las nubes de puntos pueden seccionarse para que representen solo la parte de información que necesitamos en cada momento. Puedes dividir una nube de puntos de un nivel en suelo, intermedio y techo y así hacer más fluido el trabajo en Revit. Esto puede hacerse en ReCap y en CloudCompare.
Bottom-line
La captura de la realidad con nubes de puntos implica volúmenes de datos muy grandes y operaciones numéricas con números grandes que Revit no maneja demasiado bien. Es mucho más operativo simplificar el problema para mejorar el flujo de trabajo.
Archivos asociados y referencias
- Post en LinkedIn de James Worrell que inspiró este workflow
- Nubes de puntos vs. modelos BIM, de Almudena Gómez


























