web-dev-qa-db-fra.com

utilisation de JSONLoader three.js

Il est tout simplement impossible de 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, il est donc difficile pour moi de diagnostiquer, mais j’imagine que quelque chose ne va pas pendant le rappel 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 );
}
22
rob-gordon

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.

25
WestLangley

pensait que cela pourrait aider tous ceux qui recherchent une réponse plus précise:

loader.onLoadComplete=function(){scene.add( mesh )} 

également pour la référence complète du chargeur, veuillez vous référer à ici:

https://threejs.org/docs/index.html#api/loaders/Loader

j'espère que cela t'aides.

5
ProllyGeek

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

0
Damjan Pavlica