webentwicklung-frage-antwort-db.com.de

mithilfe von three.js JSONLoader

Nur Modelle, die in three.js Szene importiert wurden, können nicht angezeigt werden .. Die Geometrie sieht gut aus, aber das Modell wird nicht angezeigt, egal welches Material ich darauf anwende.

Ich bin neu in WebGL, daher ist es schwer für mich, dies zu diagnostizieren, aber ich schätze, dass beim JSONLoader-Callback etwas schief läuft.

Danke für alle Hilfe.

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

Sie fügen das Netz der Szene hinzu, bevor das Modell vollständig geladen ist.

Verschieben Sie die Linie

scene.add( mesh );

in die Loader-Callback-Funktion.

25
WestLangley

ich denke, das könnte jedem helfen, der nach einer genaueren Antwort sucht:

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

bitte beachten Sie auch die komplette Loader-Übersicht.

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

hoffe das hilft.

5
ProllyGeek

animate() sollte auch in der Rückruffunktion enthalten sein, um Konsolenfehler zu entfernen.

0
Damjan Pavlica