PUBLICIDAD

Welcome to videoedicion.org (v8.3). Please login or sign up.

16 de Junio de 2024, 18:59:49

Login with username, password and session length

Temas Recientes

704 Visitantes, 0 Usuarios

Compra y colabora

Si usas estos banners para hacer tus compras, recibiremos una pequeña comisión. ¡Gracias por colaborar!


 




Código VID15 para
un 15% en planes anuales


Expresiones para telemetría en video

Iniciado por chaostheory, 03 de Abril de 2009, 13:22:46

Tema anterior - Siguiente tema

chaostheory

Hola.
He estado googleando y toqueteando en el programa pero no he encontrado la solución a mi problemilla.
El caso es que deseo incorporar en un vídeo grabado a bordo de un vehículo, un pequeño marcador con varios datos de telemetría en tiempo real tomados simultáneamente (velocidad, fuerzas g, posición del acelerador...) Algo parecido a esto



http://www.youtube.com/v/rz9kSa


Los datos en sí, el programa de telemetría, me permite exprtarlos a .txt o a excel (.xls) en una tabla tiempo-valor.
El motivo del hilo es para ver si alguien consigue darme la pista para lograr tener en cierta variable (utilizando expresiones) el valor correspondiente a la velocidad, etc,  en función del tiempo de video, es decir, que el valor de la variable "veloc", por ejemplo, sea el dato de la velocidad instantánea en el momento de video dado por la tabla excel.
A partir de ahí, ya sería apañármelas para diseñar el propio display superpuesto al vídeo.

He probado con varias expresiones a partir de la lista de valores de velocidad "importadas" a after effects a pelo, es decir, copiándolas todas en una capa de texto, lo que se traduce en una lista de números interminable escrita en dicha capa, pero no logro tener unicamente el valor que corresponde al instante de vídeo que se está reproduciendo.

A ver si alguien que domine las expresiones puede echarme una mano o proponerme otro medio con el que pueda conseguir algo parecido.

No sé si me he hecho entender bien...
Muchas gracias por la ayuda, un saludo.

firecardenal

Uffff.   Cosa no  muy  fácil,   me  parece   que  requieres  mas  que  de  expresiones,   un  script   ya  con  elementos  de  programación.


Bueno  en  realidad  necesitaría  tener  el  trabajo  frente  a  mi  para  poder  asegurarte  tal  cosa,  pero  por  lo  que  platicas  así  me  suena....

chaostheory

Muchas gracias Firecardenal. Menuda rapidez.

Bueno, ya me temía que no fuese tan sencillo.
Te cuento. La idea me la dió el tutorial de videocopilot de "futuristic HUD"
http://www.videocopilot.net/tutorials/futuristic_hud/
No se  si lo habrás visto, pero con él me di cuenta de la sencillez que tiene desde hacer agujas de marcadores analógicos (partiendo de que ya tienes, por supuesto, el valor que deseas) hasta, partiendo de esa base, representar gráficos más complejos como el medidor de G's en 2D.

Claro, para lo que yo pretendo no puedo basarme en valores aleatorios, como en el video, sino que necesito que se ajusten según sea el código de tiempo de cada fotograma, a ciertas cifras de las que dispongo en una tabla excel, o en su defecto, en una capa de texto en el programa con el siguiente formato:

0.053461
0.054100
0.054739
0.055775
0.056810
0.057294
0.057778
0.057260

(la toma de datos se realiza a 100Hz, en este caso sería la aceleración lateral en un periodo de 8 centésimas de segundo. Puedes imaginarte la monstruosidad de datos por cada vuelta, aunque la frecuencia podría ajustarla, por ejemplo, a 25fps)

Pues nada, seguiré investigando e intentándolo.
Si doy con algo, aviso.
Muchas gracias.

firecardenal

Bueno    una  página  sumamente  completa  e  interesante  y  muy   visitada  por  Andrew  Kramer,   es la  siguiente. 

http://www.motionscript.com/


Seguramente  sabes  de  ella.  Pero  si  no es  así,   seguramente  te  servirá.  Y   si  tienes  conocimientos  de   algo  de  programación  en  C  o  java,   te  será   mucho  muy  fácil.


Un  saludo  y  hasta  prónto....

chaostheory

Muchas gracias, precisamente había topado con esa página cuando buscaba.
Voy a mirarla bien, y si me pongo y consigo algo (tengo conocimientos muy básicos de C) lo compartiré, que creo que puede ser útil para bastantes cosas.

Te agradezco mucho la ayuda, y tus tutoriales también me están dando ideas. Son muy instructivos.

Un saludo.

PUBLICIDAD


chaostheory

Hola de nuevo.
Bueno, he estado pensando bastante y al final creo que he encontrado el principio del camino que me puede llevar a buen puerto.
Resulta que la solución va a ser mucho más simple de lo que me imaginaba.
De momento he encontrado una sencillísima y relativamente rápida forma para reproducir en pantalla los números correspondientes a los distintos canales de datos en cada instante de tiempo; y también para mover con respecto a un eje, por ejemplo, un elemento de la composición.

Paso a explicarlo:

Para conseguir tener los datos en el programa (una muestra por cada centésima de segundo en los sensores de 100Hz) lo que hago es copiarlos desde la hoja de cálculo (habiéndolos redondeado o quitado los decimales oportunos previamente) directamente a un array de mi expresión en After Effects.
Es decir, creo el array de esta manera:

s=[5,
4,
3,
2,
3,
2,
3,
<etc>];


Cada elemento de ese array tiene un índice, siendo en este caso el 5-índice 0; el 4-índice 1; y así sucesivamente.
Pues bien, no nos queda más que decirle que nos escriba el texto de cada elemento del array en función del tiempo. En realidad en un sensor de 100Hz sería 100 datos por segundo, pero en el ejemplo, para simplificar, dejo 1 por segundo:

txt= s[Math.round( time)]

El "Math.round(time)" lo que hace es redondear el time a números enteros, para que coincidan con los índices de los elementos del array.

Para la otra situación, en la que lo que queremos es que un elemento se nos desplace con respecto a un eje de cordenadas (en este caso x, aunque también es aplicable a una rotación de aguja para un marcador analógico, etc) lo que necesitamos es, además del array de la misma manera que antes, una función parecida a esta:

y=value[1];
x=10*s[Math.round( time)];
[x, y]


El "y=value[1];" nos permite colocar nuestro elemento donde queramos con respecto a "y", y con "x=10*s[Math.round( time)]" colocamos al elemento con respecto a x en una posición que va en función del momento y del elemento del array con índice=time.

El siguiente paso, con el que estoy ahora metido, es diseñar un pequeño panel para mostrar gráficamente el tacómetro (con una aguja) y el "g-meter" (con una bola que se mueva con respecto a dos ejes de aceleración).
Muchas gracias por la ayuda.

firecardenal

Interesantísimo,  no  dejes   porfavor  de  mantenernos  al   tanto  y  gracias   por  compartir.


Esto  es   muy  educacional....

PUBLICIDAD

El spam de este foro está controlado por CleanTalk