Three.js à l'Aide de texture 2D\sprite pour l'animation (planeGeometry)
Je suis assez nouveau en html5 et three.js. J'ai expérimenté un peu avec elle, et, fondamentalement, ce que je veux faire est d'avoir une Maille (je suis en utilisant planeGeometry, comme le tutoriel, j'ai suivi utilisé). Le Maillage montre de Textures différentes, qui peuvent changer plus tard.
Voici ce que mon code ressemble à ceci:
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);
Le problème est qu'à chaque fois que je compense, le Maillage semble assez grand pour montrer à tous les autres Sprites (je suis en utilisant la texture en 2D Sprite que je compense pour l'animer). Le résultat est assez catastrophique et je suis encore à essayer de comprendre comment contrôler la taille de la Maille est de sorte qu'il n'en montre qu'un instantané de l'image-objet. Toutes mes tentatives semblent seulement pour redimensionner la Maille ainsi que le sous-jacent de la Texture et de la affiche toujours tous les Sprites.
Quelqu'un peut me pointer dans la bonne direction? Merci à l'avance.
...
Mon ami est venu avec une solution...
J'ai raté la propriété répéter.
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);
Espère que cela aide les autres à avoir le même problème.
OriginalL'auteur Spolarium7 | 2013-04-16
Vous devez vous connecter pour publier un commentaire.
J'ai eu la même question il y a longtemps, et j'ai donc rédigé un exemple complet de l'animation à l'aide d'un spritesheet comme texture pour un PlaneGeometry, puis la mise à jour de la texture à intervalles réguliers -- découvrez l'exemple à
http://stemkoski.github.io/Three.js/Texture-Animation.html
et afficher le commentaire le code source pour plus d'explication.
Ce code a une faille. Je ne sais pas quand la faille a commencé, mais la texture est affiché dans le coin inférieur gauche de l'avion, et le code qui est censé pour vous permettre de contrôler le décalage en Y ne pas faire son travail. Je travaille pour mieux comprendre le problème et répondre une fois que je l'ai trouver.
OriginalL'auteur Lee Stemkoski
Je l'ai noté dans mon commentaire de Lee Stemkoski que spritesheets qui ont plus d'une ligne ne fonctionnent pas de la même lors de l'utilisation de la plus récente
THREE.TextureLoader()
.Je suis l'aide de la suite de 4x4 image sprite dans mes tests.
Avec aucune modification Lee Stemkoski de
TextureAnimator
fonction, en supposant que vous avez un de 16 tuiles spritesheet.La texture animée fonctionne à l'envers.
Codepen Démo
J'ai donc fait mon propre que j'appelle
THREE.SpriteSheetTexture
Et ce que vous devez savoir à ce sujet
imageURL
est l'URL de votre spritesheetframesX
est le nombre d'images à adapter le long de l'axe des x (gauche et droite)framesY
est le nombre d'images à adapter le long de l'axe y (haut et bas)delay
est combien de temps il la texture attend pour changer l'image suivante_endFrame
est facultatif - Combien de cadres sont là (dans le cas où elle ne marche pas, utilisez une ligne complète)Que tout ressemble à quelque chose comme ceci
Et il y avait beaucoup de joie!!!
Codepen Démo Ici
OriginalL'auteur Cmndo