Estoy creando un sitio web cargando modelos gltf 3d. Quiero cargar más modelos usando loop.
const loader = new GLTFLoader() //.setPath( 'models/gltf/DamagedHelmet/glTF/' ); .setPath( 'resources/' ); const resourceData = ["Learning Bee1","Learning Bee2","Learning Bee3"]; //const l = resourceData.length; for(let i=0; i<resourceData.length;i++){ let oResource = resourceData[i]; let sModelName = oResource + ".gltf"; loader.load( sModelName, function ( gltf ) { gltf.scene.traverse( function ( child ) { if ( child.isMesh ) { roughnessMipmapper.generateMipmaps( child.material ); } }); }); scene.add( gltf.scene ); roughnessMipmapper.dispose(); render(); } });Cuando ejecuto esto, se muestra a continuación el error. ¿Cómo soluciono esto?
three.module.js:38723 Uncaught (en promesa) TypeError: No se pueden leer las propiedades de undefined (leyendo 'longitud') en three.module.js:38723
La sangría de su código es un poco descuidada y le hace cometer errores que podrían evitarse con un código más limpio.
gltf.scene fuera de los corchetes, donde no existe: loader.load( sModelName, function ( gltf ) { // gltf exists here }); // gltf does not exist here scene.add( gltf.scene );roughnessMipmapper antes de usarlo. Tenga en cuenta que la función de devolución de llamada en el cargador tarda un tiempo en ejecutarse, ya que está esperando para terminar de cargar su activo. loader.load( sModelName, function ( gltf ) { // 2. This happens later, after assets load roughnessMipmapper.generateMipmaps( child.material ); }); // 1. This gets called first roughnessMipmapper.dispose();