Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - chaostheory

#1
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.
#2
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.
#3
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.
#4
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.
#5
Hola.
Subo el tema porque he dado con la solución.
Espero que sirva de ayuda a alguien, y que no haya problema porque escriba como saltarse esa limitación (si es así borro el mensaje). En realidad no se trata más que de un truquillo simple.

Basta con cambiar la extensión de tu archivo .mp3 por .wma e importarlo.
Sin necesidad de volver a cambiarla una vez importado, se reproducirá perfectamente en la previsualización.
No he probado aún a renderizar, pero estoy casi seguro de que funcionará perfectamente.
Un saludo
El spam de este foro está controlado por CleanTalk