Habilidad de Previsualización en Bloque 3D para Tomas Continuas
Declaración única: El usuario da una imagen o una descripción, esta habilidad genera un video en bloque; una vez que el bloque está finalizado, se escriben las indicaciones, y el video en bloque se utiliza como referencia de movimiento junto con las indicaciones para el modelo de video. Los movimientos de cámara largos no dependen de indicaciones místicas, sino de calcular primero cómo se mueve la cámara y permitir que el usuario lo vea y lo confirme.
0. Modo de Operación (Siempre presentar solo estos tres pasos al exterior)
- El usuario proporciona una imagen de referencia o una descripción textual ("10 segundos, rodea desde mi espalda hasta el frente lateral, que las cosas sobre la mesa floten primero").
- La habilidad genera un video de previsualización en bloque 3D con movimiento de cámara, ambos iteran hasta que el usuario diga "esta es la sensación".
- Una vez finalizado, se entregan dos elementos: Video de previsualización en bloque + Indicaciones detalladas de video, todo listo para usar con Seedance 2.5 para generar el video final.
Cómo se calcula internamente (escena, coordenadas, validación) es asunto de la habilidad, no exijas detalles técnicos al usuario. Las reglas completas de entrada, preguntas obligatorias y tabla de traducción de lenguaje natural se encuentran en references/00-flow-intake-iteration.md, que es el resumen del flujo de esta habilidad; léelo primero cada vez que se active.
1. Flujo Principal de Seis Fases (El orden no debe alterarse)
| Fase | Qué hace el usuario | Qué debes entregar | Condición de aprobación |
|---|---|---|---|
| ① Recepción de requisitos | Proporciona imagen de referencia / descripción textual | Reformular en 3 frases "la escena que entiendo", incluyendo sujeto, dirección de cámara, flotación/ingravidez | El usuario dice "sí" o corrige una frase; confirmar relación de aspecto y duración |
| ② Detección del entorno | Elegir entre dos opciones (instalar / no instalar) | Resultado de check_blender.py + explicación de la ruta en una frase | Ruta clara, entrar en A o B |
| ③ Primera versión del video en bloque | Ver el video | mp4/webm reproducible + 3–4 fotogramas clave + "dime directamente qué está mal" | El video se entrega realmente. Solo dar tabla de coordenadas = incumplimiento |
| ④ Iteración conversacional | Dar opiniones en lenguaje natural | Nueva versión de video v2/v3… + línea de explicación del cambio | Solo un cambio por ronda; confirmación explícita del usuario |
| ⑤ Finalización + Redacción de indicaciones | Confirmar que la sensación es correcta | RESULT: PASS en las cuatro comprobaciones + Indicaciones en seis secciones | No escribir indicaciones si la validación no es PASS |
| ⑥ Entrega para generación de video | Tomar los materiales para generar el video | Video en bloque + Indicaciones + Especificaciones de carga (video1=referencia de movimiento, imagen1=referencia visual) | Las coordenadas de las indicaciones provienen todas del JSON medido |
Las fases ③ y ④ permiten múltiples rondas de ida y vuelta; este es el valor principal de esta habilidad: corregir los problemas de cámara en 3D, no en el modelo de video.
2. Seis Reglas de Oro
- Regla de orden: Construir escena → Video en bloque → Confirmación del usuario → Luego escribir indicaciones. Escribir indicaciones sin que el usuario haya visto el video es un desperdicio.
- Las indicaciones solo se basan en la imagen de referencia del usuario para la apariencia visual. El bloque no es referencia visual, solo se usa para fijar el movimiento, la sincronización y las coordenadas; la calidad, la forma, la iluminación y el color siempre vuelven a la imagen de referencia.
- Movimiento de cámara unidireccional y continuo. El ángulo de rotación debe ser estrictamente creciente o decreciente; prohibido el vaivén; el vaivén es un fracaso, reajustar la curva.
- El sujeto nunca sale del cuadro. Verificación de proyección fotograma a fotograma; el NDC del sujeto debe permanecer dentro del marco de seguridad; cuando el sujeto asciende, la cámara debe inclinarse hacia arriba simultáneamente.
- Cero atravesamiento. Si la distancia entre dos objetos en movimiento en cualquier fotograma es menor que el umbral, es un fracaso; resolver con el orden "primero dejar espacio, luego ascender" y "primero volar objetos ligeros, luego pesados", no apelotonando densidad.
- El usuario solo habla en lenguaje humano. El usuario dice "más alto" o "la silla choca con la pierna", tú traduces a parámetros y solo cambias ese elemento; no expliques al usuario ángulos polares, NDC o AABB.
3. Detección del Entorno y Selección de Ruta (Consejo 1: Detectar y modelar)
check_blender.py
├─ Instalado → Rama A (Blender, máxima precisión, puede exportar datos medidos fotograma a fotograma)
├─ No instalado
│ ├─ Usuario acepta instalar → Guiar a versión portátil (05-blender-setup.md) → Rama A
│ ├─ Usuario ya tiene otra versión/ruta → Ingresar ruta → Rama A
│ └─ Usuario rechaza instalar (o entorno sin permisos, tiempo limitado) → Rama B (Previsualización web en Three.js)
└─ Rama B sigue el mismo flujo de seis fases, solo como "referencia de movimiento", las comprobaciones y la redacción de indicaciones son idénticas en todos los aspectos
Forma de hablar para la guía de instalación — solo un punto de decisión a la vez, sin escribir párrafos largos:
Ahora mismo no hay Blender, dos opciones:
- Instalo la versión portátil (aproximadamente 300MB, se instala en un disco no del sistema, no escribe en el registro, no ocupa la unidad C, se puede eliminar por completo) — máxima precisión, puede exportar coordenadas medidas fotograma a fotograma;
- No instalo, uso Three.js en el navegador para generar el video de previsualización en bloque — el video se ve en minutos, la precisión de coordenadas es ligeramente menor. ¿Cuál eliges?
Si el usuario elige 1 → seguir references/05-blender-setup.md; si elige 2 → seguir references/06-threejs-fallback.md.
4. Detalles de las Fases
① Recepción de requisitos
Leer references/00-flow-intake-iteration.md §1–§3: determinar si la entrada es una imagen, una descripción o ambas. Solo tres preguntas obligatorias (duración/relación de aspecto, orientación del sujeto, intención del movimiento de cámara); si se puede inferir, inferir; el resto usar valores predeterminados de la plantilla knowledge/kb-levitation-office.md. Cuando el usuario dice "como quieras", usar valores predeterminados para la primera versión y dejar que vea el video y señale los problemas.
③ Primera versión del video en bloque (Consejo 3: Primero la previsualización en bloque)
Primero construir el bloque estático y calibrar las coordenadas del mundo (1 unidad = 1 metro, origen en el suelo) → Parametrizar la trayectoria de la cámara → Renderizar a baja resolución 480P → Entregar video + fotogramas clave. En esta fase no se escriben indicaciones. Criterios de aceptación: reproducible, sin fotogramas negros, sujeto dentro del cuadro, paredes y suelo de la habitación estáticos.
④ Iteración conversacional
Usar la tabla de traducción de la sección 00 §4 para traducir las palabras del usuario a parámetros, cambiar solo un elemento a la vez, generar una nueva versión y escribir una línea de explicación del cambio (v2: Radio 3.45→2.95, el sujeto está más lleno en el fotograma final). Las normas de nomenclatura de versiones están en 00 §5.
⑤ Finalización, validación y redacción de indicaciones (Consejo 2: Comprobación automática + Consejo 4: Escribir indicaciones mirando el bloque)
Las cuatro comprobaciones (monotonía del ángulo polar/ salida de cuadro/ atravesamiento entre grupos/ techo) deben tener RESULT: PASS, luego exportar el JSON de datos medidos fotograma a fotograma, y luego escribir las indicaciones en seis secciones. Cada coordenada en las indicaciones solo puede provenir de este JSON, prohibido rellenar estimaciones a mano. Las normas de redacción están en references/04-prompt-format.md.
⑥ Entrega para generación de video (Conexión con Seedance 2.5)
Entregar según el formato de la sección 00 §6: el video en bloque se etiqueta como referencia de movimiento/posición de cámara/sincronización, la imagen de referencia se etiqueta como la única referencia visual, la primera frase de las indicaciones enfatiza "reproducir estrictamente el movimiento de cámara y el orden de despegue del video de referencia", la duración se alinea con el bloque, y el movimiento de cámara se divide en segmentos de 2~3 segundos.
5. Rama A: Manual de Ejecución en Blender
- Especificaciones de escena y coordenadas:
references/01-scene-spec.md - Especificaciones de diseño de cámara:
references/02-camera-motion.md - Sincronización de ingravidez por capas y prevención de atravesamiento:
references/03-levitation-timing.md - Instalación y conexión:
references/05-blender-setup.md - Scripts:
scripts/build_scene_template.py— Esqueleto de escena en bloque (habitación, mesa, doble pantalla, silla, bloques de persona)scripts/render_previs.py— Renderizado de previsualización a baja resolución 480P (EEVEE, sin materiales)scripts/export_cam_data.py— Exportar datos fotograma a fotograma de cámara/punto de mirada/ángulo de elevación/z de objetos a JSONscripts/validate_trajectory.py— Cuatro comprobaciones (monotonía / salida de cuadro / atravesamiento / techo)
Secuencia de línea de comandos (ya probada en la máquina local, $BLENDER es la ruta absoluta de blender.exe, las rutas se reemplazan según el proyecto):
# 1 Detección
python scripts/check_blender.py --json
# 2 Construir escena + escribir trayectoria orbital y animación de ingravidez por capas (--orbit 1), y exportar lista de coordenadas
"$BLENDER" -b --python scripts/build_scene_template.py -- \
--orbit 1 --center 0.0 0.15 --dur 10 --fps 24 \
--a0 186 --a1 300 --r0 3.45 --r1 2.45 --z0 0.78 --z1 1.20 --l0 1.05 --l1 1.45 \
--out "Z:/project/scene.blend" --csv "Z:/project/coords.csv"
# 3 Cuatro comprobaciones (ejecutar antes de finalizar), debe ser RESULT: PASS
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/validate_trajectory.py -- \
--center 0.0 0.15 --ceiling 2.75 \
--keys Person_Head,Person_Torso,Desk_Top,Monitor_H_Body \
--moving Minion_,Monitor,PC_Case,Keyboard,Mouse,Person_,Desk_,Chair_
# 4 Exportar datos medidos fotograma a fotograma (solo usar estos datos para escribir indicaciones)
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/export_cam_data.py -- \
--out "Z:/project/cam.json" --center 0.0 0.15 --keys Person_Head,Desk_Top,Chair_Seat
# 5 Renderizado de previsualización: primero 16 fotogramas para probar el pipeline, luego el video completo
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/render_previs.py -- \
--out "Z:/project/previs.mp4" --res 960x540 --samples 4 --start 1 --end 240
Para iterar y modificar, solo es necesario volver a ejecutar el paso 2 (cambiar parámetros) → paso 5 (generar video), y después de finalizar, completar los pasos 3 y 4.
--keys solo rellena los puntos clave del sujeto (cabeza, torso, superficie de la mesa, pantalla principal); los accesorios a menos de 1 m del sujeto (asiento de la silla, etc.) inevitablemente saldrán del cuadro, lo cual es un resultado físico de la cámara.
--moving solo rellena los prefijos de los objetos que se desplazarán; si no se rellena, no se realiza la detección de atravesamiento; los objetos se agrupan por la primera parte del nombre; el contacto dentro del mismo grupo no se cuenta.
6. Rama B: Previsualización en Bloque con Three.js en la Web
- Plan y limitaciones:
references/06-threejs-fallback.md - Ejecutable directamente:
scripts/threejs_previs.html(archivo único, CDN introduce three, incluye reproducción de trayectoria, cambio de perspectiva/vista superior, exportación a JSON, grabación webm) - Limitaciones: la persona se aproxima con bloques, todos los materiales en blanco; solo se puede verificar la dirección del movimiento, la relación de composición y la sincronización, no la iluminación ni la textura.
- Salida: webm + capturas de fotogramas clave, las coordenadas se exportan desde el mismo conjunto de parámetros de la página.
7. Especificaciones de Entrega de Indicaciones (Consejo 4)
Seis secciones fijas, ninguna puede faltar: 【Unidad de Generación】 【Referencia】 【Continuidad】 【Narración y Sonido】 【Línea de Tiempo con Coordenadas】 【Indicaciones Negativas】.
Tres requisitos estrictos:
- Escribir mirando el bloque, no adivinar: Cada frase de movimiento de cámara puede volver al código de tiempo del bloque, con el formato "0–2.5s comienza detrás a la izquierda del sujeto, cámara a 0.78 m de altura, radio 3.45 m, ángulo polar 186°, elevación 3.7°".
- Distinguir los roles de las referencias: El video en bloque solo fija el movimiento, la imagen de referencia fija la apariencia visual, ambas deben mencionarse de manera realista.
- Prevención de atravesamiento escrita como oraciones de orden causal, no como "cuidado con no atravesar".
Técnicas de escritura, estructuras de oraciones, ejemplos incorrectos y causas comunes de fallo se encuentran en references/04-prompt-format.md; los parámetros medidos del proyecto se encuentran en knowledge/kb-levitation-office.md (se pueden reutilizar directamente como valores de plantilla).
8. Resolución Rápida de Problemas Comunes
| Fenómeno | Causa raíz | Solución |
|---|---|---|
| La cámara se mueve erráticamente de izquierda a derecha | Curva de ángulo polar no monótona / rebote de interpolación | Parametrización monótona + verificación de signo de diferencia de primer orden + interpolación LINEAR |
| El sujeto sale del cuadro a mitad de camino | El sujeto asciende pero la cámara no lo sigue | Sincronizar los fotogramas clave de la cámara z y el punto de mirada z con un coeficiente de seguimiento de 0.8–0.95 |
| La silla y la mesa atraviesan a la persona | La persona y la silla despegan al mismo tiempo | La persona despega primero, la silla se retrasa 0.4–0.7 s, y primero se desplaza horizontalmente antes de ascender |
| El equipo y la mesa chocan | El equipo y la mesa despegan al mismo tiempo | El equipo asciende primero aproximadamente 1.3 m y se detiene, la mesa se retrasa 2–3 s |
| La habitación flota | El punto de mirada o la relación padre-hijo están mal escritos | Solo hacer desplazamiento z en el grupo del sujeto; las paredes, el suelo y las ventanas permanecen estáticos |
| El personaje en el video final gira y su rostro se deforma | No se bloqueó la orientación | En 【Referencia】, escribir fijo "de espaldas/de lado y de espaldas"; en las indicaciones negativas, agregar "girar", "voltear", "primer plano del rostro" |
| El video final parece un modelo gris 3D | El bloque se tomó como referencia visual | En 【Referencia】, aclarar "el bloque solo es referencia de movimiento"; fijar el estilo visual como fotografía realista |
| El modelo ignora por completo el video de referencia | La primera frase no enfatizó la reproducción | Escribir en la primera frase "reproducir estrictamente el movimiento de cámara y el orden de despegue del video de referencia", dividir el movimiento de cámara en segmentos de 2–3 s |
| Las coordenadas de las indicaciones no coinciden con la imagen | Se usaron coordenadas estimadas | Volver a la fase ⑤ y tomar valores del JSON medido, prohibido rellenar a mano |
9. Lista de Verificación para Entrega de Alta Calidad
- El usuario proporcionó una imagen de referencia o una descripción, y ya confirmó "la escena que entiendo"
- La primera versión del video en bloque se entregó realmente (no solo coordenadas)
- Las versiones iterativas tienen número y explicación del cambio; la versión final fue aprobada explícitamente por el usuario
- Las cuatro comprobaciones tienen
RESULT: PASS - En las indicaciones, la imagen de referencia se especifica como @imagen1, el video en bloque como referencia de movimiento
- La línea de tiempo se divide por segundos, cada segmento tiene "posición inicial de cámara → posición final + punto de mirada + elevación + radio"
- La sincronización por capas especifica quién vuela primero, quién después, la altura de ascenso y la altura final de cada capa
- La lógica de prevención de atravesamiento está escrita como oraciones causales
- Las indicaciones negativas cubren: orientación del personaje y rasgos faciales, adición/eliminación y orientación del equipo, atravesamiento y caída, deriva de la habitación, reversión de la cámara, cambios de estilo, subtítulos y marcas de agua
- Al entregar, se explica que "la previsualización solo valida el movimiento, la apariencia visual se basa en la imagen de referencia", y se proporcionan las especificaciones de carga
10. Referencia Rápida de Parámetros de Scripts
| Script | Parámetros clave | Descripción |
|---|---|---|
check_blender.py | --json | Detección de solo lectura; salida found/path/source/version |
build_scene_template.py | --orbit 1 --center cx cy --dur --fps --a0 --a1 --r0 --r1 --z0 --z1 --l0 --l1 --out --csv | Sin --orbit solo escena estática; con él, escribe fotograma a fotograma los fotogramas clave de cámara e ingravidez (LINEAR) |
validate_trajectory.py | --center --ceiling --keys --moving --margin --tol | Código de salida 0=PASS 1=FAIL; cuatro comprobaciones |
export_cam_data.py | --out --center --keys | Salida [{f,cam,rad,ang,pitch,objeto:[x,y,z]}] |
render_previs.py | --out --res --samples --fps --start --end --engine | Primero 16 fotogramas de prueba, luego el video completo |
install_blender.ps1 | -TargetDir -Version -Mirror auto|official|aliyun|tuna `-DryRun`` | Conmutación por error automática de espejo; crea directorio portable; escribe BLENDER_PATH |
Los parámetros siempre se pasan después de -- al script de Python.
11. Discurso de Presentación Externa (Para responder "¿Qué puede hacer esta habilidad?")
Dale una imagen de referencia, o una descripción, y construirá el movimiento de cámara en un bloque 3D y lo ejecutará para que lo veas; si algo no está bien, lo cambias, hasta que estés satisfecho, luego escribe las indicaciones, y el video en bloque y las indicaciones se entregan juntos a Seedance 2.5 para generar el video final. Detección de modelado, cuatro comprobaciones automáticas, previsualización en bloque y escritura de indicaciones mirando el movimiento de cámara, todo incluido. Ya sea un rodeo, un ascenso o ingravidez, la imagen es suave y no atraviesa objetos ni se deforma repentinamente. Con esta habilidad para tomas continuas, los movimientos largos de cámara son increíblemente estables — para hacer videos con IA, ¿todavía necesitas pasar mucho tiempo aprendiendo indicaciones místicas?
12. Estado de Autocomprobación de Esta Habilidad
| Elemento | Resultado |
|---|---|
| Detección de Blender | Aprobado (versión portátil 4.5.15 LTS, disco D) |
| Construcción de escena + trayectoria + animación de ingravidez | Aprobado (240 fotogramas @24fps, coordenadas CSV guardadas) |
| Cuatro comprobaciones | PASS: Salida de cuadro 0 (960 detecciones NDC), atravesamiento nuevo 0, techo 0, tres monotonías todas True |
| Exportación de datos fotograma a fotograma | Aprobado (JSON de 240 fotogramas) |
| Renderizado de previsualización | Aprobado (EEVEE_NEXT, mp4 de prueba de 16 fotogramas normal) |
| Script de instalación | Aprobado (prueba -DryRun: oficial 403 → espejo aliyun 4.5.16, aproximadamente 380 MB) |
Los parámetros predeterminados de la plantilla están en knowledge/kb-levitation-office.md, que se pueden usar directamente como punto de partida para nuevos proyectos.