Code Monkey home page Code Monkey logo

ar-citymodels's Introduction

Realidad Aumentada con Marcadores ArUco para la Creación y Manipulación de Maquetas de Ciudades

Este proyecto fusiona la visión por computadora y gráficos 3D para ofrecer una experiencia de realidad aumentada en la creación y manipulación de maquetas de ciudades.

Funcionalidades

  • Visualización de modelos: La exploración de una variedad de modelos tridimensionales que componen la maqueta de la ciudad, desde edificios hasta iglesias, representa la funcionalidad principal.

  • Establecer plano: La delimitación de la zona de trabajo se logra posicionando marcadores ArUco en las esquinas deseadas, actuando como puntos de referencia fundamentales.

  • Interacción con marcadores: El usuario puede interactuar con modelos virtuales mediante dos marcadores ArUco, que sirven como interfaz de usuario tangible para ejecutar acciones específicas.

  • Manipulación de los modelos virtuales: Empleando marcadores ArUco designados, el usuario puede realizar acciones interactivas como mover, duplicar y eliminar modelos en la maqueta de la ciudad.

Tecnologías Utilizadas

  • OpenGL: Para crear y renderizar modelos tridimensionales en tiempo real.

  • OpenCV: Para realizar tareas como detección de marcadores visuales, calibración de cámaras y procesamiento de imágenes en tiempo real.

  • Aruco: Para la detección y seguimiento en tiempo real de los marcadores ArUco.

  • ChAruco: Para mejorar la precisión y estabilidad de la detección de marcadores.

Implementación

Visión por Computadora

Generación de marcadores

Se generan marcadores ArUco como códigos bidimensionales que actúan como puntos de referencia para ubicar modelos virtuales con precisión.

Detección y seguimiento de marcadores

Se utiliza OpenCV y ArUco para detectar y seguir marcadores en tiempo real, involucrando la detección de candidatos y la verificación de la codificación interna de los marcadores.

Estimación de poses

La estimación de poses se logra con la función solvePnP de OpenCV, proporcionando matrices de rotación y traslación para posicionar objetos virtuales.

Calibración de la cámara

Se utiliza CharUco para calibrar la cámara, determinando parámetros intrínsecos y extrínsecos y mejorando la precisión de la detección de marcadores.

Parte Gráfica

Creación de la escena virtual

OpenGL y GLFW se utilizan para configurar un espacio 3D, superponiendo un plano virtual en los marcadores ArUco para posicionar y renderizar modelos tridimensionales.

Carga de modelos

Assimp se emplea para cargar modelos tridimensionales, extrayendo información clave como vértices e índices para la renderización.

Renderizado de modelos 3D

Se aplican transformaciones basadas en la posición y orientación de los marcadores ArUco para renderizar modelos tridimensionales de manera precisa.

Implementación de la interacción

Se crea una interfaz visual para la interacción del usuario, permitiendo la selección y manipulación de modelos virtuales mediante marcadores ArUco.

Actualización en Tiempo Real

La aplicación se actualiza continuamente para reflejar cambios en la posición y orientación de los marcadores y modelos tridimensionales, proporcionando una experiencia dinámica de realidad aumentada.

Ejecutar proyecto

Create marker

int create_marker (int markerId, std::string outfile = "marker.png", int markerSize = 200, int borderBits = 1)

create_marker(ID,"markerID.png");

Notas

Resources

Models by: Marc-Mons in turbosquid

ar-citymodels's People

Contributors

35p10 avatar solange4 avatar

Stargazers

Alexander avatar

Watchers

Kostas Georgiou avatar  avatar

ar-citymodels's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.