我收到了控制台错误:
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 );
});
场景本身只是一个简单的茶壶旋转,一切都是渲染,并且尽我所能表现。
我只是想知道为什么会出错?
答案 0 :(得分:1)
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;
});
您将获得scene.getObjectByName('teapot') == undefined
因为您在将茶壶对象添加到场景之前调用了它。调用内部加载回调,这样你就会得到茶壶对象,然后向它添加旋转。