Pixi.js: Echte SVG-Unterstützung

Erstellt am 29. Juni 2017  ·  30Kommentare  ·  Quelle: pixijs/pixi.js

Es wäre großartig für Pixi, eine Grafikhierarchie-Darstellung eines SVG erstellen zu können (nicht nur eine Textur wie derzeit zu laden).

@psyrendust ^ Hey, kannst du den, den du zu Pixi gemacht hast, PR veröffentlichen? :D

Stale 🙏 Feature Request

Hilfreichster Kommentar

Ich denke, dies tut, was Sie mit Webpack wollen.
https://github.com/blunt1337/pixi-svg-loader

Alle 30 Kommentare

Vielleicht möchten Sie diese Bibliothek überprüfen, die ich erstellt habe:
https://github.com/bigtimebuddy/pixi-svg
https://bigtimebuddy.github.io/pixi-svg/example/

Aufgrund der Einschränkungen beim Zeichnen in Pixi werden nicht alle SVG-Funktionen unterstützt.

@trusktr könnten Sie einen Anwendungsfall nennen? Meinst du Gruppen als Container und Sets von Primitiven als Sprites?

Denn das ist etwas, an das ich gedacht habe. Es könnte möglich sein, einen Texturatlas zu erstellen und die Übersetzungen und Drehungen von SVG zu verwenden, um eine Hierarchie von Sprites zu erstellen.

Ein Problem, das ich bei diesem Ansatz sehe, sind Anker (falls wir etwas animieren möchten). Inkscape fügt beispielsweise Anker als benutzerdefinierte Attribute hinzu, die jedoch nicht im Standard-Afaik enthalten sind. Ein Beispiel was ich meine:

2017-07-01 08_56_56-_new document 1 - inkscape

Der Anker dieser Gruppe von drei Pfaden (oben links im blauen Rechteck) ist definiert als inkscape:transform-center-x und inkscape:transform-center-y .

    <g
       id="g4512"
       inkscape:transform-center-x="-65.892627"
       inkscape:transform-center-y="43.567609"
       transform="rotate(-5.9407468,27.740957,88.735118)">
      <path
         inkscape:connector-curvature="0"
         id="rect4485"
         d="m 24.502618,78.898505 h 50.619309 c 3.986749,0 7.196297,3.209548 7.196297,7.196296 v 70.274069 c 0,3.98675 -3.209548,7.1963 -7.196297,7.1963 H 24.502618 c -3.986748,0 -7.196296,-3.20955 -7.196296,-7.1963 V 86.094801 c 0,-3.986748 3.209548,-7.196296 7.196296,-7.196296 z"
         style="opacity:1;fill:#005e92;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" />
      <path
         inkscape:connector-curvature="0"
         id="rect4485-4"
         d="m 66.160572,123.8869 h 50.619318 c 3.98675,0 7.1963,3.20955 7.1963,7.1963 v 70.27406 c 0,3.98675 -3.20955,7.19631 -7.1963,7.19631 H 66.160572 c -3.986734,0 -7.196284,-3.20956 -7.196284,-7.19631 V 131.0832 c 0,-3.98675 3.20955,-7.1963 7.196284,-7.1963 z"
         style="opacity:1;fill:#920000;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" />
      <path
         inkscape:connector-curvature="0"
         id="rect4485-3"
         d="m 106.60403,73.994048 h 50.61931 c 3.98675,0 7.1963,3.209548 7.1963,7.196296 v 70.274066 c 0,3.98675 -3.20955,7.19631 -7.1963,7.19631 h -50.61931 c -3.98675,0 -7.196288,-3.20956 -7.196288,-7.19631 V 81.190344 c 0,-3.986748 3.209538,-7.196296 7.196288,-7.196296 z"
         style="opacity:1;fill:#009228;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" />
    </g>

Obwohl ich Ihre Bemühungen @bigtimebuddy schätze,

Schau dir das auch an:
https://css-tricks.com/rendering-svg-paths-in-webgl/

Ich denke, dies tut, was Sie mit Webpack wollen.
https://github.com/blunt1337/pixi-svg-loader

@OSUBlake cool, es scheint tatsächlich das zu tun, was ich meinte. Muss es versuchen. 👍

@bigtimebuddy Danke! Ich habe dort eine neue Ausgabe eröffnet. Wäre toll, ein vollständiges Pixi-Szenendiagramm zu haben.

@RanzQ

@trusktr könnten Sie einen Anwendungsfall nennen? Meinst du Gruppen als Container und Sets von Primitiven als Sprites?

Ja, aber Primitive wären eher Graphics Objekte als Sprites.

Ein Problem, das ich bei diesem Ansatz sehe, sind Anker (falls wir etwas animieren möchten). Inkscape fügt beispielsweise Anker als benutzerdefinierte Attribute hinzu, die jedoch nicht im Standard-Afaik enthalten sind. Ein Beispiel was ich meine:

Es macht mir nichts aus, nicht standardmäßige Dinge zu unterstützen, ich kann nur mit den standardisierten APIs leben. Es könnte leicht ein Plugin zur Unterstützung von Inkscape-spezifischen Dingen geben.

Obwohl ich Ihre Bemühungen @bigtimebuddy schätze,

Warum genau denkst du das?

@OSUBlake

Ich denke, dies tut, was Sie mit Webpack wollen.
https://github.com/blunt1337/pixi-svg-loader

Das ist ziemlich cool, außer dass es auf Webpack und auch auf Tooled-Umgebungen beschränkt ist und nicht auf dem Client ausgeführt wird. Ich suche nach einer API, die ich mit Pixi.js zur Laufzeit (nicht zur Build-Zeit) verwenden kann.


Was ich möchte (ich glaube, aber ich bin nicht der erfahrenste Pixi.js-Benutzer, also rate, wenn etwas anderes besser ist wie die Verwendung von Sprites) ist ein DisplayObject-Szenendiagramm, das dieselbe Struktur wie das zum Generieren verwendete SVG-DOM hat der Pixi-Baum aus. Dies ist für mich leistungsstark für die Manipulation und Animation, ohne dass das gesamte SVG in jedem Frame neu gerendert werden muss, nur um ein Primitiv (von möglicherweise Hunderten oder Tausenden) zu animieren.

Was ich denke, werde ich tun, wenn etwas Open Source noch nicht existiert, ist, @bigtimebuddys pixi -svg oder @saschagehlichs pixi -svg-graphics zu nehmen und sie zu modifizieren (oder ähnliche Konzepte zu verwenden), um ein Pixi Graphics Baum spiegelt den SVG-Baum, anstatt nur auf ein einzelnes Graphics Objekt zu zeichnen.

@trusktr Ich sehe, für primitive Animationen kann es nützlich sein, Graphics Objekte anstelle von Sprites zu erstellen. Aber ich denke, die Lösung könnte beides unterstützen, Graphics für einfache SVGs und Sprites für komplexere.

Der Grund, warum ich das für keine gute Idee hielt, ist die Tatsache, dass es viele Bemühungen gab, benutzerdefinierte SVG-Renderer zu erstellen, und meiner Erfahrung nach haben sie immer diese TODO von nicht unterstützten Sachen.

Das wird für einen Künstler ein Problem sein, da man wissen muss, welche Funktionen verwendet werden können und welche nicht. Wir haben bereits einen guten SVG-Renderer, den Browser. Aber wenn das SVG nur einfache Primitive ohne Effekte enthält, ist es wahrscheinlich in Ordnung, es als Graphics Objekte zu parsen.

Ein Beispiel, wo Sprites besser funktionieren würden , die Karte sieht sehr knackig aus (vielleicht fehlt nur Antialiasing) und funktioniert schlecht, da die Pfade komplex sind.

Das Erstellen von Texturen aus einem SVG ist mit Canvas 2d und der Path2D- API ziemlich einfach.

var path = new Path2D("M10 10 h 80 v 80 h -80 Z");
context.fill(path);

Pfad-Morphing-Demo
https://codepen.io/osublake/pen/oWzVvb

Ich wollte an einem besseren Polyfill arbeiten, da das von Google Probleme beim Parsen komplexer SVG-Pfade hat.
https://github.com/google/canvas-5-polyfill

@RanzQ

Wir haben bereits einen guten SVG-Renderer, den Browser.

Aber es ist so slooooooooow. Rendert es in der GPU oder der CPU? Für mich ist die Leistung, die ich erfahre, nicht vergleichbar mit der Geschwindigkeit ähnlicher Dinge, die beispielsweise mit Pixi.js erstellt wurden. Mir scheint, dass die native SVG-Engine zu viel Arbeit macht.

Auch Canvas 2d ist im Vergleich zu WebGL langsam. Vergleichen Sie hier den Unterschied zwischen WebGL und Canvas: http://pixijs.github.io/pixi-particles-editor/ (scrollen Sie nach unten, um zwischen WebGL- und Canvas-Rendering umzuschalten). Canvas ist deutlich langsamer.

Ich möchte nur SVG zeichnen und es so schnell wie möglich haben. Bisher scheint es, zumindest konzeptionell, der schnellste Weg zu sein, SVGs mit einer WebGL-API wie Pixi.js oder Two.js zu zeichnen. Der einzige Nachteil im Moment ist, dass nicht alle SVG-Funktionen vollständig unterstützt werden.

@OSUBlake

Das Erstellen von Texturen aus einem SVG ist mit Canvas 2d und der Path2D-API ziemlich einfach.

Canvas 2D ist immer noch merklich langsamer als WebGL, siehe die Demo, die ich gerade zwei Absätze verlinkt habe.

Pfad-Morphing-Demo
https://codepen.io/osublake/pen/oWzVvb

Coole Demo! In diesem Fall animieren Sie einen einfachen Pfad im PathProxy. Dies ist wahrscheinlich schnell genug für den Anwendungsfall. Aber stellen Sie sich vor, Sie zeichnen eine Reihe von Dingen in einem SVG, z. B. 100 Knoten, und animieren sie alle, und möchten dann das Ganze als Textur um eine Kugel wickeln.

Oder stellen Sie sich vor, dass die Partikel in dieser Demo mit SVG erstellt werden und SVG-DOM-Knoten animieren, dann das Rendering als Textur mit drawImage in einer Leinwand übernehmen und schließlich auf ein Quad einer 3D-Webgl-App übertragen. Es wäre zu langsam!

Ihre Demo ist schnell, da diese Partikelanimation in WebGL über Pixi verfügbar ist.

Wenn das Rendern von SVGs mit Pixi eine unterstützte Funktion wäre und eine Hierarchie erstellt würde, die die SVG-Hierarchie widerspiegelt, dann wäre es möglich, Änderungen einem display:none <svg> Element zuzuordnen ( display:none damit es hoffentlich verhindert, dass die SVG-Engine des Browsers funktioniert, da nichts gerendert werden muss) in Änderungen an einem Pixi.js-Baum.

Ich denke, dies wäre der schnellste Weg, SVGs zu zeichnen, da Pixi schneller ist und gleichzeitig den Komfort eines DOM bietet, das von React, Angular usw. manipuliert werden kann. Ich möchte einen SVG-DOM-Baum haben, den ich bearbeiten kann, wer rendert? schneller sein als die langsame SVG-Engine des Browsers. Vielleicht verlange ich zu viel. Es scheint einfach so, als ob das SVG-Rendering mit der heutigen Technologie nach gängigen Standards viel zu langsam ist (wir wollen die Geschwindigkeit der Gaming-Engine).

@trusktr

Aber es ist so slooooooooow.

Damit meinte ich, dass wir SVG-Texturen mit dem Browser zeichnen können, er ist langsam, unterstützt aber alle Funktionen. Natürlich würden Sie solche Animationen nicht machen. Sie können einen Texturatlas erstellen und die Sprites anschließend animieren. Wenn Sie beispielsweise 2D-Wirbelsäulenfiguren erstellen möchten, ist dies der richtige Weg.

Ich denke, dies ist ein Beispiel dafür, was Sie suchen :

Die Aufgabe ist nicht einfach und diese Animation zum Beispiel ist komplex genug, um sie auf meinem alten Android-Handy langsam abzuspielen, das Sprite-basierte Pixi-Szenen gut abspielt. Ich sehe keinen Unterschied in der SVG- und Pixi-Version. Könnte aber nur ein Optimierungsproblem sein.

Schau dir das auch an: https://www.gatherdigital.co.uk/community/post/high-performance-webgl/78

Meiner Meinung nach gibt es also zwei verschiedene Arten von Anforderungen für SVG. Eine mit weniger SVG-Funktionen, aufgeteilt in Primitive, die andere mit Browser-gerenderten Atlas, Sprites sind zum Beispiel die <g> Knoten.

Ein anderer Ansatz könnte darin bestehen, ein besseres interoperables Format oder Werkzeug für Vektorgrafiken als SVG zu finden. Wenn Sie etwas Skalierbares wollen, hat SVG seine Einschränkungen in PixiJS aus Gründen, die @RanzQ bereits artikuliert hat. Es gibt so viele Funktionen, die in den in SVG verfügbaren Zeichenfunktionen von Pixi nicht unterstützt werden, dass jede Übersetzung von Primativ-Zeichnungen zweitrangig sein wird.

Ein weiterer Ansatz, den ich empfehlen würde, ist PixiAnimate (https://github.com/jiborobot/pixi-animate-extension). Es ist eine native Erweiterung (Haftungsausschluss, ich habe dies geschrieben) für Adobe Animate, die beim Exportieren genauer Grafiken gute Arbeit leistet. Außerdem können Sie mit verschachtelten Symbolen und Layern eine beliebige Hierarchie erstellen oder animieren.

@bigtimebuddy Gibt es einen Workflow zum Erstellen von

Es scheint möglich zu sein, Atlanten in der neuen Version von Animate zu erstellen, aber haben Sie Ihre Erweiterung dafür ausprobiert: http://blogs.adobe.com/contentcorner/2017/07/03/create-a-texture-atlas-with -animiere-cc-für-deine-lieblings-Spiel-Engines/

@RanzQ , ja PixiAnimate kann separate Bilder oder Spritesheets im Format von TexturePackers-Atlanten exportieren. Vektorformen werden jedoch nicht automatisch in Texturen umgewandelt. Sie müssen dazu in Animate "In Bitmap konvertieren" verwenden.

@trusktr

Ihre Demo ist schnell, da diese Partikelanimation in WebGL über Pixi verfügbar ist.

Exakt. Ich habe nicht vorgeschlagen, Canvas als Hauptrenderer zu verwenden. Nur um Texturen/Sprites zu generieren, wenn sich die Geometrie ändert. Es sollte für die meisten Anwendungsfälle schnell genug sein. Ich denke, das ist die Art und Weise, wie Two.js das Pfadrendering in WebGL durchführt.

Und die Verwendung von Path2D-Objekten kann die Canvas-Leistung verbessern, da der Browser die Vektoren für einen Pfad zwischenspeichert. Auf diese Weise können Sie dasselbe Pfadobjekt mehr als einmal verwenden, selbst bei unterschiedlichen Canvas-Kontexten und Auflösungen.

@OSUBlake

Exakt. Ich habe nicht vorgeschlagen, Canvas als Hauptrenderer zu verwenden. Nur um Texturen/Sprites zu generieren, wenn sich die Geometrie ändert. Es sollte für die meisten Anwendungsfälle schnell genug sein. Ich denke, das ist die Art und Weise, wie Two.js das Pfadrendering in WebGL durchführt.

Ja, das klingt nach einem guten Ansatz. Wenn beispielsweise die einzigen Attribute, die an einem <circle> Element geändert werden, cx und cy , bedeutet dies, dass eine Optimierung darin besteht, ein vorhandenes Mesh oder Sprite zu übersetzen, ohne es zu erstellen ein neues.

Hier ist ein Vergleich zwischen Pixi, Two und nativem SVG:

Warum ist Pixi merklich langsamer? Liegt es daran, dass es basierend auf den Zeichenbefehlen jeden Frame neu berechnet (re-tessalates oder neu rasterisiert)?

Bei Two.js ist ein Circle ein Objekt mit x-, y- und radius-Eigenschaften. Bei dieser API ist es offensichtlich, dass der Kreis nicht erneut tessalated/resterasterisiert werden muss, wenn nur x und y geändert werden.

Es ist nicht so offensichtlich, wie diese Optimierung mit dem Zeichenbefehlsstil von Pixi erfolgen würde.

@trusktr

Warum ist Pixi merklich langsamer? Liegt es daran, dass es basierend auf den Zeichenbefehlen jeden Frame neu berechnet (re-tessalates oder neu rasterisiert)?

Nein. Es werden nur viele Dreiecke erzeugt, die die GPU-Leistung beeinträchtigen. Sie können den Unterschied sehen, wenn Sie ein Rechteck ohne Linienstil zeichnen. Es wird als Sprite gerendert, sodass die Leistung viel besser ist. 10.000 Rekt.
https://codepen.io/osublake/pen/PjrbWq/

Haben Sie sich mit der Verwendung von Distanzfeldern für die Rasterung befasst? Ich weiß, dass es gut mit Schriftarten funktioniert, wenn Sie nicht zu stark hineinzoomen. Ich frage mich, ob es zum Animieren von Pfaddaten verwendet werden könnte.
https://github.com/Tw1ddle/WebGL-Distance-Fields/tree/master/sdf

https://www.shadertoy.com/view/ltXSDB

Meine vorherigen Beispiele waren völlig ungenau, weil ich nicht wusste, dass JSBin früh aus den for Schleifen ausbricht, also hat es auf meinem Macbook Pro nur 500 Kreise gerendert (selbst wenn ich n auf gesetzt habe) 10000 ). Ich habe die Beispiele aktualisiert, sodass sie alle 2000 Kreise ohne die Schleifenunterbrechung von JSBin rendern:

Das SVG-Beispiel ist immer noch am langsamsten, wenn nur Kreispositionen (nicht Radius) animiert werden.

Hier sind Two.js und SVG, die auch Radien animieren:

Ich habe die Pixi.js-Version nicht eingefügt, weil ich nicht sicher war, wie ich die Nicht-Radius-Animationsversion ändern sollte. Wie würden Sie die Version ohne Radius-Animation mit Pixi.js aktualisieren, um die

Wie würden Sie die Version ohne Radius-Animation mit Pixi.js aktualisieren, um die Radius-Animation einzuschließen?

Die Leistung kann hier wirklich einen Nasensprung machen. Sie müssen das Grafikobjekt löschen, wodurch alles zurückgesetzt wird.
https://codepen.io/osublake/pen/8217810e590672c5a5327596e33c4b1a?editors=0010

Sehen Sie sich nun diese Demo mit Canvas 2d an, um die Texturen zu generieren. 3.000 Kreise laufen auf meinem Computer mit soliden 60 Bildern pro Sekunde.
https://codepen.io/osublake/full/MoMeMg/

Jedenfalls denke ich, dass es dafür einen guten Anwendungsfall gibt, wie das Beispiel zeigt: In WebGL kann es in einigen Fällen viel schneller sein.

@OSUBlake Hoppla, ich habe das letzte geantwortet, bevor ich deine neue Antwort gesehen habe.

Die Leistung kann hier wirklich einen Nasensprung machen. Sie müssen das Grafikobjekt löschen, wodurch alles zurückgesetzt wird.
https://codepen.io/osublake/pen/8217810e590672c5a5327596e33c4b1a?editors=0010

Das habe ich befürchtet, was nicht ideal ist. Es beginnt sich der langsamen nativen SVG zu nähern.

Sehen Sie sich nun diese Demo mit Canvas 2d an, um die Texturen zu generieren. 3.000 Kreise laufen auf meinem Computer mit soliden 60 Bildern pro Sekunde.
https://codepen.io/osublake/full/MoMeMg/

Heilige Scheiße, wow! Okay! Also, los geht's, das ist derzeit der beste Weg (und mit 3000 <canvas> sogar)!

Warum geht das so viel schneller? Vielleicht können native SVG-Implementierer daraus lernen (sowie Pixi.js und Two.js)?

Vielleicht würde die Verwendung dieses Ansatzes in Pixi.js Änderungen an Kollision/Kommissionierung erfordern? Es würde eine rechteckige Textur anstelle eines Netzes geben.

@trusktr Der Grund für die Schnelligkeit besteht darin, dass Sie einmal auf der Leinwand zeichnen und sie dann als Textur auf die GPU hochladen. In diesem Beispiel wird für jeden auf 4px-Schritte gerundeten Radien eine eigene Textur generiert (wenn ich es richtig verstanden habe 😄). Die Animation ist schnell genug, sodass Sie den Texturaustausch nicht sehen.

Sie können ähnliche Dinge mit der Zeichen-API von Pixi tun, indem Sie Grafikobjekte zwischenspeichern ( cacheAsBitmap ). Auf diese Weise können Sie Ihre Primitive einmal zeichnen und sie schnell aus dem Cache neu zeichnen.

In diesem Beispiel wird für jeden auf 4px-Schritte gerundeten Radien eine eigene Textur generiert (wenn ich es richtig verstanden habe 😄)

Es wird tatsächlich auf 0,25 Inkremente gerundet. Wie viel Subpixel-Genauigkeit können Sie tatsächlich sehen?

Wenn das lustig ist, dann schauen Sie sich an, wie Pixis CanvasTinter funktioniert. Oder wie Sprite-Sheet-Animationen funktionieren. Sie opfern etwas Arbeitsspeicher im Austausch für Leistung, und mit einer guten Caching-Strategie kann es funktionieren.

Sie können ähnliche Dinge mit der Zeichen-API von Pixi tun, indem Sie Grafikobjekte (cacheAsBitmap) zwischenspeichern. Auf diese Weise können Sie Ihre Primitive einmal zeichnen und sie schnell aus dem Cache neu zeichnen.

Die Verwendung von cacheAsBitmap sieht möglicherweise nicht gut aus, da die Grafiken Aliasing aufweisen. Um Antialiasing-Grafiken zu erhalten, müssen Sie generateCanvasTexture verwenden. So oder so erhalten Sie eine Leinwand, aber mit der Grafik-API von Pixi können Sie keine einfachen Dinge tun, wie zum Beispiel den Strich des Strichs ändern.

Sie können ähnliche Dinge mit der Zeichen-API von Pixi tun, indem Sie Grafikobjekte (cacheAsBitmap) zwischenspeichern.

Um Anti-Aliasing-Grafiken zu erhalten, müssen Sie generateCanvasTexture . verwenden

Kann ich mit einer dieser beiden Optionen den Radius wie in Ihrem Beispiel @OSUBlake animieren ?

(Übrigens, danke Leute, ich öffne meine Augen für Rendering-Techniken, die ich mir vorher nicht vorgestellt hatte).

@trusktr Ja, Sie müssen nur viele cacheAsBitmap würden Sie die Grafikobjekte anstelle von Texturen @OSUblake sagte.

Diese Art von Animation ist eine Sprite-Sheet-Animation. Wenn Sie mithilfe von Transformationen animieren können, ist das Textur-Caching nicht erforderlich. Wenn es Ihnen egal wäre, dass der Strich der Kreise auch skaliert, würde eine einfache Skalierungsanimation dies tun.

Aber ich stimme zu, Canvas hat eine bessere Zeichen-API, also würde ich sie verwenden. Und für SVG kann die Hierarchie in einen Atlas aufgeteilt werden, wie es pixi-svg-loader tut (glaube ich?). Oder wenn Sie eine Sprite-Sheet-ähnliche Animation wünschen, ist dies auch möglich, indem Sie die Animationszustände auf der Leinwand zeichnen.

Vielleicht würde die Verwendung dieses Ansatzes in Pixi.js Änderungen an Kollision/Kommissionierung erfordern? Es würde eine rechteckige Textur anstelle eines Netzes geben.

Obwohl nicht so schnell wie ein Polygon, verfügt Canvas über eine Methode, um Treffertests auf einem Pfad isPointInPath . Sehen Sie, wie es auf dieser Karte funktioniert.
https://codepen.io/osublake/pen/dzYzab/?editors=0010

Es scheint einen SVGloader in Three.js zu geben, vielleicht etwas, das auf pixi.js abgebildet werden kann
https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/SVGLoader.js

Dieses Problem wurde automatisch als veraltet markiert, da es in letzter Zeit keine Aktivität hatte. Es wird geschlossen, wenn keine weitere Aktivität stattfindet. Vielen Dank für Ihre Beiträge.

Dieser Thread wurde automatisch gesperrt, da nach dem Schließen in letzter Zeit keine Aktivität stattgefunden hat. Bitte öffnen Sie eine neue Ausgabe für verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

madroneropaulo picture madroneropaulo  ·  3Kommentare

distinctdan picture distinctdan  ·  3Kommentare

samueller picture samueller  ·  3Kommentare

zcr1 picture zcr1  ·  3Kommentare

readygosports picture readygosports  ·  3Kommentare