Animation für minimal-HW

PoD-BoT

Banned
Registriert
Feb. 2006
Beiträge
598
Hallo Leute,

ich habe da ein kleines Projekt vor mir, bei dem Ihr mir ein wenig helfen könnntet...
und zwar will ich ein kleines Programm (Animation) schreiben, das auf Rechnern mit Minimalkonfiguration, bzw. langsamer Hardware läuft (z.B. 800-1000 MHz Single-Core-CPU). Das nur, weil das Programm in ein Hardware-Projekt übernommen wird, bei dem die Kosten möglichst gering ausfallen sollen.

Das Programm soll folgendermaßen aussehen:
  • Farbüberlauf im Hintergrund (zufällige Farben, aber passend)
  • Diagonal und quer wechselnd (überlaufend)
    ----
  • Kreise auf zufälligen Positionen
  • die von ca. 5 auf ca. 200 Pixel wachsen
  • und auf dem Weg zur 200 erblassen
  • Kreise in passenden Farben zum Hintergrund

Optional sollen über ein Menü "Szenen" ausgewählt werden können, die bestimmte Farbschemen enthalten. Außerdem sollte man das aktuelle Bild anhalten können.

Das Ganze sollte Plattform unabhängig sein, deshalb habe ich mal in HTML5 angefangen, was mir jedoch ziemlich hardwarehungrig zu sein scheint.
Mit dem Code habe ich bisher leider nur Bewegungen auf der X und Y-Achse hinbekommen, so wie ich ihn poste, sind es zehn standhafte Kreise auf zufälligen Positionen mit variabler Größe von bis zu 100 Pixeln.

Bräuchte erstmal ein Statement zur Realisierbarkeit und ob sich das alles plausibel anhört.


Bitte habt Verständnis mit mir, ich bin "nur" Systemintegrator ;)
Danke im Voraus und Gruß,
Domi

Code:
<!DOCTYPE HTML> 
<title>Test 1</title> 
<!--[if IE]><script type="text/javascript" src="excanvas.js"></script><![endif]--> 
<body onload="init()"> 
<h1>Test 1</h1> 
<canvas id="canv" class="output" width="720" height="1280" style="width:720px;height:1280px"></canvas>

<script> 
var width = 720;
var height = 1280;
var y1 = 0;
var bflip = false;
var elt;
var context;
function Item(x,y,w,h,vy,c){
  this.x = x;
  this.y = y;
  this.w = w;
  this.h = h;
  this.vy = vy;
  this.c = c;
}
var items = new Array();
function init() {
  elt = document.getElementById('canv');
  context = elt.getContext('2d');
  for (i = 0; i < 10; i++) {
    x = Math.floor(Math.random()*(width+1));
    y = Math.floor(Math.random()*(height+1));
    w = Math.floor(Math.random()*100)+1;
    h = Math.floor(Math.random()*51)+50;
    vy = Math.floor(Math.random()*0)+0;
    if (vy == 0) vy = 0;
    // random color
    c = "rgba(";
    for (j = 0; j < 3; j++) {
      v = Math.floor(Math.random()*230);
      c += v + ",";
    }
    c += "0.6)";
    it = new Item(x, y, w, h, vy, c);
    items.push(it);
  }
  setInterval("draw();", 50);
}
function draw() {
  // background
  var g = context.createLinearGradient(0, 0, 0, height);
  g.addColorStop(0, '#c0a');
  g.addColorStop(1, '#ff0');
  context.fillStyle = g;
  context.fillRect(0, 0, width, height);
 
  for (i in items) {
    context.fillStyle = items[i].c;
    context.beginPath();
    context.arc(items[i].x,items[i].y,items[i].w,20,Math.PI*2,true);
    context.fill();
 
    items[i].y = items[i].y+items[i].vy;
    if (items[i].y>height+items[i].w) items[i].y = -items[i].w;
    else if (items[i].y<-items[i].w) items[i].y = height+items[i].w;
  }
 
  y1++;
  if (y1>100) {
    y1 = 0; // 0
    bflip = !bflip;
  }
}
</script>
 
hi,

wenn du mit Plattformunabhängig, verschiedene Betriebssysteme meinst, würd ichs mal mit Java versuchen ;)
Oder für Win/Linux C und ne externe Grafik Api. Das läuft dann auch auf 100mhz Rechnern ;)

Kenn mich nicht aus mit HTML, aber zur Grafikerzeugung würd ich sowas nicht benutzen, außer es muß im Browser laufen.

Realisierbar ist das gut, kommt nur drauf an was du damit anstellen willst, oder in welches Projekt sowas eingebunden werden soll. Je nachdem lohnt sich da der ein oder andere Ansatz mehr oder weniger, du müsstest schon mehr Details nennen.
falls du mit Plattformunabhängig verschiedene Architekturen meinst wie ARCH,x86.. ist ne Lösung die im Browser abläuft wohl leichter zu realisieren.

gruß
 
Zuletzt bearbeitet:
soyd schrieb:
[...] Das läuft dann auch auf 100mhz Rechnern ;) [...]
Das hört sich doch mal vielversprechend an :)

Dann muss ich wohl mal mehr Details preisgeben...
Das Projekt soll im Prinzip ein bewegtes Bild werden.
Das Programm soll im Vollbild auf einem Display irgendwas zwischen 10" und 32" ausgegeben werden. Dahinter soll ein Minimalrechner (am liebsten embedded) laufen, der gerade die Anforderungen des Programmes erfüllt. Also z.B. 350 Mhz mit 128 MB RAM und einem small Linux (das wäre dann wohl wirklich die minimalste Konfig).

Leider habe ich noch nie in meinem Leben C geschweige denn Java programmiert... ich wüsste nicht mal, wo ich anfangen sollte. Ein Exemple mit Kommentaren wäre hilfreich. Bin mir auch nicht sicher, ob ich mir aus Dokumentationen mein Ziel zusammenreimen könnte... Brauche mal einen Ansatz

Gruß
 
Du hast Post, da kannst du dir mal ein ganz einfaches Beispiel ansehen, wie man in Java ein Fenster erstellt und darin zeichnet. Ich vermute einfacher geht das in C auch nicht. :D
 
mit java würd ich sowas niemals machen. für embedded-geräte verbraucht ne standard java installation einfach viel zu viel speicher (hdd und ram).

so etwas würd ich in c programmieren, ggf. mit opengl es wenn verfügbar.
 
Zum Thema Java habe ich heute vom Java-Entwickler auch nur einen WTF-Blick bekommen ^^

Ich habe mich heute eher nochmal mit der Hardware auseinandergesetzt. Ich habe meinen digitalen Bilderrahmen (7") auseinandergebaut, um mal zu sehen, was diese "Minianwendung" (Uhrzeit, diverse animierte Bildwechsel, Fernbedienung, usw.) so für Hardware braucht. Da steckt lediglich ein Magic Pixel MP630 Bild-SoC drin und irgendein Speicher (RAM) von winbond. Das ding hat noch USB-Anschluss und einen SD-Slot - alles auf einer Platine, betrieben über einen 5V, 2A Stromstecker.
Sowas wäre für mein Projekt natürlich auch optimal. Natürlich mit angepassten Bauteilen, nur kann ich schwer einschätzen was das fertige Programm wirklich braucht. CPU/ Multimedia-SoC? Alles auf einer Platine und womöglich ohne laufendes OS hieße dann wohl auch Microprozessor-Programmieren oder?
Ich kann mir leider nicht vorstellen, wie diese Dinge (der Bilderrahmen) programmiert werden...

Gruß, Domi
 
Zufall gibts eh nicht - erst recht nicht im Computer. Dann würde ich fragen wieso es "zufällig" sein muss? Ein Zuschauer merkt doch eh keinen Unterschied ob da ein 30 min gerendertes Video läuft, oder ob die Bilder in Echtzeit generiert werden.
Schreib doch sonst mal mehr zum Sinn der ganzen Sache - wo/wie solls eingesetzt werden. Dann kann man auch besser Vorschläge machen.
Und was für ne CPU isses genau? Wenig MHZ heißt nicht viel - moderne ULV CPUs von Intel laufen auch mit kaum mehr als 1GHz aber haben deutlich mehr Leistung als ein uralt 1GHz Celeron.
Kommt kein ION Netbook (Atom+Geforce 9400) in Frage? Die sind auch günstig und dann vor allem 3D fähig - mit OpenGL ist das sicher nicht schwer.
https://www.computerbase.de/news/prozessoren/halbierte-preise-fuer-neue-intel-atom.31635/
Oder ein gebrauchter PC? Jede 30€ Möhre mit ner veralteten Spiele-Graka wie Geforce4 kann sowas in Echtzeit 3D darstellen.
 
Zuletzt bearbeitet:
Ich will ein digital animiertes "Bild" erstellen, das auf einem 10-32" großen TFT mit eigener Hardware laufen soll. Also wirklich einfach ein Bild, das an die Wand gehängt wird.
Am liebsten halt nur mit der nötigen Hardware... kleine CPU, bissl RAM, Bildschirmausgabe (wie die Hardware meines digitalen Bilderrahmens) - fertig. Am Ende soll auch nicht mehr möglich sein das Programm zu ändern, da es auf einen der Microchips enthalten sein soll...

Was da für eine CPU hinter soll, kann ich also noch nicht sagen. Da soll aber zumindest kein dedizierter PC laufen.
Und 3D soll das Ganze auch nicht sein: Farbüberlaufender Hintergrund und wachsende Kreise!
 
ein solches µATX-System ist doch völlig übertrieben für so eine kleine Anwendung!
Auf der Platine des digitalen Bilderrahmens ist ja auch ein Prozessor und ein Programm wird ausgeführt, das man bedienen kann. Ich habe ja auch schon erwähnt, dass es wohl auch in die Richtung der Microprozessor-Programmierung gehen kann... keine Ahnung, wie man da ein Programm drauf bekommt.

Edit: Wenn, dann geht es wohl eher in diese Richtung hier: http://tinyurl.com/yhah6ps
 
Zuletzt bearbeitet:
keine Ahnung, wie man da ein Programm drauf bekommt.
dann isses imho unrealistisch als hardware-plattform für die animations-berechnung deinen vorhandenen bilderrahmen zu verwenden. ich vermute mal, das das gerade kein general-purpose prozessor ist, den man mal eben PC-ähnlich in C oder so beliebig programmiert.. das von dir verlinkte ist da sicher passender als grundlage.
 
Haha, achso du hast gedacht, dass ich meinen digitalen Bilderrahmen als Hardware dafür benutzen wollte!? Gar nicht mal so eine schlechte Idee, ist mir selbst aber nie in den Sinn gekommen ^^
Ich wollte nur mal sehen, was diese Animationen (Bildwechsel) für eine Hardware braucht und wie diese verbaut ist.
Im Prinzip soll mein Projekt ein digitaler Bilderrahmen werden, aber eben mit meiner Anwendung/ Animation.
 
kuddlmuddl schrieb:
ich vermute mal, das das gerade kein general-purpose prozessor ist, den man mal eben PC-ähnlich in C oder so beliebig programmiert.. das von dir verlinkte ist da sicher passender als grundlage.

fast jeder mikrocontroller bringt einen c-compiler mit.
 
Mich würde ja mal brennend interessieren wofür man so ein "Bild" benötigt :p

Frage wäre, geht es darum etwas zu Programmieren und so zu lernen oder geht es wirklich nur um ein Bild?

Geht es nur um ein Bild kann ich meinen Vorrednern nur beistimmen, las es einfach vorrendern und als Video abspielen...
 
fast jeder mikrocontroller bringt einen c-compiler mit.
Klar, das bezweifel ich ja garnicht - ich glaube auch nicht, dass Digi-Bilderrahmen "noch" in Assembler programmiert werden müssen
Ich war nur skeptisch bei dem Ansatz, nen gekauften (=fertig programmierten) billig-Bilderrahmen selbst zu programmieren. Bei dem letzten Bilderrahmen den ich in der Hand hatte war der c-compiler nämlich nicht dabei^^
Scheinbar war das eh nicht seine Intention - ich habs aus diesem Satz:
"Am liebsten halt nur mit der nötigen Hardware... kleine CPU, bissl RAM, Bildschirmausgabe (wie die Hardware meines digitalen Bilderrahmens) - fertig."
halt vermutet...
Hätte er mal deutlich am Anfang geschrieben, dass er minimal Hardware kaufen will, wäre es von Anfang an leichter gewesen zu helfen ^^

bei dem verlinkten
http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&id=950&tabs=1
wäre für mich dann die Frage, wie man den vorhandenen Bildschirm des Digi-Bilderrahemns da anschließen soll - der hat kaum nen vga/hdmi Stecker.
Oder wird der Bildschirm auch noch angeschafft? Dann ist das doch ne gute Lösung. Wieso hast du die nicht gleich am Anfang schon vorgeschlagen?

Der Sinn ist mir irgendwie auch immer noch unklar - soll das einfach nur ne alternative zu nem Bild sein? nett anzusehen mit ner günstigen Animation? oder evtl. n Firmenlogo darstellen+animieren? gibts nicht so (w)lan-fähige Fernseher die nen stream aus dem Netz abspielen können? das spart zB Strom, wenn eh irgendwo n Server läuft.

btw:
wenns nur um ne hübsche animation geht und man eh geld ausgibt würd ich evtl sowas kaufen:
http://www.zack-zack.com/html/detail/zackzackArchive.html?itemId=7451 (108€)
durch ion2 kann man da auch mehr als langweilige 2D kreise animieren - könnte mir vorstellen dass es in der demo-szene nette animationen gibt die auch auf so beschränkter hardware schon erstaunlich gut aussehen.
 
Zuletzt bearbeitet:
Entschuldigt bitte die Verwirrung... ich bin mir ja selbst noch nicht im Klaren, was da für Hardware hinkommt. Fragt euch nicht was das soll, ich würde den Sinn gerne für mich behalten :verwandlung:
Das VIA Pico-ITX Board habe ich erst gestern gefunden, deshalb kam der Vorschlag nicht direkt am Anfang, bei der Eröffnung des Freds. Soweit ich das aber Verstanden habe, kosten diese Boards gleich mal so schlappe 200 Euro plus!?

Nein, das Display des digitalen Bilderrahmens soll nicht als Ausgabe dienen, der hat ja schließlich keine 10-32". Den digitalen Bilderrahmen könnt ihr auch eigentlich völlig vergessen, denn wie gesagt, suchte ich lediglich einen Hardware-Aufbau zum Vergleich. So ähnlich könnte ich mir die Platine in meinem Projekt nämlich vorstellen.

Und nochmal, diese Mini-ITX Boards sind mir eigentlich schon zu groß... wie hoch ist denn so drei mal 3,5mm Klinke-Anschlüsse nebeneinander? An meinem PC sind das 4cm und das würde das ganze Projekt (Bildschirm mit Hardware hinten drin) schon sehr dick machen.

Gruß, Domi
 
http://gh.de/?cat=mb1ppga_ddr
evtl ist da ja was dabei. Atomboards ab 45Euro ohne Versand.
Audio Anschlüsse kann man ja abbrechen / weglöten - das Problem wird die Prozessorkühlung denke ich.

Wieso muss das Board eigtl. HINTER den Rahmen? Wenn du nen Fernseher oder ähnliches nimmst gibt es doch eh mindestens ein Kabel: Strom.
Was spricht denn dagegen zusätzlich ein zweites Kabel (Bild) zu benutzen und das Board dann zB bei der Steckdose zu haben.. oder wo es auch immer gut hinpasst. Dann ist da wirklich nur der Monitor an der Wand mit normalem Abstand.
 
Zuletzt bearbeitet:
Um jetzt mal eine völlig überzogene Idee einzubringen, da es ja um ne minimale HW geht:

Nen schönes Spartan3-Board :cheerlead:

Ich sehe aber auch nur die aufgezeigten Möglichkeiten für leicht umsetzbar, da man nur so mal eben nen "normalen" Bildschirm anschließen kann ohne irgendwelche selbstgebastelten Schnittstellen, wie es bei vielen µControllern der Fall ist einzusetzen. Es kann natürlich passende Controller geben...aber viel Spass beim suchen! ;)
 
Zurück
Oben