Her milisaniyeyi işlemek için bir işlev nasıl oluşturulur? - sayfa 3

 
Dmitry Fedoseev :

Çocuklukta TV hakkında kitap okumadıysanız saniyede 24 kare yeterlidir)))

Aslında, analog CRT TV'ler taramalı taramaya sahipti, ancak yalnızca o yıllarda belirli bir bant genişliğinde tam kareleri sürdüremedikleri için önce çift satırlar, sonra tek satırlar verdiler ve tüpün art ışıması nedeniyle titreme yoktu. görünür. Sadece kitap okumakla kalmadım, aynı zamanda bir öğrenci olarak TV setlerini tamir etmede de iyi bir iş çıkardım))

 
Alexey Volchanskiy :

Aslında, analog CRT TV'ler taramalı taramaya sahipti, ancak yalnızca o yıllarda belirli bir bant genişliğinde tam kareleri sürdüremedikleri için önce çift satırlar, sonra tek satırlar verdiler ve tüpün art ışıması nedeniyle titreme yoktu. görünür. Sadece kitap okumakla kalmadım, aynı zamanda bir öğrenci olarak TV setlerini tamir etmede de iyi bir iş çıkardım))

Kaç kare olması gerektiğini bilmiyorum. Ben böyle kitaplar okumadım. Ama asıl şey - şimdi yaptım, her şey yolunda gidiyor. Tabii ki, henüz tam olarak çözemedim, ama şimdiden tutunacak bir şeyim var.
 
Nikolay Demko :

ChartRedraw işlevinin (grafik yeniden çizme) maliyeti 40 milisaniyedir, bu nedenle zamanlayıcıyı 16 milisaniyeden sonra güncellemenin bir anlamı yoktur.

40 milisaniye, insan algılama hızına eşit olan saniyede 25 kareye karşılık gelir.

Hayır, Nikolai, elbette, daha az. Bilgisayarımda COLOR_FORMAT_ARGB_NORMALIZE ile 2 milisaniyenin hemen altında ve COLOR_FORMAT_XRGB_NOALPHA ile bir milisaniyeden az

Ekteki örnek betikten de görebileceğiniz gibi ( TestSpeedCanv.ex5 ) 30 milisaniyelik (32 kare/saniye) bir kare gecikmesi gözler için kesinlikle yeterlidir. Bu arada tüm videolar bu frekansta çekilmektedir. Ağır çekimde oynatmaya ihtiyacınız olduğunda daha sık kalkış yapın.

Dosyalar:
 
Реter Konow :

Zamanlayıcı fonksiyonunun maksimum frekansı 15-16 mc'dir.

Evet bu doğru. (sadece frekans değil, periyot. Maksimum frekans = 64 Hz)

Sadece bir açıklama ekleyeceğim:

zamanlayıcı periyodu adımı = 15.625 milisaniye.

Onlar. EventSetMillisecondTimer(1) komutu ve EventSetMillisecondTimer(10) komutu ile gerçek süre 15.625 ms olacaktır.

EventSetMillisecondTimer(21) komutu ve EventSetMillisecondTimer(30) komutu ile fiili süre 31,25 ms olacaktır.

EventSetMillisecondTimer(95) komutu ve EventSetMillisecondTimer(105) komutu ile gerçek süre 109.375 ms olacaktır.

vb.

Dosyalar:
 
Alexey Volchanskiy :

Aslında, analog CRT TV'ler taramalı taramaya sahipti, ancak yalnızca o yıllarda belirli bir bant genişliğinde tam kareleri sürdüremedikleri için önce çift satırlar, sonra tek satırlar verdiler ve tüpün art ışıması nedeniyle titreme yoktu. görünür. Sadece kitap okumakla kalmadım, aynı zamanda TV tamirinde öğrenci olarak iyi bir iş çıkardım))

Evet, 625 satır ve hepsi bu. İlk ev yapımı oyunlarda (bilgisayar değil - ayrı mikro devrelere monte edilmiş), genellikle 312 satır kullanıldı. Çocukken oynadı: hokey, tenis ...
 
Alexey Volchanskiy :

Aslında, analog CRT TV'ler taramalı taramaya sahipti, ancak yalnızca o yıllarda belirli bir bant genişliğinde tam kareleri sürdüremedikleri için önce çift satırlar, sonra tek satırlar verdiler ve tüpün art ışıması nedeniyle titreme yoktu. görünür. Sadece kitap okumakla kalmadım, aynı zamanda bir öğrenci olarak TV setlerini tamir etmede de iyi bir iş çıkardım))

Ne olmuş? Videoda saniyede 24 karenin doğal tekdüze hareketin etkisini sağlamak için yeterli olduğunu öğretmediler mi? Ve titreme sorunu bir monitör (TV) sorunudur.

 
Dmitry Fedoseev :

Ne olmuş? Videoda saniyede 24 karenin doğal tekdüze hareketin etkisini sağlamak için yeterli olduğunu öğretmediler mi? Ve titreme sorunu bir monitör (TV) sorunudur.

artık telefonlarda bile 50 fps video var)

24 fps ve 50 fps'de aynı hızlı hareketi çekin ve karşılaştırın

not. ve Charlie Chaplin 15 fps vurdu - fazlasıyla yeterli)

 
Alexey Volchanskiy :

Aslında, analog CRT TV'ler taramalı taramaya sahipti, ancak yalnızca o yıllarda belirli bir bant genişliğinde tam kareleri sürdüremedikleri için önce çift satırlar, sonra tek satırlar verdiler ve tüpün art ışıması nedeniyle titreme yoktu. görünür. Sadece kitap okumakla kalmadım, aynı zamanda bir öğrenci olarak TV setlerini tamir etmede de iyi bir iş çıkardım))

evet ama bu yarım kareler farklıydı ve aynı kareden değil.
Ve bu sayede bilgisayarda hareketler 25 fps'den daha akıcıydı.

 
Taras Slobodyanik :

artık telefonlarda bile 50 fps video var)

24 fps ve 50 fps'de aynı hızlı hareketi çekin ve karşılaştırın

not. ve Charlie Chaplin 15 fps vurdu - fazlasıyla yeterli)

İnanılmaz bilgi derinliği! ...ve algının inceliği! Charlie Chaplin'in filmlerinde genellikle herkes gerizekalı ve doğal olmayan hareketler görür.

 
Nikolai Semko :

Evet bu doğru. (sadece frekans değil, periyot. Maksimum frekans = 64 Hz)

Sadece bir açıklama ekleyeceğim:

zamanlayıcı periyodu adımı = 15.625 milisaniye.

Onlar. EventSetMillisecondTimer(1) komutu ve EventSetMillisecondTimer(10) komutu ile gerçek süre 15.625 ms olacaktır.

EventSetMillisecondTimer(21) komutu ve EventSetMillisecondTimer(30) komutu ile fiili süre 31,25 ms olacaktır.

EventSetMillisecondTimer(95) komutu ve EventSetMillisecondTimer(105) komutu ile gerçek süre 109.375 ms olacaktır.

vb.

Düzeltme için teşekkürler, Nicholas.

Dönemlerin ölçümlerini bu kadar doğru yapmadım ama bazı dönemlerin eksikleri olduğunu fark ettim. Frekans ideal değil. Özellikle küçük dönem değerleri (16-25 ms) aralığında. Yani, 16 ms ayarlarsanız, genellikle duraklama 32 milisaniye olacaktır.

Dönemlerin sıklığında başarısızlık gibi bir şey var. Bir tür elektronik aritmi.


Bu nedenle, periyodu 40 ms'ye ayarlarsanız (ki bu insan algısı için yeterlidir) ve zamanlayıcı bazı periyotları atlar mı? O zaman saniyede 24 kare değil, 18-24 kare alacağız. Zamanlayıcının kaç periyot atlayacağına bağlı olarak. Bence en iyi seçenek 25 ms'lik bir zamanlayıcı periyodu olacaktır. Orijinal olarak yüklediğim şey bu.