Hey Leute, ich stecke in einer Sackgasse fest.
Das Ziel: Animation von Flourish, primitives Flash-Beispiel hier
Rahmenbedingungen:
- Perfomant
- Hohe Browserkompatibilität
- Kein Flash
Meine ersten Überlegungen galten der Schablone, von Hand ausschneiden, wie invertieren, wie bekomme ich das Loch in die Schablone etc.
Im Endeffekt bin ich jetzt dabei gelandet die eigentliche Form in Inkscape zu erstellen (1) und dann entweder mit Rahmen invertieren (2) oder aus größeren Blöcken ausschneiden (3).
Zur Animation habe ich mit folgendem getestet:
- EaselJS: Habe das Zeichnen soweit hinbekommen das es einem Pfad folgen und diesen nach und nach ausfüllen könnte (demo). Allerdings ist die Performance nicht wirklich berauschend, vor allem wenn mehrere Zeichnungen parallel ausgeführt werden sollen. Dafür kann man die gewünschte Breite angeben und das Timing der Animationsstarts/stops dürfte relativ einfach sein.
- Snap.SVG: Arbeitet direkt mit SVGs. Scheint perfomanter, unterstützt allerdings kein direktes Zeichnen. Bin dafür über dieses hilfreiche Tutorial gestolpert (unten auf EDIT/RUN klicken).
- Direkte Animation der SVGs: Mit ein bisschen Hilfe kann man in SVGs direkt progressiv zeichnen, siehe dieses Beispiel.
Nachteil von Snap.SVG und der direkten Animation ist: Keine variable Breite. Diese wird beim Start der Animation festgelegt.
Das führt zu dem Problem, dass man zum füllen der Schablonen immer die höchste Breite nehmen muss. Damit der gezeichnete Strich nun nicht unter der Schablone hervorragt muss der Rahmen dieser also ebenfalls immer die maximale Breite haben. Das führt jetzt allerdings dazu, dass die Schablonen sich stark überschneiden, und man beim zeitgleichem Füllen die Ränder sieht.
Gehen würde es theoretisch wenn man den Hauptstrang zuerst zeichnet, die "gefüllte" Schablone dann durch das Original, also nicht-invertierte ersetzt, die anderen Schablonen dann unter dieses Original schiebt und unter diesen Schablonen dann weiter zeichnet. Allerdings erlaubt das kein paralleles Zeichnen, was im Endeffekt kacke aussehen würde.
Es soll ja so aussehen als wenn der Ast direkt wachsen würde.
Habt ihr Ideen wie das Problem einfacher/besser zu lösen wäre?
Bin für jeden Ratschlag dankbar.
stice
Das Ziel: Animation von Flourish, primitives Flash-Beispiel hier
Rahmenbedingungen:
- Perfomant
- Hohe Browserkompatibilität
- Kein Flash
Meine ersten Überlegungen galten der Schablone, von Hand ausschneiden, wie invertieren, wie bekomme ich das Loch in die Schablone etc.
Im Endeffekt bin ich jetzt dabei gelandet die eigentliche Form in Inkscape zu erstellen (1) und dann entweder mit Rahmen invertieren (2) oder aus größeren Blöcken ausschneiden (3).
Zur Animation habe ich mit folgendem getestet:
- EaselJS: Habe das Zeichnen soweit hinbekommen das es einem Pfad folgen und diesen nach und nach ausfüllen könnte (demo). Allerdings ist die Performance nicht wirklich berauschend, vor allem wenn mehrere Zeichnungen parallel ausgeführt werden sollen. Dafür kann man die gewünschte Breite angeben und das Timing der Animationsstarts/stops dürfte relativ einfach sein.
- Snap.SVG: Arbeitet direkt mit SVGs. Scheint perfomanter, unterstützt allerdings kein direktes Zeichnen. Bin dafür über dieses hilfreiche Tutorial gestolpert (unten auf EDIT/RUN klicken).
- Direkte Animation der SVGs: Mit ein bisschen Hilfe kann man in SVGs direkt progressiv zeichnen, siehe dieses Beispiel.
Nachteil von Snap.SVG und der direkten Animation ist: Keine variable Breite. Diese wird beim Start der Animation festgelegt.
Das führt zu dem Problem, dass man zum füllen der Schablonen immer die höchste Breite nehmen muss. Damit der gezeichnete Strich nun nicht unter der Schablone hervorragt muss der Rahmen dieser also ebenfalls immer die maximale Breite haben. Das führt jetzt allerdings dazu, dass die Schablonen sich stark überschneiden, und man beim zeitgleichem Füllen die Ränder sieht.
Gehen würde es theoretisch wenn man den Hauptstrang zuerst zeichnet, die "gefüllte" Schablone dann durch das Original, also nicht-invertierte ersetzt, die anderen Schablonen dann unter dieses Original schiebt und unter diesen Schablonen dann weiter zeichnet. Allerdings erlaubt das kein paralleles Zeichnen, was im Endeffekt kacke aussehen würde.
Es soll ja so aussehen als wenn der Ast direkt wachsen würde.
Habt ihr Ideen wie das Problem einfacher/besser zu lösen wäre?
Bin für jeden Ratschlag dankbar.
stice