2012-12-01 2 views
18

Vous ne pouvez pas voir les modèles importés dans la scène three.js. La géométrie semble correcte, mais le modèle ne s'affiche pas, quel que soit le matériau que je lui applique. Je ne connais pas encore WebGL, donc c'est difficile pour moi de diagnostiquer, mais je pense que quelque chose ne va pas pendant le rappel JSONLoader.en utilisant three.js JSONLoader

Merci pour toute aide.

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

le lien au modèle sur GitHub est cassé - pouvez-vous le mettre à jour à une nouvelle URL? –

+0

modèle js lien cassé – Gus

Répondre

23

Vous ajoutez le maillage à la scène avant la fin du chargement du modèle.

Déplacer la ligne

scene.add(mesh); 

dans la fonction de rappel du chargeur.

+4

Je savais que ça devait être quelque chose d'aussi simple. Merci d'avoir pris le temps de regarder mon code –

0

animate() devrait également être dans la fonction de rappel, pour supprimer les erreurs de console.

Questions connexes