Versión: 1.0 POC
Fecha: Diciembre 2025
Estado: En desarrollo - Arquitectura UI-First
Plataforma de experiencias inmersivas en AR que permite a arquitectos presentar renders 3D en escala real usando tecnología AR nativa móvil.
Escenario: Un arquitecto está remodelando un apartamento/casa
- Arquitecto sube modelo 3D a escala real del diseño final
- Cliente visualiza el render 3D con AR en el espacio físico
- Cliente explora diferentes materiales y acabados en tiempo real
- Cliente camina dentro del diseño y experimenta el espacio inmersivamente
A diferencia de apps como IKEA Place (colocar objetos), esta plataforma permite sumergirse en el diseño completo del espacio arquitectónico.
RoomPlan Integration con expo-roomplan ✅
- ✅ Migración a Expo Bare Workflow completada
- ✅ Integración de
expo-roomplan@1.2.1(módulo oficial Expo) - ✅ Hook
useRoomPlanimplementado con API simplificada - ✅ RoomPlanTestScreen funcional con UI modal nativa
- ✅ Export USDZ automático integrado
- ✅ Sin necesidad de módulos nativos manuales (Swift/Objective-C)
Implementación Actual:
- Usa librería oficial
expo-roomplanen lugar de bridge nativo manual - Modal UI nativa de Apple RoomPlan integrada automáticamente
- Export parametric USDZ con un solo hook
- Código JavaScript/TypeScript únicamente
src/ui/
├── ar/ # Feature AR completa
│ ├── components/ # ARCanvas, ARControls, MaterialPicker
│ ├── hooks/ # use3DScene, useARSession, useMaterialToggle
│ └── utils/ # SceneManager, geometries, materials
├── screens/ # HomeScreen, ARScreen
├── navigation/ # AppNavigator, TabNavigator
└── theme/ # colors, fonts
El commit a1bea4b contenía una implementación funcional de sala 3D (363 líneas) que fue refactorizada. Incluía:
- Sala arquitectónica completa con paredes, piso, ventana, mesa
- Sistema de materiales intercambiables (Default, Wood, Concrete)
- Iluminación realista y rotación de cámara
Ver docs/CODIGO_3D_ANTERIOR.md para análisis completo.
- React Native 0.81.5 + Expo SDK 54
- React 19 con React Compiler experimental
- TypeScript 5.9.2 (strict mode)
- New Architecture de React Native habilitada
- expo-roomplan 1.2.1 - RoomPlan API oficial de Apple (iOS 16+)
- expo-camera ~17.0.10 - Acceso a cámara
- expo-sensors ~15.0.0 - Giroscopio y acelerómetro
- Three.js 0.166.0 - Motor 3D (para visualización AR posterior)
- React Three Fiber 8.17.10 - Integración React/Three.js
- expo-gl ~16.0.8 - OpenGL context
- expo-three 8.0.0 - Renderer para Expo
- React Navigation 7 con type-safe routing
- expo-symbols - SF Symbols (iOS)
- expo-haptics - Feedback háptico
- react-native-reanimated - Animaciones
- react-native-gesture-handler - Gestos táctiles
- Node.js 18+
- npm o yarn
- Expo CLI (se instala automáticamente)
- Dispositivo físico (recomendado para AR) o simulador/emulador
# Navegar al proyecto
cd creativedev.ar-tech
# Instalar dependencias
npm install
# Iniciar servidor de desarrollo
npm start# iOS Simulator
npm run ios
# Android Emulator
npm run android
# Web (preview)
npm run webDespués de cambiar babel.config.js, siempre reinicia con caché limpia:
npm start -- --clear
⚠️ Nota AR: Para funcionalidad AR avanzada (ARKit/ARCore), se requiere compilar build nativa. El POC actual usa tracking básico con sensores.
- Al abrir la app, navega a la tab "AR" en el bottom navigation
- Acepta los permisos de cámara cuando se soliciten
- Observa la habitación arquitectónica renderizada en 3D
- Cambia materiales usando los botones en la parte inferior:
- Default: Paredes blancas, piso gris claro
- Madera: Acabado en madera cálida
- Concreto: Estilo industrial con concreto
- La cámara rotará automáticamente para mostrar diferentes ángulos de la habitación
El proyecto sigue un enfoque UI-First donde toda la lógica relacionada con AR y 3D está organizada dentro de src/ui/ar/:
creativedev.ar-tech/
├── src/ui/ # Todo el código de la app
│ ├── ar/ # Feature AR/3D completa
│ │ ├── components/ # Componentes específicos AR
│ │ │ ├── ARCanvas.tsx # Canvas 3D con GLView
│ │ │ ├── ARControls.tsx # Botones de control
│ │ │ ├── MaterialPicker.tsx # Selector de materiales
│ │ │ └── ARPermissionPrompt.tsx
│ │ ├── hooks/ # Hooks específicos AR/3D
│ │ │ ├── use3DScene.ts # Lógica Three.js
│ │ │ ├── useARSession.ts # Gestión sesión AR
│ │ │ ├── useMaterialToggle.ts # Cambio materiales
│ │ │ └── useDeviceOrientation.ts
│ │ └── utils/ # Utilidades AR/3D
│ │ ├── SceneManager.ts # Gestor escena Three.js
│ │ ├── LightingSetup.ts # Configuración luces
│ │ ├── geometries.ts # Crear geometrías
│ │ └── materials.ts # Definiciones materiales
│ ├── screens/ # Pantallas principales
│ │ ├── HomeScreen.tsx
│ │ └── ARScreen.tsx # Pantalla AR principal
│ ├── navigation/ # React Navigation
│ │ ├── AppNavigator.tsx # Stack navigator
│ │ ├── TabNavigator.tsx # Bottom tabs
│ │ └── types.ts # Type-safe routing
│ └── theme/ # Sistema de temas
│ ├── colors.ts # Paleta claro/oscuro
│ └── fonts.ts # Tipografías
├── docs/ # Documentación técnica
│ ├── README.md # Índice documentación
│ ├── ARQUITECTURA_POC.md # Arquitectura completa
│ ├── ARQUITECTURA_SIMPLIFICADA.md # UI-First approach
│ ├── PLAN_IMPLEMENTACION.md # Roadmap 15 días
│ ├── PLAN_AR_INMERSIVO.md # Plan AR avanzado
│ └── CODIGO_3D_ANTERIOR.md # Análisis código previo
├── assets/images/ # Assets estáticos
├── App.tsx # Componente raíz
├── index.js # Entry point
├── app.json # Config Expo
├── babel.config.js # Module resolver + alias
├── tsconfig.json # TypeScript + paths
├── eslint.config.js # ESLint flat config
├── .prettierrc # Code formatting
└── package.json # Dependencias
Components:
ARCanvas.tsx- Renderiza escena 3D con GLView + expo-threeARControls.tsx- Botones para iniciar/detener ARMaterialPicker.tsx- Selector de materiales (Default/Wood/Concrete)ARPermissionPrompt.tsx- Manejo de permisos de cámara
Hooks:
use3DScene.ts- Encapsula lógica Three.js (scene, camera, renderer)useARSession.ts- Gestiona ciclo de vida AR (start/stop)useMaterialToggle.ts- Estado y cambio de materialesuseDeviceOrientation.ts- Tracking con expo-sensors
Utils:
SceneManager.ts- Clase principal para gestionar THREE.SceneLightingSetup.ts- Configuración de luces (ambient, directional)geometries.ts- Funciones para crear paredes, piso, mueblesmaterials.ts- Definiciones de materiales PBR
AppNavigator.tsx- Root stack navigatorTabNavigator.tsx- Bottom tabs (Home, AR)types.ts- Type-safe navigation params
colors.ts- Paleta de colores con soporte dark modefonts.ts- Sistema de tipografías
babel.config.js- Module resolver para alias@/tsconfig.json- Paths mapping para imports absolutoseslint.config.js- ESLint v9 flat config + Prettier.prettierrc- Reglas de formato de código
El proyecto usa alias @/ para importaciones absolutas desde src/:
// ✅ Correcto - Usando alias
import { ThemedText } from '@/ui/components/ThemedText';
import { Colors } from '@/ui/theme/colors';
import { useColorScheme } from '@/core/hooks/use-color-scheme';
// ❌ Evitar - Rutas relativas complejas
import { ThemedText } from '../../../ui/components/ThemedText';Alias disponibles:
@/ui/*- UI components, screens, navigation, theme@/domain/*- Business entities and use cases@/data/*- Repositories and data sources@/core/*- Shared hooks, utils, constants
Los materiales usan THREE.MeshStandardMaterial con propiedades PBR (Physically Based Rendering):
| Material | Paredes | Piso | Características |
|---|---|---|---|
| Default | #F5F5F5 | #CCCCCC | Blanco hueso, estilo minimalista |
| Wood | #D4A574 | #8B4513 | Tonos cálidos, acabado rústico |
| Concrete | #808080 | #606060 | Gris industrial, textura áspera |
Propiedades:
roughness: 0.7-0.95 (controla reflectividad)metalness: 0-0.2 (aspecto metálico)- Iluminación realista con luces ambient + directional
- ✅ Estructura base Expo + React Navigation
- 🔄 Recuperar código 3D anterior (commit a1bea4b)
- 🔄 Refactorizar en arquitectura modular UI-First
- 🔄 Implementar ARScreen con renderizado 3D básico
- Output: Sala 3D renderizando con toggle de materiales
- ⏳ Integrar expo-camera como fondo AR
- ⏳ Implementar tracking básico con expo-sensors
- ⏳ Agregar controles AR (start/stop)
- ⏳ Gestos táctiles (pinch, rotate, pan)
- Output: AR activo con anclaje básico de escena
- ⏳ Sistema de mediciones (tap dos puntos)
- ⏳ Modo día/noche (cambio de iluminación)
- ⏳ Capturas de pantalla
- ⏳ Variantes de diseño (comparar versiones)
- Output: Herramientas premium funcionales
- ⏳ Onboarding UX (tutorial de gestos)
- ⏳ Optimización de performance (lazy loading, caché)
- ⏳ Testing en dispositivos reales (iOS + Android)
- ⏳ Demo content (2-3 proyectos de ejemplo)
- Output: POC demo-ready
Leyenda: ✅ Completado | 🔄 En progreso | ⏳ Pendiente
Para experiencia AR inmersiva completa (reemplazo de realidad):
- Migrar a Expo Bare Workflow
- Implementar ARKit (iOS) o ARCore (Android)
- Room scanning con RoomPlan API (iOS 16+)
- Spatial alignment y occlusion rendering
- Ver docs/PLAN_AR_INMERSIVO.md
# Iniciar dev server
npm start
# Limpiar caché Metro
npm start -- --clear
# Ejecutar en plataformas específicas
npm run ios
npm run android
npm run web# Ejecutar linter
npm run lint
# Auto-fix problemas
npm run lint -- --fix
# Formatear código (Prettier automático en ESLint)# Ver código 3D anterior (commit a1bea4b)
git show a1bea4b:app/\(tabs\)/ar-view.tsx
# Recuperar en archivo temporal
git show a1bea4b:app/\(tabs\)/ar-view.tsx > temp-ar-view.tsx
# Ver cambios del refactor
git show dc5e662 --statPara AR avanzado con ARKit/ARCore:
# Configurar EAS
eas login
eas build:configure
# Build iOS
eas build --platform ios
# Build Android
eas build --platform androidNota: Se requiere cuenta Expo y configuración de
eas.json
Esta plataforma se diferencia por:
-
Experiencia inmersiva completa
- No solo "colocar objetos"
- Sumergirse en el diseño arquitectónico completo
- Reemplazo de la realidad con el render 3D
-
Cambio de materiales instantáneo
- Sin recargar modelos
- Toggle en tiempo real
- Comparación visual inmediata
-
Arquitectura modular y escalable
- Código organizado en capas
- Fácil agregar nuevos materiales/geometrías
- Preparado para backend futuro
-
Zero backend inicial
- Todo el render en cliente
- Ideal para POC y demos
- Migrable a CMS arquitectónico
-
UI minimalista
- Enfocada en la experiencia, no en herramientas complejas
- Gestos intuitivos
- Perfecto para presentaciones a clientes
Este es un proyecto POC privado. Todos los derechos reservados.
Última actualización: Diciembre 2025
Versión: 1.0 POC
La carpeta docs/ contiene documentación completa del proyecto:
-
docs/README.md - Índice de toda la documentación
-
docs/ARQUITECTURA_POC.md - Arquitectura técnica completa
- Stack tecnológico detallado
- Estructura de carpetas propuesta
- Flujo de datos
- Roadmap de features
- Métricas de éxito
-
docs/ARQUITECTURA_SIMPLIFICADA.md - UI-First Approach
- Decisión arquitectónica actual
- Separación de responsabilidades
- Ejemplos de código por capa
-
docs/PLAN_IMPLEMENTACION.md - Guía paso a paso
- 4 fases de 15 días
- Tareas diarias detalladas
- Código de ejemplo
- Checklists de verificación
-
docs/PLAN_AR_INMERSIVO.md - AR Avanzado
- Room scanning
- Spatial alignment
- Occlusion rendering
- Análisis técnico ARKit/ARCore
-
docs/CODIGO_3D_ANTERIOR.md - Código 3D Previo
- Análisis del commit a1bea4b (363 líneas)
- Especificaciones de geometrías
- Sistema de materiales original
- Guía de refactorización
Desarrolladores: Sigue PLAN_IMPLEMENTACION.md paso a paso
Arquitectos: Revisa ARQUITECTURA_POC.md para decisiones técnicas
Product Owners: Lee roadmap y métricas de éxito en los docs principales
- Tipos en
navigation/types.ts
Los componentes se adaptan automáticamente a modo claro/oscuro:
- Colores:
src/ui/theme/colors.ts - Fuentes:
src/ui/theme/fonts.ts - Componentes temáticos:
ThemedText,ThemedView
Proyecto POC privado - CreativeDev.ar
Desarrollado con ❤️ usando Expo + Three.js + React Navigation