Communitygithub.com

atlas-flythrough

Convierte fotografías o imágenes generadas en movimientos de cámara conscientes de la profundidad con World Labs Atlas. Ideal para recorridos, sobrevuelos, revelados u órbitas a través de una escena basada en imágenes.

¿Qué es atlas-flythrough?

Esta habilidad permite a agentes de IA (como Claude Code, Cursor o Codex) planificar y ejecutar movimientos de cámara sofisticados en escenas 3D reconstruidas a partir de fotografías o imágenes generadas, utilizando el pipeline de World Labs Atlas. El agente puede analizar una imagen de entrada, generar solicitudes de pose, definir keyframes con parámetros de cámara (posición, orientación, campo de visión) y ejecutar renders tanto de vistas de soporte como del vuelo final completo. La habilidad incluye un proceso de curado de fotogramas ancla para movimientos complejos (pasajes, órbitas, revelados), donde se generan varias alternativas desde las mismas poses de cámara y se seleccionan manualmente las mejores. Soporta la mejora de prompts (prompt enhancement) y ofrece opciones como `--footfalls` para agregar un sutil bamboleo de caminata. Al final, se genera un video MP4 con FFmpeg. Es útil para creadores de contenido, arquitectos o desarrolladores que necesiten generar recorridos de cámara realistas a partir de una sola imagen.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wendlerc/atlas-skills/tree/main/skills/atlas-flythrough

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Atlas flythrough

Elige qué debe descubrir el espectador al final del plano. Inspecciona la imagen en busca de bordes en primer plano, espacio de viaje abierto y puntos de referencia a varias profundidades. Un movimiento lateral que pasa cerca de un objeto en primer plano hace que la escala sea más fácil de leer. Un ángulo inverso necesita evidencia de lo que hay detrás del sujeto.

Usa una CLI autenticada de World Labs, Python 3 con NumPy y FFmpeg. Trabaja en un directorio de trabajo nuevo. Establece PREP en la ruta absoluta de scripts/prepare.py de esta habilidad. Proporciona un JPEG y sus dimensiones de salida previstas.

La mejora de prompt está habilitada por defecto para las vistas de apoyo y el vuelo final. Pasa --no-enhance-prompt a un comando de generación en prepare.py para usar el prompt de la escena textualmente para esa pasada.

python3 "$PREP" pose scene.jpg --resolution 1280 720 > pose-request.json
worldlabs tasks run images2PosedRGBD --request pose-request.json --wait --json > pose.json

Escribe shot.json con un prompt de escena y fotogramas clave. Cada fila especifica el tiempo normalizado, el viaje XYZ local de la cámara (derecha, arriba, atrás), el objetivo UV normalizado en el espacio de la imagen (desde la parte superior izquierda), la profundidad del objetivo en unidades de la cámara de origen, el multiplicador de distancia focal y la inclinación en grados. Mantén el tiempo estrictamente creciente de 0 a 1. Inspecciona la profundidad estimada para elegir distancias en la escala de la escena. Este movimiento lateral mínimo es un punto de partida:

{"prompt":"Un taller soleado con un banco de trabajo y ventanales.","knots":[[0,0,0,0,0.5,0.5,2,1,0],[0.5,0.15,0,-0.12,0.53,0.5,2,1,0],[1,0.35,0,-0.25,0.57,0.5,2,1,0]]}
python3 "$PREP" angles shot.json --pose pose.json --supports 6 > supports-request.json
worldlabs tasks run atlasGenerate --request supports-request.json --wait --json > supports.json
worldlabs operations download "$(jq -er '.id' supports.json)" --out supports

Inspecciona los soportes en orden de trayectoria antes del render completo. Sigue el mismo punto de referencia a través de ángulos vecinos. Para una coincidencia exacta con la entrada en el fotograma cero, usa la cámara con pose original allí.

Seleccionar anclas para un movimiento difícil

Para un pasaje, órbita o revelado inverso, explora ambos lados del obstáculo y el medio del giro. Usa la API de Desarrollador para imágenes de estilo Viewfinder. Ejecuta atlasGenerate con targetCameras dispersas, returnDepth: true y enhancePrompt: true. Un movimiento simple con buena cobertura puede usar la primera pasada de soporte.

Cuando la primera pasada es inconsistente, genera alternativas en las mismas poses de cámara. Mantén fijos el arreglo de objetivos dispersos y el prompt de la escena. Varía qué vistas previas confiables con pose proporcionas en contextFrames, por ejemplo, favorece las vistas del lado de entrada en una pasada y las del lado de salida en otra. Mantén todas las cámaras y mapas de profundidad en las mismas coordenadas del mundo.

Organiza los candidatos con una columna por tiempo de cámara y una fila por pasada. Compara cada candidato con las vistas a cada lado. Busca una abertura continua, una silueta de punto de referencia estable, una profundidad de primer plano plausible y una línea de visión clara. Inspecciona la profundidad en las superficies por las que la cámara pasa cerca. Elige las vistas que coinciden a lo largo de la secuencia. Omite las poses redundantes o rotas, o explora un ángulo faltante antes de comprometerte con el render denso.

Para usar una selección mixta, registra cada elección como un índice de fotograma basado en cero en su operación guardada. Por ejemplo, después de descargar y revisar dos pasadas de seis vistas, construye el contexto final con jq. Sustituye tus propias elecciones. Mantén juntos el activo RGB, el activo de profundidad y la cámara del mismo fotograma devuelto.

# Guarda las elecciones para que el mismo contexto pueda reconstruirse después.
echo '[["A",0],["B",2],["A",4],["B",5]]' > picks.json
jq -n --slurpfile a supports.json --slurpfile b alternate.json --slurpfile picks picks.json '
  {A: $a[0].response.frames, B: $b[0].response.frames} as $runs
  | [$picks[0][] as [$run, $i]
     | ($runs[$run][$i] // error("Unknown anchor: \($run)[\($i)]"))
     | {camera, imageAsset: {assetId: .imageAsset.assetId},
        depth: {depthAsset: {assetId: .depth.depthAsset.assetId}}}]
' > anchors.json

Renderizar y comparar

Prepara la solicitud de cámara densa a partir de los fotogramas clave del plano.

python3 "$PREP" flight shot.json --pose pose.json --angles supports.json --frames 120 > flight-request.json

Si seleccionaste un conjunto mixto, sustituye esos anclas ahora. Esto preserva la primera imagen con pose junto con los fotogramas seleccionados.

jq --slurpfile picks anchors.json '.contextFrames = [.contextFrames[0]] + $picks[0]' flight-request.json > selected-request.json
mv selected-request.json flight-request.json

Envía la trayectoria completa en una operación.

worldlabs tasks run atlasGenerate --request flight-request.json --wait --timeout 1800 --json > flight.json
worldlabs operations download "$(jq -er '.id' flight.json)" --out frames
ffmpeg -framerate 24 -i frames/frames_%03d_image.jpg -c:v libx264 -pix_fmt yuv420p -movflags +faststart shot.mp4

Inspecciona el inicio, la línea base más amplia, el revelado y el final, luego mira el clip a velocidad real. Si el viaje aún parece un zoom, mantén fijo el lente y aumenta el viaje lateral cerca de un borde de primer plano con soporte. Iguala la posición del punto final, la dirección, el lente y la velocidad al unir dos movimientos que se supone que sean continuos. --footfalls opcional agrega un sutil bamboleo para tomas de caminata.

Al comparar conjuntos de anclas, renderiza la misma solicitud densa dos veces, cambiando solo contextFrames. Si revisaste la trayectoria durante la exploración, vuelve a ejecutar las anclas antiguas en esa trayectoria revisada. Usa una operación distinta por solicitud, guarda las solicitudes y verifica que eliminar contextFrames deje JSON idéntico. Muestra fotogramas sincronizados en las mismas marcas de tiempo, especialmente en el giro o revelado. Con la mejora de prompt habilitada, inspecciona el promptUsed de ambas respuestas: las imágenes seleccionadas pueden cambiar la descripción mejorada. Para un experimento que también mantenga fijo el texto efectivo, reutiliza una descripción con enhancePrompt: false en ambas ejecuciones. Los renders independientes aún pueden variar.

En el ejemplo de la playa de Tide Organ, dos pasadas de API produjeron 40 imágenes fijas en 20 poses. Diecisiete selecciones cubrieron la aproximación, el arco acanalado, el oleaje abierto y la vista inversa de la orilla. El tubo de cobre fue un punto de referencia útil para juzgar la continuidad durante el giro mar adentro.

Skills relacionados