Three.js Mithilfe von 2D-texture\sprite-animation (planeGeometry)
Ich bin ganz neu in html5 und three.js. Ich habe experimentiert ein bisschen mit ihm, und im Grunde, was ich tun wollen ist zu haben ein Gitter (ich bin mit planeGeometry, als das tutorial, ich folgte es verwendet). Das Netz zeigt verschiedene Texturen, das kann sich später noch ändern.
Hier ist, was mein code sieht wie folgt aus:
angelTexture = THREE.ImageUtils.loadTexture("images/textures/chars/angel/angel.png");
angelTexture.offset.x = -0.75;
angelTexture.offset.y = -0.75;
angelMesh = new THREE.Mesh( new THREE.PlaneGeometry(79, 53, 79, 53), new THREE.MeshBasicMaterial( { map: angelTexture, wireframe: false } ));
angelMesh.position.x = 0;
angelMesh.position.y = 0;
scene.add(angelMesh);
Das problem ist, dass wenn ich ausgeglichen, die Masche scheint groß genug zu zeigen, alle anderen Sprites (ich verwende die textur als 2D-Sprite, dass ich Ausgleich zu animieren). Das Ergebnis ist ziemlich katastrophal und ich bin immer noch herauszufinden, wie man Steuern, wie groß das Netz ist, so dass es zeigt nur eine Momentaufnahme des Sprites. Alle meine versuche scheinen nur, um die Größe der Maschen sowie die zugrunde liegende Textur und zeigt immer noch alle Sprites.
Kann mir jemand zeigen in die richtige Richtung? Vielen Dank im Voraus.
...
Mein Freund kam mit einer Lösung...
Ich habe die repeat-Eigenschaft.
angelTexture = THREE.ImageUtils.loadTexture("images/textures/chars/angel/angel.png");
angelTexture.offset.x = -0.75;
angelTexture.offset.y = -0.75;
angelTexture.repeat.x = 0.25;
angelTexture.repeat.y = 0.25;
scene.add(angelMesh);
Hoffe, das hilft anderen mit dem gleichen problem.
- Mein Freund kam mit einer Lösung... ich habe die repeat-Eigenschaft. Siehe oben für die Erklärung Bearbeiten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte die gleiche Frage vor einer Weile, und so habe ich geschrieben, ein vollständiges Beispiel zu animieren, mit einem spritesheet als textur für ein PlaneGeometry, und dann aktualisieren Sie die textur in regelmäßigen Abständen -- überprüfen Sie heraus das Beispiel bei
http://stemkoski.github.io/Three.js/Texture-Animation.html
und anzeigen der kommentierte source-code für die zusätzliche Erklärung.
Habe ich festgestellt, in meinem Kommentar zu Lee Stemkoski, dass spritesheets, die mehr als eine Zeile funktionieren nicht, das gleiche bei Verwendung der neueren
THREE.TextureLoader()
.Ich bin mit dem folgenden 4x4-sprite in meinen tests.
Ohne änderung Lee Stemkoski ist
TextureAnimator
Funktion, vorausgesetzt, Sie haben eine 16-Kachel spritesheet.Die animierte textur rückwärts läuft.
Codepen-Demo
So, ich habe meine eigenen, die ich nennen ???
THREE.SpriteSheetTexture
???- Und was Sie darüber wissen müssen
imageURL
ist die URL Ihrer spritesheetframesX
ist, wie viele Bilder passen entlang der x-Achse (Links und rechts)framesY
ist, wie viele Bilder passen entlang der y-Achse (oben und unten)delay
ist, wie lange es die textur wartet, um zum nächsten frame_endFrame
ist optional - Wie viele Bilder sind es (im Fall es nicht verwenden eine volle Zeile)Dass alles so aussieht
Und es gab viel Jubel!!!
Codepen-Demo Hier