¿Cómo puedo crear una función para procesar cada milisegundo? - página 3

 
Dmitry Fedoseev:

24 fotogramas por segundo es suficiente si no leíste libros de televisión cuando eras niño))

En realidad, los televisores CRT analógicos utilizaban el barrido entrelazado, pero sólo porque en aquella época no podían hacer fotogramas completos en un ancho de banda determinado, sacaban primero las líneas pares e impares y el parpadeo no era visible debido al resplandor del tubo. No sólo leía libros, sino que, como estudiante, solía hacer bastantes chapuzas al reparar televisores).

 
Alexey Volchanskiy:

En realidad, los televisores CRT analógicos tenían escaneo entrelazado, pero sólo porque en aquellos años no podían hacer cuadros completos en un ancho de banda determinado, primero hacían las líneas pares y luego las impares, y debido al resplandor posterior del tubo el parpadeo no era visible. No sólo leí libros, sino que como estudiante también hice bastantes chapuzas reparando televisores ))

No sé cuántos cuadros debería haber. No he leído ningún libro de este tipo. Pero lo principal es que ya lo he hecho y funciona bien. Por supuesto, aún no lo tengo todo resuelto, pero ya tengo algo a lo que agarrarme.
 
Nikolay Demko:

La función ChartRedraw tiene un coste de 40 milisegundos, por lo que no tiene sentido actualizar el temporizador después de 16.

40 milisegundos corresponden a 25 fotogramas por segundo, lo que equivale a la velocidad de percepción humana.

Pues no, Nikolai, claro que es menos que eso. En mi ordenador es un poco menos de 2 milisegundos con COLOR_FORMAT_ARGB_NORMALIZE , y menos de un milisegundo con COLOR_FORMAT_XRGB_NOALPHA

Como puedes ver en el script de ejemplo adjunto(TestSpeedCanv.ex5) el retraso de fotogramas de 30 milisegundos (32 fps) es absolutamente suficiente para tus ojos. Por cierto, todos los vídeos se graban a esta velocidad. Se utiliza una velocidad de fotogramas más alta cuando se requiere una reproducción a cámara lenta.

Archivos adjuntos:
 
Реter Konow:

La frecuencia máxima de la función de temporizador es de 15-16 mc.

Sí, lo es. (Sólo que no la frecuencia, sino el periodo. Frecuencia máxima = 64 Hz)

Sólo para añadir una aclaración:

El paso de periodo para el temporizador = 15,625 milisegundos.

Es decir, con el comando EventSetMillisecondTimer(1) y con el comando EventSetMillisecondTimer(10) el periodo real será de 15,625 ms.

con el comando EventSetMillisecondTimer(21) y con el comando EventSetMillisecondTimer(30) el periodo real será de 31,25 ms.

Con el comando EventSetMillisecondTimer(95) y el comando EventSetMillisecondTimer(105), el periodo real será de 109,375 ms.

etc.

Archivos adjuntos:
 
Alexey Volchanskiy:

En realidad, los televisores CRT analógicos tenían escaneo entrelazado, pero sólo porque en aquellos años no podían hacer cuadros completos en un ancho de banda determinado, primero hacían las líneas pares y luego las impares, y debido al resplandor posterior del tubo el parpadeo no era visible. No sólo leía libros, sino que cuando era estudiante hacía bastantes chapuzas al reparar televisores ))

Sí, 625 líneas y todo eso. Los primeros juegos caseros (no los de ordenador, montados en fichas individuales) utilizaban normalmente 312 líneas. Jugaba cuando era niño: hockey, tenis...
 
Alexey Volchanskiy:

En realidad, los televisores CRT analógicos tenían escaneo entrelazado, pero sólo porque en aquellos años no podían hacer cuadros completos en un ancho de banda determinado, primero hacían las líneas pares y luego las impares, y debido al resplandor posterior del tubo el parpadeo no era visible. No sólo leo libros, sino que cuando era estudiante solía hacer buenos turnos cuando reparaba televisores).

¿Y qué? ¿No te han enseñado que, en vídeo, basta con 24 fotogramas por segundo para conseguir un efecto de movimiento natural y uniforme? Y el problema del parpadeo es un problema del monitor (TV).

 
Dmitry Fedoseev:

¿Y qué? ¿No te han enseñado que, en vídeo, 24 fotogramas por segundo son suficientes para proporcionar un efecto de movimiento natural y uniforme? Y el problema del parpadeo es un problema del monitor (TV).

ahora incluso los teléfonos tienen vídeo a 50 fps)

filmar lo mismo, movimiento rápido, a 24 fps y 50 fps y comparar

ps. y charlie chaplin disparó 15 fps que es más que suficiente)

 
Alexey Volchanskiy:

En realidad, los televisores CRT analógicos tenían escaneo entrelazado, pero sólo porque en aquellos años no podían hacer cuadros completos en un ancho de banda determinado, primero hacían las líneas pares y luego las impares, y debido al resplandor posterior del tubo el parpadeo no era visible. No sólo leía libros, sino que, como estudiante, solía hacer bastantes chapuzas cuando reparaba televisores ))

Sí, pero esos medios cuadros eran diferentes, no del mismo cuadro.
Y por eso los movimientos eran más suaves que a 25 fps en el ordenador.

 
Taras Slobodyanik:

incluso los teléfonos tienen ahora vídeo a 50 fps)

dispara lo mismo, movimiento rápido, a 24 fps y 50 fps y compara.

ps. y charlie chaplin disparó 15 fps - más que suficiente)

Es increíble la profundidad del conocimiento! ...y la sutileza de la percepción! Normalmente todo el mundo ve tirones y movimientos poco naturales en las películas de Charlie Chaplin.

 
Nikolai Semko:

Sí, lo es. (Sólo que no la frecuencia, sino el periodo. Frecuencia máxima = 64 Hz)

Sólo para añadir una aclaración:

El paso de periodo para el temporizador = 15,625 milisegundos.

Es decir, con el comando EventSetMillisecondTimer(1) y con el comando EventSetMillisecondTimer(10) el periodo real será de 15,625 ms.

con el comando EventSetMillisecondTimer(21) y con el comando EventSetMillisecondTimer(30) el periodo real será de 31,25 ms.

Con el comando EventSetMillisecondTimer(95) y el comando EventSetMillisecondTimer(105), el periodo real será de 109,375 ms.

etc.

Gracias por la corrección, Nikolai.

No he medido esos periodos exactos, pero me he dado cuenta de que hay saltos de algunos periodos. La frecuencia no es la ideal. Especialmente en el rango de valores de periodo pequeños (16-25 ms). Así, si lo pongo a 16 ms, la pausa será a menudo de 32 milisegundos.

Hay una especie de fallo en la frecuencia de los períodos. Es una especie de arritmia electrónica.


Entonces, estoy pensando, ¿qué pasa si establezco un período de 40 ms (que es suficiente para la percepción humana) y el temporizador se salta algunos períodos? Entonces no tendríamos 24 fotogramas por segundo, sino 18-24. Dependiendo de cuántos periodos se salte el temporizador. Creo que la mejor opción sería un periodo de temporización de 25ms. Que es lo que me propuse en un principio.