Como posso criar uma função para processar cada milissegundo? - página 3

 
Dmitry Fedoseev:

24 quadros por segundo é suficiente se você não leu livros de TV quando era criança))))

Na verdade, os televisores CRT analógicos usavam varredura entrelaçada, mas somente porque naquela época não podiam fazer quadros completos em uma determinada largura de banda, eles colocavam linhas ímpares e pares primeiro e a cintilação não era visível devido à luz ultravioleta do tubo. Não só li livros, mas como estudante também fiz um bom trabalho de conserto de televisores))

 
Alexey Volchanskiy:

Na verdade, os televisores CRT analógicos tinham entrelaçado a varredura, mas somente porque naqueles anos eles não conseguiam fazer quadros completos em uma determinada largura de banda, eles faziam linhas pares primeiro, depois estranhas, e devido à cintilação posterior do tubo não era visível. Eu não só lia livros, mas como estudante eu costumava fazer um pouco de hackwork quando consertava TVs).

Não sei quantos quadros deveriam existir. Eu não li nenhum desses livros. Mas o principal é que eu o fiz agora e funciona bem. É claro que ainda não descobri tudo, mas já tenho algo a que me agarrar.
 
Nikolay Demko:

A função ChartRedraw tem um custo de 40 milissegundos, portanto não faz sentido atualizar o temporizador após 16.

40 milissegundos correspondem a 25 quadros por segundo, o que é igual à velocidade da percepção humana.

Bem, não, Nikolai, é claro que é menos do que isso. Em meu computador é um pouco menos de 2 milissegundos com COLOR_FORMAT_ARGB_NORMALIZE , e menos de um milissegundo com COLOR_FORMAT_XRGB_NOALPHA

Como você pode ver no roteiro de amostra anexo(TestSpeedCanv.ex5), o atraso de 30 milissegundos (32 fps) é absolutamente suficiente para seus olhos. A propósito, todo o vídeo é filmado a esta velocidade. Uma taxa de quadros mais alta é usada quando a reprodução em câmera lenta é necessária.

Arquivos anexados:
 
Реter Konow:

A freqüência máxima da função do temporizador é de 15-16 mc.

Sim, é. (Somente não a freqüência, mas o período. Freqüência máxima = 64 Hz)

Apenas para acrescentar um esclarecimento:

A etapa do período para o temporizador = 15,625 milissegundos.

Isto é, com o comando EventSetMillisecondTimer(1) e com o comando EventSetMillisecondTimer(10) o período real será de 15.625 ms.

com o comando EventSetMillisecondTimer(21) e com o comando EventSetMillisecondTimer(30) o período real será de 31,25 ms.

Com o comando EventSetMillisecondTimer(95) e o comando EventSetMillisecondTimer(105), o período real será de 109,375 ms.

etc.

Arquivos anexados:
 
Alexey Volchanskiy:

Na verdade, os televisores CRT analógicos tinham entrelaçado a varredura, mas somente porque naqueles anos eles não conseguiam fazer quadros completos em uma determinada largura de banda, eles faziam linhas pares primeiro, depois estranhas, e devido à cintilação posterior do tubo não era visível. Eu não só lia livros, mas como estudante eu costumava fazer um pouco de hackwork quando consertava TVs ))

Sim, 625 linhas e tudo isso. Os primeiros jogos caseiros (não jogos de computador - montados em chips individuais) utilizavam geralmente 312 linhas. Jogado quando eu era criança: hóquei, tênis...
 
Alexey Volchanskiy:

Na verdade, os televisores CRT analógicos tinham entrelaçado a varredura, mas somente porque naqueles anos eles não conseguiam fazer quadros completos em uma determinada largura de banda, eles faziam linhas pares primeiro, depois estranhas, e devido à cintilação posterior do tubo não era visível. Eu não só lia livros, mas como estudante eu costumava fazer bons turnos no conserto de TV).

Então? Você não foi ensinado que em vídeo, 24 quadros por segundo é suficiente para um efeito de movimento natural uniforme? E o problema da cintilação é um problema de monitor (TV).

 
Dmitry Fedoseev:

Então? Não foi ali ensinado que em vídeo, 24 quadros por segundo é suficiente para proporcionar um efeito de movimento natural uniforme? E o problema da cintilação é um problema de monitor (TV).

agora até telefones têm vídeo a 50 fps)

disparar a mesma coisa, movimento rápido, a 24 fps e 50 fps e comparar

ps. e charlie chaplin shot 15 fps, o que é mais do que suficiente)

 
Alexey Volchanskiy:

Na verdade, os televisores CRT analógicos tinham entrelaçado a varredura, mas somente porque naqueles anos eles não conseguiam fazer quadros completos em uma determinada largura de banda, eles faziam linhas pares primeiro, depois estranhas, e devido à cintilação posterior do tubo não era visível. Eu não só lia livros, mas como estudante eu costumava fazer um pouco de hackwork quando consertava TVs).

Sim, mas esses meios-estruturas eram diferentes, não do mesmo quadro.
E por isso os movimentos foram mais suaves do que 25 fps no computador.

 
Taras Slobodyanik:

mesmo telefones agora têm vídeo a 50 fps)

disparar a mesma coisa, movimento rápido, a 24 fps e 50 fps e comparar.

ps. e charlie chaplin shot 15 fps - mais do que suficiente)

É incrível a profundidade do conhecimento! ...e a sutileza da percepção! Normalmente, todos vêem idiotas e movimentos não naturais nos filmes de Charlie Chaplin.

 
Nikolai Semko:

Sim, é. (Somente não a freqüência, mas o período. Freqüência máxima = 64 Hz)

Apenas para acrescentar um esclarecimento:

A etapa do período para o temporizador = 15,625 milissegundos.

Isto é, com o comando EventSetMillisecondTimer(1) e com o comando EventSetMillisecondTimer(10) o período real será de 15.625 ms.

com o comando EventSetMillisecondTimer(21) e com o comando EventSetMillisecondTimer(30) o período real será de 31,25 ms.

Com o comando EventSetMillisecondTimer(95) e o comando EventSetMillisecondTimer(105), o período real será de 109,375 ms.

etc.

Obrigado pela correção, Nikolai.

Não medi tais períodos exatos, mas notei que há saltos de alguns períodos. A freqüência não é a ideal. Especialmente na faixa de pequenos valores de período (16-25 ms). Assim, se eu o programar para 16 ms, a pausa será muitas vezes de 32 milissegundos.

Há um tipo de falha na freqüência dos períodos. É uma espécie de arritmia eletrônica.


Então, estou pensando, e se eu definir um período de 40 ms (que é suficiente para a percepção humana) e o cronômetro saltar alguns períodos? Então não receberíamos 24 quadros por segundo, mas 18-24. Dependendo de quantos períodos o temporizador irá pular. Penso que a melhor opção seria um período de tempo de 25ms. Que é o que eu mesmo estabeleci originalmente.

Razão: