Javascript three.js控制台错误“;scene.getObjectByName(…)未定义;但一切似乎都很好?

Javascript three.js控制台错误“;scene.getObjectByName(…)未定义;但一切似乎都很好?,javascript,three.js,Javascript,Three.js,我得到控制台错误: TypeError: scene.getObjectByName(...) is undefined 在这两条线上: scene.getObjectByName('teapot').rotation.x += 0.005; scene.getObjectByName('teapot').rotation.y += 0.005; 我正在加载对象的相关代码如下所示: var loader = new THREE.OBJLoader(); loader.load('obj/t

我得到控制台错误:

TypeError: scene.getObjectByName(...) is undefined 
在这两条线上:

scene.getObjectByName('teapot').rotation.x += 0.005;
scene.getObjectByName('teapot').rotation.y += 0.005;
我正在加载对象的相关代码如下所示:

var loader = new THREE.OBJLoader();
loader.load('obj/teapot.obj', function(object) {

  object.traverse(function(child) {
    if (child instanceof THREE.Mesh) {
      child.material = phongMaterial;
    }
  });

  object.scale.x = 2;
  object.scale.y = 2;
  object.scale.z = 2;
  object.name = 'teapot';

  scene.add( object );
 });
场景本身只是一个简单的茶壶,旋转着,一切都在渲染,就我所见,一切都在正常运转

我只是想知道为什么会出错

var loader = new THREE.OBJLoader();
loader.load('obj/teapot.obj', function(object) {

  object.traverse(function(child) {
    if (child instanceof THREE.Mesh) {
      child.material = phongMaterial;
    }
  });

  object.scale.x = 2;
  object.scale.y = 2;
  object.scale.z = 2;
  object.name = 'teapot';

  scene.add(object);
  scene.getObjectByName('teapot').rotation.x += 0.005;
  scene.getObjectByName('teapot').rotation.y += 0.005;
});

您得到的是
场景。getObjectByName('teapot')==未定义
,因为您在将茶壶对象添加到场景之前调用它。调用内部加载回调,这样您将获得茶壶对象,然后向其添加旋转。

我认为您调用的是将茶壶对象添加到场景之前的两行。在加载回调中添加这两行。一切正常。已解决-刚刚意识到这是因为对象尚未加载。我添加了一个复选框,使其仅在加载后旋转。@Durga是的!正是这样,谢谢你!