Comment répéter la texture comme GL_REPEAT?
J'ai une maison modèle dans mon jeu, et j'ai quelques matériaux pour la maison de la géométrie. Il est un matériau pour le mur de la maison, et j'ai une texture de carte-image pour montrer les briques.
var mat = new THREE.MeshPhongMaterial( {
ambient: 0x969696,
map: THREE.ImageUtils.loadTexture( 'textures/G/G0.jpg' ),
overdraw: true,combine: THREE.MultiplyOperation
} );
De cette manière ci-dessus, la texture apparaît comme GL_CLAMP
je veux qu'elle affiche comme GL_REPEAT
.
Que dois-je faire?
Si vous ne pouvez pas voir les images de vérifier cette.
OriginalL'auteur user1497753 | 2012-07-03
Vous devez vous connecter pour publier un commentaire.
J'ai posté un travail complet exemple:
http://stemkoski.github.com/Three.js/Texture-Repeat.html
La partie pertinente de l'exemple de code est:
Je l'ai.C'est juste de la même manière! L'image que j'utilisais est à une taille de 120*120 , je l'ai changer en 128*128, donc le problème est résolu!Peut-être que la taille de l'image doit à 128*128 et 256*256 ou quelque chose si vous voulez voir "répéter"
Oui, afin de reprendre les fonctionnalités de travailler les dimensions de l'image doit être une puissance de 2.
OriginalL'auteur Lee Stemkoski
Il est appelé
TROIS.RepeatWrapping
. LeloadTexture
par défautTHREE.ClampToEdgeWrapping
(voir ctor la fonction à partir du lien précédent). Ne sais pas si vous pouvez utiliser lacallback
(parce quethis
dans le JS est un peu bizarre (ressemble à des points à la création deImage
, pas la création d'Texture
)). Signature:Mieux vous juste le nom de la texture localement et de définir les modes de transition manuellement:
Dirait que vous êtes ne va pas loin avec threejs sans regarder le code...
Ne sais pas, je vais essayer de le faire fonctionner. La texture doit être une puissance de deux, voir WebGLRenderer, l'. 5721.
J'ai eu un problème similaire, j'ai mis à l'échelle d'un cube et la texture est étirée. Pour éviter cela, vous devez définir la nouvelle dimension du cube dans le
render()
comme ça:texture.repeat.set( 2*cWidth, 2*cHeight );
(puis la texture se comporte comme un non ajustée motif). Espérons que cela aide.OriginalL'auteur Stefan Hanke
Image doit être 8x8, 16x16, 32x32, 128x128, 256x256, 512x512, etc.
Et tous en train de travailler.
=)
tu veux dire un 8x512 serait de travailler ainsi?
Qui est correct.
OriginalL'auteur Ilya