Rotor: SVG in Vektorsoftware übertragen, Animation komplexer Vektoren

Hallo,

nochmal ein paar Fragen zu SVG:

Ich erstelle SVGs mit einem PHP-Script. Das berechnet mir nach Vorgaben, wo die verchiedenen geometr. Figuren platziert werden, kann verschieben, duplizieren, vergrößern und -kleiner, rotieren und zwei SVGs zusammenführen.

Das muss ich weiter haben, ist auch prima für Vorschau. Da aber SVG einige Unfeinheiten hat, würde ich gern mal eine "professionelle" Vektorgrafiksoftware ausprobieren, also mir ansehen, wie die Anzeige hier ist. Die müsste natürlich Textzeilen aufnehmen, die ich dann entsprechend aus dem SVG-Code umforme.

D.h., ich will mit einem nächsten Script die SVG-Syntax in die Syntax der Software übersetzen und dann das Ergebnis dort einfügen, bzw. es als Datei von dort aus öffnen können.

Frage: Was gibt es da? Geht das vielleicht sogar mit Flash..?

Und erweitert:

Ich will auch Animationen machen, die mit SVG nicht flüssig laufen. Was gibt es da für Software? Ich denke auch wieder an Flash, aber ob das leistungsfähig genug ist?

  1. Hi
    Was genau du tun willst habe ich nicht verstanden. Möchtest du von einem PHP-Skript erstellte SVGs als Flash darstellen, um die Performance zu steigern? Ich verstehe dein Problem nicht.

    1. Hi Enormator.

      Was genau du tun willst habe ich nicht verstanden. Möchtest du von einem PHP-Skript erstellte SVGs als Flash darstellen, um die Performance zu steigern? Ich verstehe dein Problem nicht.

      Das Problem ist, dass die Darstellung der Vektoren in SVG Mängel hat, etwa dass Linien, die doppelt vorhanden sind, weil sich hier zwei Figuren schneiden, anders dargestellt werden, als die einfache Linie. Das stört. Auch ist die Animation der Vektoren in SVG bei komplexen Konstellationen alles andere als flüssig und somit unbrauchbar.

      Ergo will ich zwar zunächst die Figuren in SVG erstellen (weil ich mir dafür ein PHP-Script geschrieben habe), dann aber in die Syntax einer leistungsfähigeren Vektorgrafiksoftware übersetzen. Animation ist dabei keine Bedingung, da ich auch statische SVGs erzeuge und das "immerhin etwas" wäre.

      Bezogen auf Flash ist meine Frage: Kann man den SVG-Code übersetzen und dann von Flash lesen lassen? Es geht dabei um hunderte von Einzelvektoren und es ist undenkbar, die alle "von Hand" in Flash nachzuzeichnen.

      1. Hallo Rotor,

        Bezogen auf Flash ist meine Frage: Kann man den SVG-Code übersetzen und dann von Flash lesen lassen? Es geht dabei um hunderte von Einzelvektoren und es ist undenkbar, die alle "von Hand" in Flash nachzuzeichnen.

        Von SVG nach Flash kenne ich keinen Weg, was aber durchaus möglich sein kann. Eine andere Möglichkeit wäre die Nutzung von Silverlight/XAML. Ich habe mal das im anderen Thread genannte Beispiel mit den überlappenden Linien mittels XAML ausgezeichnet [Bildlink].

        <?xml version="1.0" encoding="UTF-8"?>  
        <Canvas xmlns="http://schemas.microsoft.com/client/2007"  
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
                Background="#FFFFFF">  
          
        <Path Data="M500,200 L700,400 L500,600 L300,400 L500,200" Stroke="#000000" StrokeThickness="1"/>  
        <Path Data="M400,300 L600,500 L400,700 L200,500 L400,300" Stroke="#000000" StrokeThickness="1"/>  
          
        </Canvas>
        

        Bei der Umsetzung größerer Codemengen kann die Anwendung Svg2Xaml oder eine XSL-Transformation svg2xaml.xsl helfen.

        Grüße,
        Thomas

        1. Hi Thomas.

          Bezogen auf Flash ist meine Frage: Kann man den SVG-Code übersetzen und dann von Flash lesen lassen? Es geht dabei um hunderte von Einzelvektoren und es ist undenkbar, die alle "von Hand" in Flash nachzuzeichnen.

          Von SVG nach Flash kenne ich keinen Weg, was aber durchaus möglich sein kann. Eine andere Möglichkeit wäre die Nutzung von Silverlight/XAML. Ich habe mal das im anderen Thread genannte Beispiel mit den überlappenden Linien mittels XAML ausgezeichnet [Bildlink].

          Silverlight werde ich mir nochmal näher ansehen, aber spätestens wenn Du Dir Dein Bild vergrößert ansiehst, siehst Du das fast gleiche Problem wie mit dem Adobe SVG-Viewer. :-/ Die Darstellung ist etwas anders, aber immer noch ist die überlappte Linie unterschiedlich zur einzelnen. Wie steht es denn mit so richtig teurer und professioneller Software, "CAD" oder sowas, hast Du damit Erfahrung?

          Ich frage mich auch, wie diese verstärkte Linie entsteht. Liegt das an ungünstig gegeneinander verschobenen Pixeln oder "soll" das so ausehen?

          1. Hallo Rotor,

            Silverlight werde ich mir nochmal näher ansehen, aber spätestens wenn Du Dir Dein Bild vergrößert ansiehst, siehst Du das fast gleiche Problem wie mit dem Adobe SVG-Viewer. :-/ Die Darstellung ist etwas anders, aber immer noch ist die überlappte Linie unterschiedlich zur einzelnen. Wie steht es denn mit so richtig teurer und professioneller Software, "CAD" oder sowas, hast Du damit Erfahrung?

            Ich würde an deiner Stelle von Silverlight die Finger lassen.
            Das ist momentan nur auf Windows und Mac beschränkt - und die Verbreitung ist (im Gegensatz zu Flash) sehr gering.

            Ich frage mich auch, wie diese verstärkte Linie entsteht. Liegt das an ungünstig gegeneinander verschobenen Pixeln oder "soll" das so ausehen?

            Diese verstärkte Linie kommt durch Antialiasing zustande (siehe auch Rastern von Linien). Du wirst das also auch nicht einfach in Silverlight oder Flash lösen können.

            Das Problem: Die Linie trifft die Pixel des Bildschirms nicht genau (nur bei Vielfachen von 45°) und muss daher auf mehrere nebeneinander liegende Pixel verteilt werden.

            Bei SVG solltest du Antialiasing mit der Eigenschaft shape-rendering modifizieren können - ob der Renderer das dann unterstützt kommt darauf an welchen du verwendest.

            Ach, und bevor ich es vergesse: Falls du SVG-Grafiken nach Flash importieren möchtest bietet sich swfmill an. Damit habe ich bereits einige SVG-Grafiken erfolgreich in SWF-Dateien integriert.

            Grüße

            Marc Reichelt || http://www.marcreichelt.de/

            --
            panic("Oh boy, that early out of memory?");
                    linux-2.2.16/arch/mips/mm/init.c
            Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
            1. Hallo Marc,

              Ich würde an deiner Stelle von Silverlight die Finger lassen.
              Das ist momentan nur auf Windows und Mac beschränkt - und die Verbreitung ist (im Gegensatz zu Flash) sehr gering.

              Man kann es sich auch vorurteilsfrei ansehen, denn der X(A)ML-Unterbau ist durchaus interessant und unter Linux wird am Moonlight-Projekt gearbeitet.

              Bei SVG solltest du Antialiasing mit der Eigenschaft shape-rendering modifizieren können - ob der Renderer das dann unterstützt kommt darauf an welchen du verwendest.

              <svg ... shape-rendering="crispEdges">...</svg> sieht im Firefox gut aus, im Opera zeigt sich keine Wirkung und im IE/ASV sind alle Linien optisch dünner und Eck- bzw. Knotenpunkte etwas kantig -- also auch nicht so optimal (die anderen Werte für shape-rendering bringen keine Änderung zum Weglassen).

              Grüße,
              Thomas

              1. Hallo ThomasM,

                Ich würde an deiner Stelle von Silverlight die Finger lassen.
                Das ist momentan nur auf Windows und Mac beschränkt - und die Verbreitung ist (im Gegensatz zu Flash) sehr gering.

                Man kann es sich auch vorurteilsfrei ansehen, denn der X(A)ML-Unterbau ist durchaus interessant und unter Linux wird am Moonlight-Projekt gearbeitet.

                Dass der XAML-Unterbau durchaus interessant ist möchte ich nicht bestreiten.
                Aber: Es gibt keine offizielle Linux-Version von Silverlight. Dass die Community an einem Projekt für Linux arbeitet ist löblich, aber so wird die Linux-Variante stets den offiziellen Varianten unterlegen sein.

                Bei Flash ist mittlerweile die benötigte Software zum Erstellen von SWF-Dateien offen und frei herunterladbar - Flex 3 (nicht der Flex Builder, nur das SDK).
                Dank Java ist sie auf jedem System mit Java 5 oder höher lauffähig.

                Das wichtigste: Auch die Linux-Version des Flash Plugins wird von offizieller Seite aus unterstützt und erfährt die gleichen Updates wie die anderen beiden Varianten (das war nicht immer so - eine ganze Zeit gab es für Linux nur Version 7).

                Grüße

                Marc Reichelt || http://www.marcreichelt.de/

                --
                panic("Oh boy, that early out of memory?");
                        linux-2.2.16/arch/mips/mm/init.c
                Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
                1. Hallo Marc,

                  Aber: Es gibt keine offizielle Linux-Version von Silverlight. Dass die Community an einem Projekt für Linux arbeitet ist löblich, aber so wird die Linux-Variante stets den offiziellen Varianten unterlegen sein.

                  Kann alles so sein, aber immerhin sitzt da Novell mit im Boot, also kein kleiner Player und vermutlich wird sich das mit der offiziellen Unterstützung künftig ähnlich wie bei Flash entwickeln.

                  Letzlich wird man einfach auf die einem Projekt adäquate Technologie zurückgreifen und im .NET-Kontext wird es möglichwerweise eher in die SL-Richtung gehen. Technologisch und aus RIA-Sicht konkurriert SL mit Flash/Flex, aber auf dem Level der Vektorgrafik mit SVG. Da das W3C den für 2005 final angekündigten Standard SVG 1.2 heute gerade mal für die Tiny-Version als 2006er Working Draft vorliegen hat und die Softwarelandschaft nur unwesentlich besser ist als drei Jahre zuvor, wurde viel Potenzial verspielt (klar auch durch MS wegen Ignoranz, aber auch durch Adobe, die ihr Baby SVG nach dem Zukauf von MM+Flash durch Abkündigung des ASV verstoßen haben). Größere Projekte werden mit SVG eher nicht mehr angegangen usw usf.

                  Insofern wird alte Konkurrenz neu belebt, wobei ich auch kaum Chancen für SL auf etablierten Flash-Gebieten sehe, jedoch wie gesagt bei .NET-Anwendungen und beim XML-basierten Single-Source-Publishing.

                  Grüße,
                  Thomas