Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wann zeichnet man nicht mehr in Echtzeit.
KainPlan
myCSharp.de - Member



Dabei seit:
Beiträge: 133
Herkunft: Gelsenkirchen

Themenstarter:

Wann zeichnet man nicht mehr in Echtzeit.

beantworten | zitieren | melden

hat da jemand nen kleinen denkanstoß für mich? lieg gerad irgentwie auf dem trockenen :/

man kann ja noch so performanten code haben wie man will iwann fängts immer an zu ruckeln ich bin z.Z. an einem Photoshop Brush Viewer (80% rdy :)) und wenn ich unter voller auflösung ca. 10x9 brushes darstelle (ist auch alles gecached und so keine frage) fängts halt an zu ruckeln beim scrollen. Nun möcht ich wissen ob sich darüber schonmal jemand gedanken gemacht hat wie man ermitteln kann wann man die echtzeit verlässt um so z.B. zu schnelles scrollen zu unterdrücken.

sagt man das so? echtzeit verlassen? hört sich jetzt iwie nach marty und dem doc an ;)
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2.105

beantworten | zitieren | melden

Was heißt Echtzeit verlassen? So wirklich in Echtzeit passiert ja nichts, weil alles Rechenleistung braucht. Das eine ist halt schnell genug, beim andren kann man zuschauen wie langsam es ist.
Und wenn es wirklich ums Scrollen geht, ich glaub da ists eher hinderlich wenn man nicht so schnell scrollen kann wie man will. Da würd ich lieber die Anzeige bremsen und sie erst dann gescheit darstellen, wenn nicht mehr gescrollt wird.
private Nachricht | Beiträge des Benutzers
talla
myCSharp.de - Experte

Avatar #avatar-3214.jpg


Dabei seit:
Beiträge: 6.862
Herkunft: Esslingen

beantworten | zitieren | melden

Hallo,

deine Frage ist gar nicht so trivial.

Erstmal hat das was du meinst nichts mit Echtzeit im technischen Sinne zu tun. Echtzeit hat immer etwas mit Zeitschranken zu tun die entweder eingehalten oder je nachdem ob weiche oder harte Echtzeit mit verschiedenen Konsequenzen verletzt werden. So eine Zeitschranke lässt sich für dein Problem aber nicht definieren.

Diese Schwelle ab wann Einzelbilder als flüssige Bewegung wahrgenommen werden, ist nämlich abhängig von Bildfrequenz und Bildwiederholfrequenz, wobei die nötige Bildfrequenz auch noch von Person zu Person unterschiedlich sein kann.

Es können 20 Bilder pro Sekunde für ne flüssige Bewegung reichen, Fussball oder Tennis mit den schnellen Bewegungnen würde aber selbst bei 30 Bildern pro Sekunde nicht gut aussehen. Bei schlechter Regiearbeit sieht man auch im Kino gerne mal "ruckelnde" Kameraschwenks.

Dann gibts auch noch Unterschiede bei der verwendeten Anzeigetechnologie. Röhrenmonitore sind da sogar im Vorteil gegenüber LCDs weil die einzelnen Bildpunkte nicht so lang leuchten.

Lange Rede, kurzer Sinn: Es gibt keine allgemeine Formel um zu beschrieben ab wann eine Darstellung nicht mehr als flüssig erscheint.

Aber man kann das ganze bissle vereinfachen. Im PC Bereich hat man es fast nur noch mit LCDs mit 60 Hz Bildwiederholfrequenz zu tun. Damit fällt eine Variable aus der ganzen Betrachtung raus. Wenn man die leichten persönlichen Unterschiede zwischen den Anwendern außer acht lässt wirds noch einfacher.
Wenn du mit einer festen Bildrate zeichnest, kannst du einfach mal probieren bis zu welcher Scrollgeschwindigkeit das ganze flüssig erscheint. Wenn jemand dann schneller scrollt weißt du, dass es wahrscheinlich nicht mehr flüssig ist. Versuchst du aber einfach so oft wie möglich zu zeichnen gibts keine Möglichkeit zu sagen ab wanns nicht mehr flüssig ist, vor allem da die Zeichengeschwindigkeit ja auch von der jeweiligen Hardware abhängig ist und damit wieder was sehr variables rein kommt.
Baka wa shinanakya naoranai.

Mein XING Profil.
private Nachricht | Beiträge des Benutzers
M.Holder
myCSharp.de - Member

Avatar #avatar-3057.png


Dabei seit:
Beiträge: 71
Herkunft: Höchberg

beantworten | zitieren | melden

Zu der Frage mit der Anzahl der Frames in der Sekunde:
Ich habe zum testen mal eine Anwendung geschrieben, auf der ich mehrere Elemente im Panel umherschieben kann.
Bei etwas schnelleren Bewegungen hat alles ziemlich leicht das ruckeln angefangen als ich mit 25fps Berechnet und Gezeichnet habe. Ich sage 30fps sind das Minimum das man verwenden sollte wenn man Sachen in einer Windows Anwendung flüssig darstellen will.
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2.105

beantworten | zitieren | melden

Nochmal zu dem was ich *eigentlich* sagen wollte und vielleicht etwas zu verwaschen ausgedrückt hab. Beim Scrollen oder allgemein wenn ich irgendwas auf dem Bildschirm bewegen will, kommt es mir (und vielen andren sicher auch) viel mehr darauf an dass ich schnell da bin wo ich hin will. Ob die Darstellung kinoreif ist oder nicht, ist in dem Moment egal.
Wenn Elemente sich perfekt bewegen und das dann dafür aber stinklangsam ist, das hält keiner aus. Nur so als Hinweis, um vielleicht eine andere Richtung der Gedanken vorzuschlagen.
private Nachricht | Beiträge des Benutzers
KainPlan
myCSharp.de - Member



Dabei seit:
Beiträge: 133
Herkunft: Gelsenkirchen

Themenstarter:

beantworten | zitieren | melden

Hm. Das man schnellst möglich ankommen möchte ist ein gutes argument. Picasa kann das aber auch ziemlich flott hängt aber auch bestimmt nicht an der GDI+ :/. Ist vllt auch etwas hoch gegriffen. Nur hätt ja sein könn das sich da jemand schonmal gedanken drüber gemacht hat wär ziemlich informativ. Werd dann wohl mal bissl Pionierarbeit leisten. Lass euch das aber wissen wenn ich was brauchbares erreiche ^^
private Nachricht | Beiträge des Benutzers
Siassei
myCSharp.de - Member



Dabei seit:
Beiträge: 401

beantworten | zitieren | melden

Hallo,

eine schöne Frage, die man wohl nie zu 100% korrekt beantworten kann :D

Aber was ist Echtzeit? Was zeichnet z.B. Echtzeit-Betriebssysteme aus? So könnte man sich der Frage nähern. In Echtzeit-Betriebssystemen wird z.B. gewährleistet, dass eine Aktion innerhalb einer Zeit t ausgeführt wird. Diese Zeit darf während des Betriebes nie überschritten werden.

Was bedeutet nun Echtzeit? Jetzt könnte man das im Brockhaus nachschlagen. Die Wiki-Artikel sind in diesem Fall auch nicht schlecht. Sie besitzen eine gute Definition und widersprechen sich weiter unten, bei den Beispielen.
Echtzeit:
Zitat
Mit anderen Worten: Ist die Dauer eines Vorgangs (auch eine Wartezeit) vorhersehbar, dann spricht man von Echtzeit. Beispiel: Sitzt man vor einer funktionierenden Uhr, so ist es vorhersehbar, wann diese das nächste Mal tickt oder wann die Glocken (so vorhanden) schlagen werden (also Echtzeit). Sitzt man hingegen vor einem beliebigen funktionierenden Telefonapparat, so kann man nicht absehen, wie lang man warten muss, bis dieser das nächste mal klingelt (Dauer nicht vorhersehbar).
Echtzeitsystem:
Zitat
Die Theorie des Echtzeitsystems (englisch real time system) definiert dieses als ein Computersystem, das ein Ergebnis innerhalb eines vorher fest definierten Zeitintervalles garantiert berechnet, also bevor eine bestimmte Zeitschranke erreicht ist. Die Größe des Zeitintervalles spielt dabei keine Rolle

Mit diesen Zitaten lässt sich die Frage nun etwas einfacher beantworten. Als erstes ist festzuhalten, dass die Wiederhollrate (FPS) keine Rolle spielt. Wird eine Animation mit 1 Frame per Day berechnet und ausgegeben, kann das auch in Echzeit erfolgen.
Das entscheidende Argument ist die Garantie, dass eine Ausführung innerhalb einer Zeit t erfolgt. Und da stellt sich die Frage "Ist das auf Windows oder Linux heutzutage überhaupt noch möglich?".

Gruß,
Thomas
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Siassei,
Zitat
Ist das auf Windows oder Linux heutzutage überhaupt noch möglich?
Windows ist definitiv kein Echtzeitsystem im Sinne der o.g. Definition.

Allerdings sind die Definitionen für den konkreten Fall ohnehin unpassend.

Es gibt ja z.B. auch den Begriff der des Echtzeit-Strategiespiels. In diesem Zusammenhang bedeutet Echtzeit, dass - im Gegensatz zu rundenbasierten Strategiespielen alle Spieler oder Computergegner ihre Handlungen gleichzeitig ausführen. Was Echtzeit bedeutet, hängt also immer vom Kontext ab. Man kommt also nicht weiter, wenn man versucht allgemeingültig zu definieren, was Echtzeit ist.

Vergessen wir also den Begriff Echtzeit, sondern wenden wir uns wieder dem eigentlichen Problem zu, nämlich zu erkennen, wann die Darstellung in den Augen des Betrachters anfängt zu ruckeln.

herbivore
private Nachricht | Beiträge des Benutzers
KainPlan
myCSharp.de - Member



Dabei seit:
Beiträge: 133
Herkunft: Gelsenkirchen

Themenstarter:

beantworten | zitieren | melden

ja war auch ein bisschen unglücklich die wortwahl. Den ersten schritt den ich jetzt gemacht habe ist die fps-rate zu errechnen. Nun muss ich nur noch beim unterschreiten der fps die geschwindigkeit des scrollens anpassen da hakts aber noch ein bisschen. Release den pbv aber erstmal ohne dieses feature da das doch mehr gehirnschmalz erfordert. hab ich das feature erstmal in ein eigenes projekt gekapselt.
private Nachricht | Beiträge des Benutzers