Licencia
Creative Commons




El Blog de Joaclint Istgud Icarus y Blender: Tracking de una foto fija




El siguiente es un videotutorial de Blender y Diseño (Pablo Lizardo) para la integración de objetos 3D en una foto estática usando los nodos:

VER VIDEOTUTORIAL


Es muy interesante el método que plantéa para calcular la posición de la línea de horizonte usando un plano y un cubo emparentados.

Sin embargo, lo que vamos a proponer en este tutorial es hacer un tracking desde Icarus para garantizar la precisión en los parámetros de la cámara: orientación y distancia focal de la lente.

Se requiere (los dos primeros enlaces llevan a la página de Peerless Productions, un lugar donde se pueden encontrar unos interesantísimos videotutoriales para comenzar a trabajar el tracking con Icarus, además de buenos ejemplos de resultados)



Esta es la imagen que vamos a usar en el tutorial:
Ejecutamos el módulo de calibración de Icarus (Calibration), creamos un nuevo proyecto (Proyect/New) y cargamos la imagen (Proyect/Import Image) inmediatamente se carga la foto y se despliega un cuadro de diálogo llamado Camera Parameters (al que podremos acceder en cualquier momento desde Camera/Camera/Parameters)
De este cuadro nos interesan especielmente dos parámetros:

  • Aperture Height (mm): 35mm SLR
  • Pixel Aspect: Square
En la ventana de la carpeta Proyect desplegamos las subcarpetas de Coordinate Frame:

De los tres ejes sólo es necesario que definamos dos debido a que al tratarse de un sistema de ejes ortogonales (perpendiculares) el tercero lo calculará Icarus sin menor problema. Para concretar la direccionalidad de las líneas de fuga (y con ello Icarus también hallará los puntos de fuga correspondientes) tenemos que trazar al menos dos de estas líneas. Para ello:

  1. Nos aseguramos de tener seleccionado el modo de edición Feature con el icono correspondiente:
  2. Seleccionamos Coordinate Frame/Y Axis (el eje Y es para la altura):
  3. Trazamos con el ratón sobre la imagen dos líneas que definan esa direccionalidad del eje en cuestión (clic sin soltar, arrastrar y soltar el clic) Para mayor precisión, una vez creadas, si se hace clic sobre uno de los puntos finales se crea una pequeña zona de zoom para reposicionar el punto (si creamos una línea o punto que queramos eliminar debemos hacer clic sobre él con el botón derecho del ratón y confirmar Delete)
  4. Repetimos la operación con el eje X (no ocupamos la esquina de abajo de la mesa para que luego podamos situar ahí el origen con comodidad):

Ahora seleccionamos Coordinate Frame/Origin Point y hacemos clic en la esquina inferior de la mesa (hacer un buen zoom para precisar al máximo):


Tenemos todo lo necesario para que Icarus pueda calibrar y crear los parámetros de la cámara con Camera/Calibrate. Esto nos pedirá una confirmación con el siguiente cuadro:

En el ejemplo hace una estimación de distancia focal 40.2 mm. Como la damos por buena aceptamos y Icarus crea la rejilla que representa el plano horizontal que pasa por el origen respetando las direccionalidades definidas:

Esto recuerda enormemente a la rejilla que aparece en Blender. Ya está la calibración hecha y visualmente podemos decir que parece más que correcta (la rejilla respeta a la perfección los paralelismos de la mesa. Es el momento de guardarla para poder abrirla en Blender.
Con Proyect/Export 3D Motion le damos un nombre y una extensión Human Readable .txt
Hemos concluido nuestro trabajo en Icarus aunque es posible que queramos guardar el proyecto para futuras pruebas. En ese caso lo guardaríamos como siempre con  Proyect/Save y la extensión sería .ipc
Aunque el último script para la importación lleva el sufijo 241 yo lo he probado en Blender 2.48 y funciona correctamente. Por lo tanto ejecutamos Blender y dividimos la ventana principal para poder tener a mano el editor de texto (Text Editor). En ese editor de texto cargamos el script ICARUS_import241.py y lo ejecutamos con ALT P. Después usamos el botón FSEL para ir a buscar el documento txt creado en Icarus:

Cuando pulsemos Create Curves se cambiarán los parámetros de la cámara de la escena por los del tracking  (no tiene sentido pulsar Feature Points Mesh porque no hay tales puntos al no ser una secuencia de vídeo) Cuando pulsemos NUMPAD 0 para ver la escena desde la cámara veremos el parecido con el punto de vista que tenía la foto.
Desde View/Background Image vamos a por la foto de nuestra práctica:

Y para verla en el render la cargamos en el backbuffer en los paneles de F10 (hay que asegurarse de activar el pequeño cuadradito del final):
Del cubo inicial sólo nos interesa un plano horizontal, así que eliminamos el resto y después desplazamos las lados asegurándonos de hacer las restricciones a los ejes adecuados para que el plano no deje de ser nunca horizontal (además ahora puede apreciarse como el centro del objeto coincide con el elegido en Icarus)


En la segunda imagen se ha cambiado el centro del objeto con Center New.

Colocamos para hacer una prueba unos objetos sobre el plano y ese plano le aplicamos un material con OnlyShadow activado para que sólo renderice las sombras:

En el render siguiente se ha aplicado una oclusión ambiental para conseguir una ambientación general sin tener que profundizar mucho en iluminaciones:

Otro ejemplo en el que el tracking fue algo más costoso porque aparecen líneas de fuga demasiado paralelas (en esos casos el margen de error aumenta porque a Icarus le resulta más difícil concretar los puntos de fuga). Tuve que hacer varios intentos hasta darlo por bueno. En este ejemplo la iluminación está casi sin estudiar:
Para conocer más tutoriales visite
El Blog de Joaclint Istgud



Y hasta aquí el tutorial. Si considera que está incompleto, que tiene errores o quiere aportar alguna mejora, deje su sugerencia aquí

Joaclint Istgud con