Pixi.js: Wackelnde Spritesheet-Animationen auf iOS

Erstellt am 16. Feb. 2017  Â·  29Kommentare  Â·  Quelle: pixijs/pixi.js

Beispiel: http://moonrat.co.uk/html5/pixi-ios-animation-bug/

Was Sie sehen, sind 3 GrĂ¶ĂŸen einer Animation, x0,5 oben, dann x0,75 in der Mitte und x1 unten. Auf der linken Seite wird der regulĂ€re Rendering-Pfad genommen, auf der rechten Seite verwenden die drei Animationen Pixi-Picture.

Jetzt sehe ich dieses Problem nur auf iOS-GerÀten im WebGL-Modus_. Jeder andere Browser, sogar Safari auf einem Mac, funktioniert einwandfrei. iOS im Canvas-Modus, absolut in Ordnung. Aber iOS-GerÀte (iPads und iPhones), die WebGL verwenden, wackeln

@ivanpopelyshev schlug vor, Pixi-Picture auszuprobieren, um ein genaueres Rendering zu erhalten, und es hilft auf den meisten GerÀten, aber nicht auf allen, und es beseitigt das Problem sehr selten

Hier ist eine Liste, wie alle iOS-GerÀte, die ich habe, im obigen Beispiel aussehen

iPad Mini 2: 10.0.2 - Pixi wackelt, Pixi-Bild nicht
iPad 4: 8.4 - pixi wackelt, pixi-picture tut es, aber weniger
iPad Air: 10.2 - Pixi wackelt, Pixi-Bild nicht
iPad Air: 10.3 - Pixi wackelt, Pixi-Bild nicht
iPad Air2: 8.3 - Pixi wackelt, Pixi-Bild tut es, aber weniger

iphone 4s: 9.1 - pixi wackelt, pixi-picture tut es, aber weniger
iphone 4s: 9.2.1 - pixi wackelt, pixi-picture tut es, aber weniger
iphone 5: 9.1 - pixi wackelt, pixi-bild auch
iphone 5: 10.1 - pixi wackelt, pixi-bild auch
iphone 5s: 10.0.2 - pixi wackelt, pixi-bild nicht
iphone 6: 8.2 - pixi wackelt, pixi-picture tut es, aber weniger
iphone 6: 10.0.2 - pixi wackelt, pixi-picture tut es, aber weniger
iphone 6+: 8.4 - pixi wackelt, pixi-picture tut es, aber weniger
iphone 6+: 9.2.1 - pixi wackelt, pixi-picture tut es, aber weniger
iphone se: 10.2 - pixi wackelt, pixi-bild nicht
iphone 7: 10.2 - pixi wackelt, pixi-picture tut es, aber weniger

Irgendwelche Ideen?

đŸ’Ÿ v4.x (Legacy)

Hilfreichster Kommentar

Wenn das Problem nur darin besteht, dass Sprites unter IOS wackeln, dann ja, machen Sie ein "wenn ios, dann setzen Sie das PrÀzisionsfragment auf hoch".
Wenn es nicht ios ist, ist möglicherweise das Bild-Plugin erforderlich. Aber es war nicht nur fĂŒr meine iOS-Probleme :)

Alle 29 Kommentare

ZusÀtzliche Information; Dieses Wackeln tritt beim letzten Pixi v3 NICHT auf: http://moonrat.co.uk/html5/pixi-ios-animation-bug-v3/

v3 ist besser? Das ist interessant

Ich habe das gleiche "Wackeln"-Problem unter iOS nur beim Drehen einiger Formen (es passiert, wenn sich ihr Winkel um 0 bewegt). Kann nicht zu v3 zurĂŒckkehren


Der einzige Unterschied, von dem ich denke, dass er sein könnte, ist, dass wir Vertex-Daten in Float32-Arrays in v4 speichern? Vielleicht ein PrÀzisionsproblem?

@GoodBoyDigital Ich habe es heute getestet, @themoonrat sagte, es sei dasselbe.

cool - vielleicht Shader-PrÀzision?

Lohnt es sich zu testen, wenn roundPixels auf false gesetzt ist, um zu sehen, ob es dadurch gestoppt wird?

Am Freitag, den 17. Februar 2017 um 16:13 Uhr schrieb Mat Groves [email protected] :

cool - vielleicht Shader-PrÀzision?

—
Sie erhalten dies, weil Sie diesen Thread abonniert haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/pixijs/pixi.js/issues/3742#issuecomment-280692953 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AAipZJ8DLKkA3bRJQIOYcmTDpXZgfTehks5rdccygaJpZM4MDJtw
.

roundPixels ist standardmĂ€ĂŸig falsch, ich habe es bereits ĂŒberprĂŒft.

Warte, warte, das erinnerte mich!

@ivanpopelyshev - Sie wissen, wie Sie mich gebeten haben, die Standard-Shader-PrÀzision auf Highp zu Àndern, und es hat nichts geÀndert. Nun, ich habe das gerade in Ihrer neuen Version ausprobiert, die Sie mir heute Morgen gegeben haben, und es _behebt_ es!

Ok, das ist seltsam.
Damit.
Sogar der aktuelle Entwicklungszweig mit highp fĂŒr PRECISION funktioniert. Aber....

PIXI.settings.PRECISION = 'highp'
Funktioniert nicht
Wenn Sie direkt in pixi.js gehen und bearbeiten
PRECISION: 'mediump',
zu
PRECISION: 'highp',
Dann funktioniert es.

also hohe prĂ€zision + doppelte werte? Es scheint, dass die Double-> Float-> Highp-Konvertierung eine schlechte Sache fĂŒr iPhone / iPad ist. Ich denke, das liegt daran, dass es nicht rundet, sondern tatsĂ€chlich viel abschneidet.

Es sieht also so aus, als ob dies eher ein Problem ist, bei dem die Einstellungen nicht erfasst werden, als irgendetwas anderes

schöner Fang @themoonrat

k, ich habe eine Lösung; Dies liegt an der Art des Importierens einer Einstellung. Macht es statisch, Zeit zu importieren, anstatt dynamisch zu dem, was sie gerade ist. Raising eine PR bald

Außerdem sollten wir Float64Array in Sprrite anstelle von Float32Array verwenden, das wird den Fehler ein wenig reduzieren.

EDIT: es wird nicht, aber mit einigen anderen Maßnahmen kann es :)

@ivanpopelyshev Ich denke, es geht uns gut, so wie es ist - wir laden sie als Float32 hoch, also macht es keinen Sinn, sie mit doppelter Genauigkeit zu halten.

Leider habe ich immer noch Wackeln auf einem iPad Mini3 mit pixi4.4.1.
Ich setze PIXI.settings.PRECISION = 'highp' manuell, sollte ich sonst noch etwas tun?

Sehen Sie eine Verfallswarnung in der Konsole? Wenn ja, dann verwenden Sie wirklich 4.4.1.

Was ist Ihr Anwendungsfall? Nur ein paar Sprites in einer Stage?

Ja, ich sehe die Verfallswarnung Bitte verwenden Sie PIXI.settings.PRECISION_FRAGMENT.
Mein Test hat nur 1 AnimatedSprite, das mit 24 fps (Geschwindigkeit 0,4) abgespielt wird.
Die Animation wurde mit TexturePacker erstellt und die Basistexturabmessungen sind POT (2048x2048)
In 4.4.1 wackelt er weniger als vorher, aber es ist immer noch ein spĂŒrbares Zittern.

Und was ist, wenn Sie den Pixi-Picture-Renderer dafĂŒr verwenden? FĂŒgen Sie einfach dieses hinzu: https://github.com/pixijs/pixi-picture/tree/master/bin und schreiben Sie

sprite.pluginName = 'picture';

Toll! Mit Pixi-Bild sieht es perfekt aus :)
Das ist also ein alternativer Sprite-Renderer?
In welchen FĂ€llen sollten wir es verwenden? (abgesehen von diesem offensichtlichen Fall). Kann es als allgemeiner Renderer verwendet werden (unterstĂŒtzt Multi-Textur-Batching) oder ist es eher eine Sache fĂŒr einen bestimmten Zweck?

Dann weiß ich, was mit dem Haupt-Sprite-Renderer nicht stimmt. Pixi-Bild ist eine dumme Sache, die ĂŒberhaupt nicht gestapelt ist, aber Randartefakte reduziert und Überlagerungs- / Hardlight-Mischmodi unterstĂŒtzt.

Der Hauptunterschied besteht darin, wie UV-Koordinaten ĂŒbergeben werden. Der Haupt-Sprite-Renderer verwendet Uint16, wĂ€hrend Picture wie alle anderen Plugins Float's verwendet.

FYI:
PIXI.settings.PRECISION_FRAGMENT = 'highp';
löst die wackeligen ios-animationen fĂŒr mich ohne irgendwelche plugins

ps - @ivanpopelyshev , Sie haben PRECISION_VERTEX standardmĂ€ĂŸig auf 'highp' gesetzt, um dieses Problem zu lösen, aber vielleicht haben Sie das falsche gewĂ€hlt? Irgendwelche Nachteile fĂŒr mein Spiel, um es wieder auf „Mediump“ herunterzustufen?
pps - sollten wir es so machen, dass jede 'highp'-Einstellung auf 'mediump' herabgestuft wird, wenn der Legacy-Modus aktiviert ist?

Ich habe das gleiche Problem und verwende Pixi v4.6.2. Es ist sehr kritischer Fehler fĂŒr mich. @ivanpopelyshev , hat jemand dieses Problem gelöst?

PIXI.settings.PRECISION_FRAGMENT = 'highp'
bevor Sie den Renderer erstellen

Denken Sie daran, dass einige GerĂ€te dies nicht unterstĂŒtzen und es besser ist, Highp nur auf bestimmten GerĂ€ten zu aktivieren, auf denen es zu Wackeln kommt.

Verwenden Sie außerdem das Pixi-Picture-Plugin und sprite.pluginName='picture' , wenn Sie das Problem fĂŒr eine kleine Anzahl von Objekten beheben möchten.

Wenn das Problem nur darin besteht, dass Sprites unter IOS wackeln, dann ja, machen Sie ein "wenn ios, dann setzen Sie das PrÀzisionsfragment auf hoch".
Wenn es nicht ios ist, ist möglicherweise das Bild-Plugin erforderlich. Aber es war nicht nur fĂŒr meine iOS-Probleme :)

@ivanpopelyshev , @themoonrat danke, es funktioniert.

Dieser Thread wurde automatisch gesperrt, da es nach seiner Schließung keine AktivitĂ€ten mehr gegeben hat. Bitte öffnen Sie ein neues Problem fĂŒr verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

zcr1 picture zcr1  Â·  3Kommentare

YuryKuvetski picture YuryKuvetski  Â·  3Kommentare

madroneropaulo picture madroneropaulo  Â·  3Kommentare

gigamesh picture gigamesh  Â·  3Kommentare

SebastienFPRousseau picture SebastienFPRousseau  Â·  3Kommentare