Wie kann ich eine Funktion erstellen, die jede Millisekunde verarbeitet? - Seite 3

 
Dmitry Fedoseev:

24 Bilder pro Sekunde reichen aus, wenn Sie als Kind keine Fernsehbücher gelesen haben)))

Analoge CRT-Fernsehgeräte verfügten zwar über ein Zeilensprungverfahren, aber nur, weil sie damals keine Vollbilder in einer bestimmten Bandbreite erzeugen konnten, sondern zuerst die ungeraden und geraden Zeilen ausgaben und ein Flimmern aufgrund des Nachleuchtens der Röhren nicht sichtbar war. Ich habe nicht nur Bücher gelesen, sondern als Student auch viel gebastelt, um Fernseher zu reparieren ))

 
Alexey Volchanskiy:

Analoge CRT-Fernsehgeräte verfügten zwar über Zeilensprungverfahren, aber nur, weil sie in jenen Jahren keine Vollbilder in einer bestimmten Bandbreite erzeugen konnten, sondern erst gerade, dann ungerade Zeilen, und weil das Nachleuchten der Röhren ein Flimmern verhinderte. Ich habe nicht nur Bücher gelesen, sondern als Student bei der Reparatur von Fernsehern auch viel gebastelt.)

Ich weiß nicht, wie viele Frames es sein sollten. Ich habe keine derartigen Bücher gelesen. Aber die Hauptsache ist, dass ich es jetzt getan habe und es funktioniert gut. Natürlich habe ich noch nicht alles verstanden, aber ich habe schon etwas, woran ich mich festhalten kann.
 
Nikolay Demko:

Die Funktion ChartRedraw kostet 40 Millisekunden, so dass es keinen Sinn macht, den Timer nach 16 zu aktualisieren.

40 Millisekunden entsprechen 25 Bildern pro Sekunde, was der menschlichen Wahrnehmungsgeschwindigkeit entspricht.

Nein, Nikolai, natürlich ist es weniger als das. Auf meinem Computer sind es etwas weniger als 2 Millisekunden mit COLOR_FORMAT_ARGB_NORMALIZE , und weniger als eine Millisekunde mit COLOR_FORMAT_XRGB_NOALPHA

Wie Sie aus dem beigefügten Beispielskript(TestSpeedCanv.ex5) ersehen können, ist die Bildverzögerung von 30 Millisekunden (32 fps) absolut ausreichend für Ihre Augen. Übrigens, alle Videos werden mit dieser Geschwindigkeit aufgenommen. Eine höhere Bildrate wird verwendet, wenn eine Zeitlupenwiedergabe erforderlich ist.

Dateien:
 
Реter Konow:

Die maximale Frequenz der Timerfunktion beträgt 15-16 mc.

Ja, das ist sie. (Nur nicht die Frequenz, sondern die Periode. Maximale Frequenz = 64 Hz)

Nur um eine Klarstellung hinzuzufügen:

Der Periodenschritt für den Timer = 15,625 Millisekunden.

D.h. mit dem Befehl EventSetMillisecondTimer(1) und mit dem Befehl EventSetMillisecondTimer(10) beträgt die tatsächliche Zeit 15,625 ms.

mit dem Befehl EventSetMillisecondTimer(21) und mit dem Befehl EventSetMillisecondTimer(30) beträgt der tatsächliche Zeitraum 31,25 ms.

Mit dem Befehl EventSetMillisecondTimer(95) und dem Befehl EventSetMillisecondTimer(105) beträgt die tatsächliche Zeit 109,375 ms.

usw.

Dateien:
 
Alexey Volchanskiy:

Analoge CRT-Fernsehgeräte verfügten zwar über Zeilensprungverfahren, aber nur, weil sie in jenen Jahren keine Vollbilder in einer bestimmten Bandbreite erzeugen konnten, sondern erst gerade, dann ungerade Zeilen, und weil das Nachleuchten der Röhren ein Flimmern verhinderte. Ich habe nicht nur Bücher gelesen, sondern als Student auch einige schlampige Reparaturen an Fernsehern durchgeführt ))

Ja, 625 Zeilen und so weiter. Die ersten selbstgemachten Spiele (keine Computerspiele - auf einzelnen Chips zusammengesetzt) verwendeten in der Regel 312 Zeilen. Ich habe als Kind gespielt: Hockey, Tennis...
 
Alexey Volchanskiy:

Analoge CRT-Fernsehgeräte verfügten zwar über Zeilensprungverfahren, aber nur, weil sie in jenen Jahren keine Vollbilder in einer bestimmten Bandbreite erzeugen konnten, sondern erst gerade, dann ungerade Zeilen, und weil das Nachleuchten der Röhren ein Flimmern verhinderte. Ich lese nicht nur Bücher, sondern habe als Student auch ziemlich gute Schichten bei der Reparatur von Fernsehern gemacht).

Und? Hat man Ihnen nicht beigebracht, dass bei Videos 24 Bilder pro Sekunde für einen natürlichen , gleichmäßigen Bewegungseffekt ausreichen? Und das Flimmern ist ein Problem des Monitors (Fernsehers).

 
Dmitry Fedoseev:

Und? Wurde Ihnen dort nicht beigebracht, dass bei Videos 24 Bilder pro Sekunde ausreichen, um einen natürlichen, gleichmäßigen Bewegungseffekt zu erzielen? Und das Flimmern ist ein Problem des Monitors (Fernsehers).

jetzt können sogar Handys Videos mit 50 fps aufnehmen)

die gleiche Sache, schnelle Bewegung, mit 24 fps und 50 fps aufnehmen und vergleichen

ps. und charlie chaplin schoss 15 fps, was mehr als genug ist)

 
Alexey Volchanskiy:

Analoge CRT-Fernsehgeräte verfügten zwar über Zeilensprungverfahren, aber nur, weil sie in jenen Jahren keine Vollbilder in einer bestimmten Bandbreite erzeugen konnten, sondern erst gerade, dann ungerade Zeilen, und weil das Nachleuchten der Röhren ein Flimmern verhinderte. Ich habe nicht nur Bücher gelesen, sondern als Student auch einige schlampige Reparaturen an Fernsehern durchgeführt ))

Ja, aber diese Halbbilder waren unterschiedlich und stammten nicht aus demselben Rahmen.
Dadurch waren die Bewegungen flüssiger als mit 25 fps auf dem Computer.

 
Taras Slobodyanik:

sogar Handys haben jetzt Video mit 50 fps)

Machen Sie dieselbe Aufnahme, schnelle Bewegung, mit 24 fps und 50 fps und vergleichen Sie.

ps. und charlie chaplin schoss 15 fps - mehr als genug)

Es ist erstaunlich, wie tief das Wissen ist! ...und wie subtil die Wahrnehmung ist! Normalerweise sieht man in Charlie Chaplin-Filmen nur Rucke und unnatürliche Bewegungen.

 
Nikolai Semko:

Ja, das ist sie. (Nur nicht die Frequenz, sondern die Periode. Maximale Frequenz = 64 Hz)

Nur um eine Klarstellung hinzuzufügen:

Der Periodenschritt für den Timer = 15,625 Millisekunden.

D.h. beim Befehl EventSetMillisecondTimer(1) und beim Befehl EventSetMillisecondTimer(10) beträgt die tatsächliche Periode 15,625 ms.

mit dem Befehl EventSetMillisecondTimer(21) und mit dem Befehl EventSetMillisecondTimer(30) beträgt der tatsächliche Zeitraum 31,25 ms.

Mit dem Befehl EventSetMillisecondTimer(95) und dem Befehl EventSetMillisecondTimer(105) beträgt die tatsächliche Zeit 109,375 ms.

usw.

Danke für die Korrektur, Nikolai.

Ich habe die genauen Zeiträume nicht gemessen, aber ich habe festgestellt, dass einige Zeiträume ausgelassen werden. Die Frequenz ist nicht ideal. Insbesondere im Bereich der kleinen Periodenwerte (16-25 ms). Wenn ich also 16 ms einstelle, wird die Pause oft 32 Millisekunden betragen.

Bei der Häufigkeit der Perioden gibt es eine Art Ausfall. Es handelt sich um eine Art elektronische Arrhythmie.


Ich überlege also, was passiert, wenn ich eine Zeitspanne von 40 ms einstelle (was für die menschliche Wahrnehmung ausreichend ist) und der Timer einige Zeitspannen überspringt? Dann würden wir nicht 24 Bilder pro Sekunde bekommen, sondern 18-24. Je nachdem, wie viele Perioden der Timer überspringt. Ich denke, die beste Option wäre eine Zeitspanne von 25 ms. Das ist das, was ich mir ursprünglich vorgenommen habe.