我沒有更新我的系統中的three.js庫。今天,我更新了three.js文件。但是我遇到了這個錯誤:「Uncaught TypeError:Object#has no method'traverseHierarchy'」。Three.js SceneUtils沒有遍歷層次!它在哪裏?
我已經用它檢測路口: 在線代碼是在這裏:https://dl.dropbox.com/u/44791710/test/simple2.html
function Intersect(event) {
event.preventDefault();
var mousex = (event.clientX/window.innerWidth) * 2 - 1;
var mousey = -(event.clientY/window.innerHeight) * 2 + 1;
var vector = new THREE.Vector3(mousex, mousey, 1);
var toIntersect = [];
THREE.SceneUtils.traverseHierarchy(scene, function (child) {
if (child instanceof THREE.Mesh) {
toIntersect.push(child);
}
});
var projector = new THREE.Projector();
projector.unprojectVector(vector, camera);
var ray = new THREE.Raycaster(camera.position,vector.sub(camera.position).normalize());
var intersects = ray.intersectObjects(toIntersect);
if (intersects.length > 0) {
for (var j = 0; j < intersects.length ; j++){
target = intersects[j].object;
console.log('Intersects at ' + mouse.x + '/' + mouse.y + ':');
for(var i = 0, m = intersects.length; i<m; i++){
console.log(intersects[i].object.id, intersects[i]);
}
}
}
}
我需要做什麼樣的變化? 謝謝。
它被稱爲traverse()掛在Object3D上。 – gaitat 2013-03-23 07:25:31
我是新手,並不明白你的意思!你能否詳細說明一下?!我檢查了THREE.SceneUtils和THREE.Object3D,但沒有任何遍歷()!謝謝。 – mbehnaam 2013-03-23 07:56:40
如果您查看http://mrdoob.github.com/three.js/docs/57/#Reference/Core/Object3D上的文檔,您將在那裏看到traverse()函數作爲方法。 – gaitat 2013-03-23 08:37:01