2012-12-01 13 views
18

Semplicemente non è possibile visualizzare i modelli importati nella scena three.js. La geometria sembra buona ma il modello non viene visualizzato indipendentemente dal materiale che applico.utilizzando three.js JSONLoader

Sono nuovo in WebGL quindi è difficile per me diagnosticare, ma suppongo che qualcosa stia andando storto durante il callback JSONLoader.

Grazie per tutto l'aiuto.

var camera, scene, renderer, mesh, loader; 

init(); 
animate(); 

function init() { 

    camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 1, 10000); 
    camera.position.z = 1000; 

    scene = new THREE.Scene(); 

    loader = new THREE.JSONLoader(); 

    loader.load("scripts/model.js", function(geometry) { 
     mesh = new THREE.Mesh(geometry, new THREE.MeshNormalMaterial()); 
     mesh.scale.set(10, 10, 10); 
     mesh.position.y = 150; 
     mesh.position.x = 0; 
    }); 

    scene.add(mesh); 

    var ambientLight = new THREE.AmbientLight(0x555555); 
    scene.add(ambientLight); 

    var directionalLight = new THREE.DirectionalLight(0xffffff); 
    directionalLight.position.set(1, 1, 1).normalize(); 
    scene.add(directionalLight); 

    renderer = new THREE.WebGLRenderer(); 
    renderer.setSize(window.innerWidth, window.innerHeight); 

    document.body.appendChild(renderer.domElement); 

} 

function animate() { 

    requestAnimationFrame(animate); 

    mesh.rotation.x += 0.05; 

    renderer.render(scene, camera); 
} 
+0

il collegamento al modello su GitHub è interrotto: sei in grado di aggiornarlo a un nuovo URL? –

+0

modello js link rotto – Gus

risposta

23

Si sta aggiungendo la trama alla scena prima che il modello finisca il caricamento.

spostare la linea

scene.add(mesh); 

nella funzione loader callback.

+4

Sapevo che doveva essere qualcosa di così semplice. Grazie per aver dedicato del tempo a guardare il mio codice –

0

animate() dovrebbe anche essere nella funzione di richiamata, per rimuovere gli errori di console.