Назначить загруженный 3D-объект переменной - вернуть undefined - PullRequest
0 голосов
/ 16 июня 2020

Я написал функцию для загрузки 3D-объекта тремя. js.

Я хочу, чтобы эта функция возвращала 3D-объект при загрузке, но я все равно получил undefined, что бы я ни делал.

function load3DObject(url, meshMaterial) {
  let mesh;
  let url3DObject = url;
  let Object3dMaterial = meshMaterial;

  loader.load(
    url3DObject,
    function(gltf) {
      let ArrowModel = gltf.scene;

      mesh = new THREE.Mesh(ArrowModel, Object3dMaterial);

      mesh.castShadow = true; //default is false

      mesh.receiveShadow = false; //default

      scene.add(mesh);

      scene.updateMatrixWorld(true);

      Objects.push(mesh);
    },
    undefined,

    function(error) {
      console.error(error);
    }
  );

  console.log(mesh);

  return mesh;
}

1 Ответ

0 голосов
/ 17 июня 2020

Это потому, что загрузчик асинхронный. Вы вызываете функцию load, которая вызывает функцию обратного вызова, когда она выполняется, но вы возвращаете me sh сразу после этого, а обратный вызов еще ничего не сделал. Я не знаю, как вы можете добиться этого должным образом, возможно, есть более опытные js разработчики, которые могут помочь с этим.

...