2012-11-22 5 views
2

J'essaie le code suivant:Three.js position modèle Problème

var loader = new THREE.JSONLoader(); 
var onGeometry = function(geom) { 
var tooth = new THREE.Mesh(geom, new THREE.MeshFaceMaterial()); 
tooth.position.set(xpos,ypos,0); 
teeth.push(tooth); 
scene.add(tooth); 
xpos+=10; 
}; 
loader.load('js/JsonModels/teeth1.js', onGeometry); 
loader.load('js/JsonModels/tooth2.js', onGeometry); 
loader.load('js/JsonModels/teeth1.js', onGeometry); 
loader.load('js/JsonModels/tooth2.js', onGeometry); 
loader.load('js/JsonModels/teeth1.js', onGeometry); 
loader.load('js/JsonModels/tooth2.js', onGeometry); 

Les modèles ne semble pas à l'écran dans l'ordre dans lequel je les charge qui dans mon cas est nécessaire puisque je positionnement des objets en fonction sur l'ordre dans lequel je les charge. Le problème était le même lorsque j'utilisais OBJLoader et utilisais son rappel pour ajouter les objets à la scène et les stocker dans un tableau. Alors, comment puis-je y parvenir, Comment puis-je afficher plusieurs objets sur les positions de l'écran que je peux spécifier. Une suggestion?

Répondre

2

Créer une usine de rappel pour lequel vous pouvez passer la position désirée et l'avoir enregistré dans une fermeture:

function getGeomHandler(posx) { 
    return function(geom) { 
    var tooth = new THREE.Mesh(geom, new THREE.MeshFaceMaterial()); 
    tooth.position.set(posx, posy, 0); 
    teeth.push(tooth); 
    scene.add(tooth); 
    }; 
} 
var posx = 123; 
var loader = new THREE.JSONLoader(); 
loader.load('js/JsonModels/teeth1.js', getGeomHandler(posx)); posx += 10; 
loader.load('js/JsonModels/tooth2.js', getGeomHandler(posx)); posx += 10; 
loader.load('js/JsonModels/teeth1.js', getGeomHandler(posx)); posx += 10; 
loader.load('js/JsonModels/tooth2.js', getGeomHandler(posx)); posx += 10; 
loader.load('js/JsonModels/teeth1.js', getGeomHandler(posx)); posx += 10; 
loader.load('js/JsonModels/tooth2.js', getGeomHandler(posx)); posx += 10; 
+0

TNX beaucoup pour la réponse rapide. Laissez-moi essayer. :) – ZedBee

+0

D'où vient "posy" dans "tooth.position.set (posx, posy, 0)"? –

+1

@BartekKosa: Vraisemblablement de quelque part en dehors de l'extrait de code. xpos/ypos non défini dans l'exemple de la question d'origine. – Tapio

Questions connexes