J'ai importé mon Object3D comme ceci:Comment définir une texture sur un enfant Object3D Mesh
var globalObject; // this is a global object
var loader = new THREE.ObjectLoader();
loader.load('path/to/object3d.json', function(object) {
globalObject = object;
scene.add(globalObject);
});
Ce que je veux réaliser est que lorsqu'un utilisateur clique sur un bouton, que certains éléments de maillage de l'objet entier obtenir une texture. Je le fais comme ceci:
// on button click {
for(var i in globalObject.children) {
// apply to Mesh of interest {
var texture = THREE.ImageUtils.loadTexture('path/to/image.jpg');
globalObject.children[i].material = new THREE.MeshLambertMaterial({map: texture, needsUpdate: true});
} // end apply to Mesh of interest
}
} // end on button click
Le code ci-dessus semble fonctionner jusqu'à définir la texture. Le problème ici est que la texture semble un peu déformée. Il ressemble à ceci http://db.tt/S5VEsByd
Comment corriger ceci, de sorte que la pleine texture s'applique aux deux surfaces?
Il ressemble à votre coordonnées de l'objet de texture ne sont pas correctement définies. Où avez-vous trouvé les objets? Si vous le pouvez, vérifiez les coordonnées de texture de l'objet dans Blender ou le logiciel que vous avez utilisé pour les créer. – GuyGood
ouais, je pensais que quelque chose comme ça est possible. En fait, je ne suis pas un concepteur 3D et j'ai obtenu mon objet d'un designer. Existe-t-il un moyen de réinitialiser les coordonnées de texture à partir de three.js à certaines valeurs par défaut ou ces coeurs peuvent-ils uniquement être vérifiés dans un logiciel qui a été utilisé pour créer l'objet? – STFUn00b
Eh bien, il n'y a pas un moyen dont je suis actuellement au courant. Vous devrez le faire vous-même. Cochez cette réponse ici: https://github.com/mrdoob/three.js/issues/2065#issuecomment-6352320 Il génère un mappage planaire pour toutes les faces du plan X/Y. Vous auriez à faire ceci basé sur faceDirection pour obtenir un déballage automatique. D'où avez-vous obtenu l'obj, n'avez-vous besoin que de 1 obj pour être correct? Vous pouvez également essayer de reconstruire l'obj avec la géométrie standard de three.js qui a des coordonnées de texture correctes. – GuyGood