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 );
}
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.
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.
animate()
sollte auch in der Rückruffunktion enthalten sein, um Konsolenfehler zu entfernen.