{"id":11815,"date":"2026-05-03T19:15:19","date_gmt":"2026-05-03T17:15:19","guid":{"rendered":"https:\/\/bitacora.eniac2000.com\/?p=11815"},"modified":"2026-05-03T19:15:21","modified_gmt":"2026-05-03T17:15:21","slug":"fotogrametria-y-renders-con-ia-en-el-teatro-romano-de-italica-como-completar-tomas-de-dron-que-la-normativa-no-permite","status":"publish","type":"post","link":"https:\/\/bitacora.eniac2000.com\/?p=11815","title":{"rendered":"Fotogrametr\u00eda y renders con IA en el Teatro Romano de It\u00e1lica: c\u00f3mo completar tomas de dron que la normativa no permite"},"content":{"rendered":"\n<img decoding=\"async\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/thumbnail_italica_v2.jpg\" alt=\"Imagen destacada\" style=\"display: none;\">\n\n\n\n<p>Hay un momento en todo vuelo de dron sobre patrimonio en el que te das cuenta de que la toma perfecta est\u00e1 justo ah\u00ed, al alcance de tu mano, y que no la puedes hacer. No porque el dron no llegue, ni porque las condiciones clim\u00e1ticas no lo permitan, sino porque es la normativa la que dice que no. Y tiene todo el sentido del mundo que as\u00ed sea.<\/p>\n\n\n\n<p>Este art\u00edculo documenta c\u00f3mo, partiendo de un vuelo legal y responsable en el entorno del Teatro Romano de It\u00e1lica (Santiponce, Sevilla), he utilizado fotogrametr\u00eda e IA generativa para crear secuencias renderizadas en 4K que complementan las tomas reales, para dar una visi\u00f3n m\u00e1s completa del entorno, respetando la normativa de uso de drones. El v\u00eddeo es el siguiente:<\/p>\n\n\n\n<iframe loading=\"lazy\" width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/7H6E11h8Abo?si=l5R2vewGiLzZ-6eW\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n\n\n\n<p>Y casi m\u00e1s interesante que el v\u00eddeo en s\u00ed es el proceso para realizarlo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El marco legal: por qu\u00e9 no puedes hacer lo que quieras con un dron<\/h2>\n\n\n\n<p>Antes de hablar de tecnolog\u00eda, hay que hablar de burocracia. Y no como queja, sino como contexto imprescindible. Volar un dron en Espa\u00f1a, especialmente sobre patrimonio hist\u00f3rico en zona urbana, implica un marco regulatorio con varias capas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>AESA (Agencia Estatal de Seguridad A\u00e9rea)<\/strong>: Define las categor\u00edas de vuelo (abierta, espec\u00edfica, certificada), las limitaciones de altura (120m m\u00e1ximo), distancia a personas, y las zonas restringidas. Un dron como el que yo utilizo, el DJI Mini 3 Pro, al pesar menos de 250g, permite operar en categor\u00eda abierta subcategor\u00eda A1, pero con restricciones sobre sobrevuelo de personas no participantes.<\/li>\n\n\n\n<li><strong>Ministerio del Interior<\/strong>: Cualquier vuelo en zona urbana requiere comunicaci\u00f3n previa. No es un permiso como tal, es una notificaci\u00f3n, pero hay que hacerla, y hay que hacerla bien.<\/li>\n\n\n\n<li><strong>Patrimonio Cultural<\/strong>: Volar sobre un BIC (Bien de Inter\u00e9s Cultural) como el Teatro Romano de It\u00e1lica a\u00f1ade otra capa. No es lo mismo sobrevolar una zona urbana que hacer un vuelo rasante sobre las gradas de un teatro romano del siglo I.<\/li>\n\n\n\n<li><strong>Ordenanzas municipales<\/strong>: Porque siempre hay una ordenanza municipal.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"903\" height=\"656\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-03-a-las-18.57.17.png\" alt=\"Captura de Enaire Drones con las restricciones para la zona del Teatro Romano de It\u00e1lica\" class=\"wp-image-11819\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-03-a-las-18.57.17.png 903w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-03-a-las-18.57.17-300x218.png 300w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-03-a-las-18.57.17-768x558.png 768w\" sizes=\"auto, (max-width: 903px) 100vw, 903px\" \/><figcaption class=\"wp-element-caption\">Captura de Enaire Drones con las restricciones para la zona del Teatro Romano de It\u00e1lica<\/figcaption><\/figure>\n\n\n\n<p>El resultado pr\u00e1ctico es que puedes hacer un vuelo orbital a 40-60 metros de altura con cierta comodidad, pero las tomas bajas sobre la estructura, los pasantes rasantes sobre las gradas, o los cenitales ascendentes desde la propia <em>orchestra<\/em> son, como m\u00ednimo, complicados de justificar ante las autoridades. Y con raz\u00f3n: estamos hablando de un yacimiento arqueol\u00f3gico protegido.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Validaci\u00f3n de conformidad: la telemetr\u00eda como garant\u00eda<\/h2>\n\n\n\n<p>Hay algo que rara vez se menciona en los tutoriales de drones y que en la pr\u00e1ctica marca la diferencia entre un vuelo profesional y uno <em>amateur<\/em>: la capacidad de <strong>demostrar<\/strong> que tu vuelo se ajust\u00f3 al plan comunicado.<\/p>\n\n\n\n<p>Cuando notificas un vuelo al Ministerio del Interior, incluyes un plan con la zona de operaci\u00f3n, altitudes previstas y horario. Lo que no suele hacerse \u2014 y deber\u00eda \u2014 es validar <em>a posteriori<\/em> que el metraje que vas a publicar corresponde efectivamente a ese plan. Los archivos SRT del DJI son un registro involuntario pero extraordinariamente detallado: coordenadas GPS, altitud relativa y absoluta, 30 veces por segundo durante todo el vuelo.<\/p>\n\n\n\n<p>Con Claude Code escrib\u00ed un validador que cruza la telemetr\u00eda SRT contra el pol\u00edgono del plan de vuelo. Para cada frame de cada v\u00eddeo, calcula si la posici\u00f3n GPS est\u00e1 dentro de la zona autorizada y si la altitud respeta los l\u00edmites comunicados. El resultado es un informe por toma:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Conforme<\/strong>: toda la telemetr\u00eda dentro de la envolvente del plan.<\/li>\n\n\n\n<li><strong>Parcialmente conforme<\/strong>: el grueso del vuelo dentro del plan, con desviaciones puntuales (una r\u00e1faga de viento que desplaza el dron tres metros fuera del pol\u00edgono durante un segundo, por ejemplo).<\/li>\n\n\n\n<li><strong>No conforme<\/strong>: segmentos fuera de la zona autorizada.<\/li>\n<\/ul>\n\n\n\n<p>Los segmentos no conformes se descartan del flujo de trabajo. Esto no es solo una precauci\u00f3n legal, es un principio \u00e9tico: si el metraje no corresponde a un vuelo autorizado, no se utiliza. Punto. Los casos parcialmente conformes se revisan manualmente: un desplazamiento puntual por viento no es lo mismo que una excursi\u00f3n deliberada fuera de zona.<\/p>\n\n\n\n<p>Este paso de validaci\u00f3n, que se ejecuta en segundos, convierte la telemetr\u00eda del dron de un dato pasivo en una herramienta de compliance activa. Y, de paso, filtra autom\u00e1ticamente los fotogramas v\u00e1lidos para la fotogrametr\u00eda posterior: solo entran en el flujo de trabajo de OpenDroneMap los fotogramas tomados dentro de la zona autorizada.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El problema creativo: las tomas que faltan<\/h2>\n\n\n\n<p>Con las restricciones claras y la telemetr\u00eda validada, hice mi vuelo en It\u00e1lica un 31 de marzo, al amanecer, buscando la hora dorada en la que la luz ba\u00f1a el entorno en unos tonos fabulosos. Us\u00e9 el DJI Mini 3 Pro, con configuraci\u00f3n de v\u00eddeo a 4K, 30fps y D-Cinelike; realic\u00e9 varias pasadas orbitales desde la zona notificada, y un par de ascensos. Obtuve un material s\u00f3lido, pero al revisar el metraje en DaVinci Resolve, la historia que quer\u00eda contar ten\u00eda huecos evidentes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un <strong>cenital ascendente<\/strong> desde la <em>orchestra<\/em>, revelando progresivamente la forma semicircular del grader\u00edo. La toma que tienes en la cabeza antes de llegar al sitio, pero que no haces porque implica volar desde <em>dentro<\/em> del recinto arqueol\u00f3gico.<\/li>\n\n\n\n<li>Un <strong>vuelo pasante<\/strong> a baja altura cruzando el teatro. La m\u00e1s cinematogr\u00e1fica de todas, y la m\u00e1s incompatible con un vuelo responsable en el entorno de un BIC.<\/li>\n\n\n\n<li>Una <strong>espiral envolvente<\/strong> con varias vueltas completas. La hice parcialmente, pero una r\u00e1faga de viento arruin\u00f3 la suavidad del movimiento en la segunda vuelta.<\/li>\n<\/ul>\n\n\n\n<p>La pregunta era: \u00bfera posible generar estas tomas sin volver a volar?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">La respuesta: fotogrametr\u00eda + renderizado 3D asistido por IA<\/h2>\n\n\n\n<p>La idea es conceptualmente sencilla: si tengo suficiente metraje del teatro desde distintos \u00e1ngulos, puedo reconstruir un modelo 3D texturizado del yacimiento y luego mover una c\u00e1mara virtual por donde quiera, sin restricciones de espacio a\u00e9reo. La ejecuci\u00f3n, como siempre, es donde se complican las cosas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 1: Extracci\u00f3n de fotogramas con telemetr\u00eda (Claude Code)<\/h3>\n\n\n\n<p>Los v\u00eddeos del DJI Mini 3 Pro vienen acompa\u00f1ados de archivos SRT con telemetr\u00eda frame a frame: GPS, altitud, ISO, velocidad de obturaci\u00f3n, exposici\u00f3n. Informaci\u00f3n valios\u00edsima que normalmente se ignora.<\/p>\n\n\n\n<p>Con Claude Code escrib\u00ed un script Python (<code>prepare_odm.py<\/code>) que extrae fotogramas del v\u00eddeo a intervalos regulares y les inyecta la informaci\u00f3n GPS en los metadatos EXIF de cada imagen. El resultado que obtuve con mi metraje fue el de 768 fotogramas JPEG geolocalizados, listos para fotogrametr\u00eda.<\/p>\n\n\n\n<p>La clave aqu\u00ed es que el SRT del DJI tiene resoluci\u00f3n de ~33ms, as\u00ed que cada fotograma extra\u00eddo tiene coordenadas precisas; no es una aproximaci\u00f3n: sabemos exactamente d\u00f3nde estaba el dron y hacia d\u00f3nde miraba en cada fotograma.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 2: Reconstrucci\u00f3n 3D con OpenDroneMap<\/h3>\n\n\n\n<p>Los 768 fotogramas se procesaron en WebODM (la interfaz web de OpenDroneMap) a trav\u00e9s de su API REST. Esto es algo que ya ten\u00eda montado en mi <a href=\"https:\/\/bitacora.eniac2000.com\/?series=fotogrametria-asistida-por-ia\" target=\"_blank\" rel=\"noreferrer noopener\">proyecto de fotogrametr\u00eda con app Android<\/a>, y en el que la API de ODM est\u00e1 ya configurada. La API es uno de esos recursos que, una vez que los descubres, no entiendes c\u00f3mo hab\u00edas podido vivir sin ellos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"604\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-02-a-las-10.25.28-1024x604.png\" alt=\"Modelo de nube de puntos texturizado en OpenDroneMap\" class=\"wp-image-11818\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-02-a-las-10.25.28-1024x604.png 1024w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-02-a-las-10.25.28-300x177.png 300w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-02-a-las-10.25.28-768x453.png 768w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-02-a-las-10.25.28.png 1345w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Modelo de nube de puntos texturizado en OpenDroneMap<\/figcaption><\/figure>\n\n\n\n<p>Una vez procesada la secuencia en ODM, \u00e9ste gener\u00f3 los siguientes objetos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Nube de puntos densa<\/strong> del yacimiento<\/li>\n\n\n\n<li><strong>Modelo de malla texturizado<\/strong> (OBJ + 103 texturas PNG)<\/li>\n\n\n\n<li><strong>Ortofoto<\/strong> georreferenciada<\/li>\n<\/ul>\n\n\n\n<p>El modelo texturizado es lo que nos interesa: 172.000 caras con textura fotorrealista derivada directamente del metraje original. No es un modelo param\u00e9trico idealizado, sino que es la realidad capturada desde el aire, con sus imperfecciones, sus hierbas creciendo entre las piedras, y la luz del amanecer sevillano.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 3: Correcci\u00f3n de color \u2014 el problema de D-Cinelike<\/h3>\n\n\n\n<p>Aqu\u00ed hay que detenerse un poco, porque este paso es m\u00e1s importante de lo que parece a primera vista y tiene implicaciones en todo el ciclo de procesamiento.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Qu\u00e9 es D-Cinelike y por qu\u00e9 se graba as\u00ed<\/h4>\n\n\n\n<p>D-Cinelike es un perfil de color logar\u00edtmico que DJI incluye en sus drones. Frente al perfil \u00abNormal\u00bb, que produce una imagen lista para ver (con colores saturados y contraste alto), D-Cinelike captura la imagen de manera deliberadamente plana: baja saturaci\u00f3n, bajo contraste, sombras levantadas y luces altas comprimidas.<\/p>\n\n\n\n<p>La pregunta es: \u00bfpor qu\u00e9 querr\u00eda alguien grabar v\u00eddeo que parece desva\u00eddo y gris\u00e1ceo? Pues por la misma raz\u00f3n por la que un fot\u00f3grafo profesional dispara en RAW en vez de en JPEG: el <strong>rango din\u00e1mico<\/strong>. D-Cinelike preserva m\u00e1s informaci\u00f3n en sombras y altas luces que el perfil <em>Normal<\/em>, a costa de requerir un procesado posterior (lo que en cine se llama <em>color grading<\/em>). En una escena como It\u00e1lica al amanecer, con sombras duras en las gradas y cielo brillante al fondo, la diferencia entre perder o retener detalle en esos extremos puede ser de dos o tres <em>stops<\/em>.<\/p>\n\n\n\n<p>El problema es que ese procesado posterior <strong>tiene que realizarse<\/strong>. Si usas los fotogramas D-Cinelike directamente \u2014 como textura de un modelo 3D, por ejemplo \u2014 el resultado es un modelo fotogram\u00e9trico con aspecto enfermizo: colores apagados, contraste inexistente, como si le hubieras puesto un filtro de niebla a las ruinas romanas.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">La correcci\u00f3n autom\u00e1tica para fotogrametr\u00eda<\/h4>\n\n\n\n<p>Para las 103 texturas PNG que ODM gener\u00f3, Claude Code aplic\u00f3 una correcci\u00f3n de color program\u00e1tica usando numpy y PIL. No es un <em>auto-enhance<\/em> gen\u00e9rico \u2014 es una curva dise\u00f1ada espec\u00edficamente para invertir las caracter\u00edsticas de D-Cinelike para las secuencias espec\u00edficas que realic\u00e9:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Gamma 0.92<\/strong>: compensa la curva logar\u00edtmica del perfil, devolviendo la respuesta tonal a algo m\u00e1s cercano a la percepci\u00f3n lineal.<\/li>\n\n\n\n<li><strong>Contraste \u00d71.25<\/strong>: restituye la separaci\u00f3n tonal que D-Cinelike aplana deliberadamente.<\/li>\n\n\n\n<li><strong>Balance RGB<\/strong>: R+8%, G+2%, B-6%. D-Cinelike tiende a un cast ligeramente fr\u00edo, especialmente al amanecer. Este ajuste devuelve calidez sin pasarse.<\/li>\n\n\n\n<li><strong>Elevaci\u00f3n de sombras +3%<\/strong>: recupera detalle en las zonas oscuras de las gradas sin quemar las altas luces.<\/li>\n\n\n\n<li><strong>Saturaci\u00f3n \u00d71.38<\/strong>: el n\u00famero que m\u00e1s sorprende. D-Cinelike desatura agresivamente; un factor de 1.38 puede parecer excesivo, pero el resultado es una saturaci\u00f3n natural, no exagerada.<\/li>\n<\/ul>\n\n\n\n<p>Esta correcci\u00f3n se aplic\u00f3 directamente a las texturas PNG del modelo dentro del flujo de procesado. El resultado es un modelo 3D con colores realistas que coinciden razonablemente con lo que el ojo humano ver\u00eda en el teatro romano de It\u00e1lica a esa hora de la ma\u00f1ana.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">La generaci\u00f3n de un LUT para DaVinci Resolve<\/h4>\n\n\n\n<p>Pero la correcci\u00f3n de las texturas es solo la mitad del problema. Los v\u00eddeos originales del dron tambi\u00e9n est\u00e1n en D-Cinelike, y hay que corregirlos en DaVinci Resolve para el montaje final. Y aqu\u00ed es donde entra un concepto clave: el <strong>LUT<\/strong>.<\/p>\n\n\n\n<p>Un LUT (Look-Up Table) es, en esencia, una tabla de traducci\u00f3n de colores. Para cada combinaci\u00f3n posible de RGB de entrada, define qu\u00e9 RGB de salida debe producir. Es el equivalente digital de un filtro fotogr\u00e1fico, pero con precisi\u00f3n matem\u00e1tica: no es \u00abm\u00e1s c\u00e1lido\u00bb o \u00abm\u00e1s contrastado\u00bb en abstracto, sino \u00abel p\u00edxel (128, 120, 135) se convierte exactamente en (142, 118, 122)\u00bb.<\/p>\n\n\n\n<p>DaVinci Resolve trabaja nativamente con LUTs en formato <code>.cube<\/code> \u2014 un archivo de texto que define una rejilla 3D de correspondencias de color. Lo elegante del asunto es que la misma curva de correcci\u00f3n que se aplic\u00f3 a las texturas del modelo se puede exportar como un LUT <code>.cube<\/code> y cargarlo en DaVinci como correcci\u00f3n base para todo el metraje.<\/p>\n\n\n\n<p>Claude Code gener\u00f3 un LUT de 33 puntos (33\u00d733\u00d733 = 35.937 muestras en el espacio RGB) que codifica exactamente la misma transformaci\u00f3n: gamma, contraste, balance RGB, saturaci\u00f3n. El resultado es que el metraje original del dron y las secuencias renderizadas desde el modelo 3D comparten la misma base de color. No son id\u00e9nticos \u2014 el renderizado EEVEE y el sensor CMOS del dron responden de manera diferente a la luz \u2014, pero parten del mismo punto de referencia crom\u00e1tico, lo que simplifica enormemente el <em>matching<\/em> posterior en DaVinci.<\/p>\n\n\n\n<p>La alternativa habitual \u2014 descargar un LUT gen\u00e9rico \u00abD-Cinelike to Rec.709\u00bb de internet y rezar para que funcione \u2014 es una loter\u00eda. Cada escena tiene su luz, su rango din\u00e1mico, su balance de blancos. Un LUT generado a partir del propio metraje, con par\u00e1metros ajustados a las condiciones reales de captura, es siempre mejor que uno gen\u00e9rico. Y generarlo es cuesti\u00f3n de segundos.<\/p>\n\n\n\n<p>Y este punto es muy relevante: a los puristas de DaVinci no les gusta hacer uso de LUTs porque les parece un recurso f\u00e1cil para vagos (por lo que coment\u00e1bamos antes, un LUT gen\u00e9rico dif\u00edcilmente se adaptar\u00e1 a tus condiciones concretas), y prefieren hacer uso de edici\u00f3n de colorimetr\u00eda avanzada mediante la generaci\u00f3n de una serie de nodos en la pesta\u00f1a de edici\u00f3n de color de DaVinci. Un proceso que requiere un buen rato de ajustes y validaciones para obtener un buen resultado, y eso contando con que t\u00fa mismo tengas un buen trasfondo t\u00e9cnico para saber exactamente lo que est\u00e1s haciendo. Sin embargo, afrontarlo de la manera en la que lo hice con Claude Code produce resultados perfectos en lo dicho, apenas segundos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 4: Importaci\u00f3n y preparaci\u00f3n en Blender (MCP)<\/h3>\n\n\n\n<p>Aqu\u00ed es donde entra uno de los elementos tecnol\u00f3gicos m\u00e1s interesantes del proceso: el <strong>MCP (Model Context Protocol) de Blender<\/strong>. Un servidor MCP permite que Claude Code controle Blender program\u00e1ticamente \u2014 ejecutar c\u00f3digo Python en Blender, hacer capturas del viewport, gestionar la escena, todo desde la l\u00ednea de comandos.<\/p>\n\n\n\n<p>\u00bfPor qu\u00e9 es esto relevante? Porque la importaci\u00f3n del modelo ODM en Blender no es trivial. El modelo viene en coordenadas UTM con un offset de cientos de miles de metros, las texturas ya corregidas desde D-Cinelike, y hay que recortar la malla para quedarse solo con el teatro, eliminando los edificios del pueblo colindante.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-02-a-las-16.30.05-1024x683.png\" alt=\"Render del Teatro en Blender\" class=\"wp-image-11817\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-02-a-las-16.30.05-1024x683.png 1024w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-02-a-las-16.30.05-300x200.png 300w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-02-a-las-16.30.05-768x512.png 768w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-02-a-las-16.30.05.png 1136w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Render del Teatro en Blender<\/figcaption><\/figure>\n\n\n\n<p>A trav\u00e9s del MCP, Claude Code pudo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Importar el OBJ con la orientaci\u00f3n correcta de ejes (UTM usa Y-forward, Z-up)<\/li>\n\n\n\n<li>Analizar la densidad de v\u00e9rtices para localizar la orchestra (la zona m\u00e1s plana y baja del modelo)<\/li>\n\n\n\n<li>Recortar la malla con un radio circular centrado en el teatro<\/li>\n\n\n\n<li>Centrar el modelo en el origen de Blender<\/li>\n\n\n\n<li>Configurar iluminaci\u00f3n, cielo y c\u00e1mara para los renders<\/li>\n<\/ul>\n\n\n\n<p>Todo esto realizado de manera iterativa, con capturas de viewport para verificar cada paso. El MCP convierte a Blender en una herramienta programable dentro del flujo de trabajo de IA, con lo que hace que no se necesite tocar la interfaz gr\u00e1fica para nada.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 5: Creaci\u00f3n de tomas virtuales en 4K<\/h3>\n\n\n\n<p>Con el modelo limpio en Blender, crear las tomas que faltaban fue cuesti\u00f3n de definir trayectorias de c\u00e1mara:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>El cenital ascendente<\/strong> arranca a 7.4 metros sobre la <em>orchestra<\/em>. La c\u00e1mara mira recto hacia abajo y asciende hasta 46 metros, revelando progresivamente las gradas semicirculares. Para alinear la c\u00e1vea con el encuadre, hubo que ajustar la rotaci\u00f3n de la c\u00e1mara en incrementos de 5\u00b0 hasta clavar los 112.5\u00b0 exactos. El resultado fue un ascenso suave, que desvela la magnificencia del teatro en todo su esplendor.<\/li>\n\n\n\n<li><strong>El vuelo pasante<\/strong> describe una l\u00ednea recta SW\u2192NE a 60 metros de altitud constante, que muestra en un primer t\u00e9rmino la parte superior de las gradas del teatro, posteriormente el foso, el escenario y la fachada esc\u00e9nica. Tras probar varias orientaciones, la que mejor funcion\u00f3 fue la c\u00e1mara mirando hacia atr\u00e1s durante el pasante, de tal manera que se ve el teatro acercarse, pasar bajo tus pies, y alejarse.<\/li>\n\n\n\n<li><strong>La espiral envolvente<\/strong> hace dos vueltas completas con radio creciente (45\u219285 metros) y ascenso gradual. Se aplic\u00f3 una funci\u00f3n <em>smoothstep<\/em> para suavizar el arranque y la frenada, algo que con el dron real es casi imposible de conseguir, especialmente con viento.<\/li>\n\n\n\n<li>Y, por \u00faltimo, <strong>el sweep lateral<\/strong>, un vuelo guiado por <strong>trazo libre<\/strong>: Este \u00faltimo render nace de una idea simple: \u00bfy si pudiera dibujar directamente sobre el modelo la trayectoria que quiero que siga la c\u00e1mara? Blender lo permite con su herramienta de anotaci\u00f3n. Trac\u00e9 una l\u00ednea azul sobre la vista cenital del modelo, marcando un arco amplio que parte del suroeste, bordea el teatro por su flanco noroeste y termina al noreste. Claude Code interpret\u00f3 ese trazo a partir de un screenshot del viewport, extrajo la direcci\u00f3n y curvatura, y lo tradujo en una curva B\u00e9zier de cinco puntos de control con altitud variable (37-40 metros sobre la orquesta). La c\u00e1mara recorre esa curva en 15 segundos, apuntando en todo momento al centro de la <em>orchestra<\/em> mediante un <em>constraint Track To<\/em>, lo que produce un movimiento envolvente muy natural, como si el dron rodeara el monumento manteniendo siempre el punto de inter\u00e9s centrado en el encuadre. El resultado es un plano que ning\u00fan vuelo real del d\u00eda captur\u00f3: un <em>sweep<\/em> lateral suave que revela progresivamente la cavea, la orchestra y la <em>scaenae frons<\/em> desde un \u00e1ngulo que habr\u00eda requerido una planificaci\u00f3n de vuelo espec\u00edfica. Es precisamente aqu\u00ed donde el gemelo digital demuestra su valor \u2014 no como sustituto del metraje real, sino como complemento que permite explorar perspectivas que no se contemplaron en campo.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"620\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-03-a-las-19.02.27-1024x620.png\" alt=\"Vista cenital del Teatro en Blender\" class=\"wp-image-11820\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-03-a-las-19.02.27-1024x620.png 1024w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-03-a-las-19.02.27-300x182.png 300w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-03-a-las-19.02.27-768x465.png 768w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Captura-de-pantalla-2026-05-03-a-las-19.02.27.png 1436w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Vista cenital del Teatro en Blender<\/figcaption><\/figure>\n\n\n\n<p>Todos los renders se generaron a 3840\u00d72160 a 29.97fps con EEVEE, exactamente el mismo formato que los v\u00eddeos originales del DJI, lo que permite mezclarlos en la timeline de DaVinci Resolve sin conversi\u00f3n de formato.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 6: Montaje final en DaVinci Resolve<\/h3>\n\n\n\n<p>En DaVinci Resolve, las secuencias renderizadas se integran con el metraje real. Ambos parten de la misma correcci\u00f3n de color: el LUT D-Cinelike generado se aplica al metraje original, y las texturas del modelo ya llevan la correcci\u00f3n equivalente; as\u00ed que la continuidad crom\u00e1tica es razonable desde el primer momento. No es perfecta (el renderizado EEVEE no tiene la misma respuesta lum\u00ednica que el sensor del dron), pero con un grade fino en DaVinci y transiciones bien elegidas, el resultado es convincente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">La cadena tecnol\u00f3gica completa<\/h2>\n\n\n\n<p>Si tuviera que resumir el flujo de procesamiento en una l\u00ednea, ser\u00eda algo como lo que sigue:<\/p>\n\n\n\n<p><strong>DJI Mini 3 Pro \u2192 Claude Code (validaci\u00f3n telemetr\u00eda + extracci\u00f3n frames + correcci\u00f3n color + LUT) \u2192 OpenDroneMap API (modelo 3D) \u2192 Blender MCP (escena + render 4K) \u2192 DaVinci Resolve (montaje con LUT)<\/strong><\/p>\n\n\n\n<p>Cada eslab\u00f3n es interesante por s\u00ed solo, pero lo realmente potente es la integraci\u00f3n: Claude Code act\u00faa como pegamento entre todos los sistemas. Valida la conformidad del vuelo, parsea los SRT del DJI, genera la correcci\u00f3n de color y el LUT, llama a la API de ODM, controla Blender v\u00eda MCP, y genera los comandos ffmpeg para el ensamblaje final. Un \u00fanico agente orquestando herramientas que, individualmente, no saben nada las unas de las otras.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reflexi\u00f3n: complementar, no falsificar<\/h2>\n\n\n\n<p>Hay una l\u00ednea que conviene no cruzar: estas secuencias renderizadas <strong>complementan<\/strong> el metraje real, no lo sustituyen. El modelo 3D proviene del propio vuelo, por lo que no es un modelo inventado ni una IA imaginando c\u00f3mo ser\u00eda el teatro: es la misma realidad capturada, pero vista desde \u00e1ngulos que no pudimos grabar.<\/p>\n\n\n\n<p>Y hay otra l\u00ednea igual de importante: la del <strong>cumplimiento normativo<\/strong>. La tecnolog\u00eda que permite generar tomas virtuales no es excusa para volar donde no se debe, confiando en que \u00abya lo arreglo en postprocesado\u00bb. Es exactamente lo contrario: vuelas dentro del marco legal, validas que as\u00ed ha sido, y usas la tecnolog\u00eda para ir m\u00e1s all\u00e1 de lo que ese marco permite capturar. El orden importa.<\/p>\n\n\n\n<p>La tecnolog\u00eda no elimina la necesidad de volar bien y de volar legal. Lo que hace es ampliar lo que puedes contar con el material que ya tienes. Y a veces, las mejores tomas son las que haces sin despegar. <img src=\"https:\/\/bitacora.eniac2000.com\/wp-includes\/images\/smilies\/mrgreen.png\" alt=\":mrgreen:\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hay un momento en todo vuelo de dron sobre patrimonio<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1845,10,13],"tags":[1982,1959,507,537,551,688,824,863,1983,1202,1500,1602],"series":[],"class_list":["post-11815","post","type-post","status-publish","format-standard","hentry","category-generado-con-ia","category-espana-a-vista-de-dron","category-informatica","tag-aesa","tag-claude-code","tag-davinci-resolve","tag-dji-mini-3-pro","tag-dron","tag-fotogrametria","tag-ia","tag-italica","tag-mcp","tag-open-drone-map","tag-santiponce","tag-teatro-romano"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/11815","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11815"}],"version-history":[{"count":4,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/11815\/revisions"}],"predecessor-version":[{"id":11824,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/11815\/revisions\/11824"}],"wp:attachment":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11815"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11815"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11815"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=11815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}