我已經嘗試通過創建網格物體並將它們作爲較大幾何體的一部分來改善渲染時間,並且只將該單一幾何體作爲我添加的對象現場。我認爲我仍然可以通過創建一組原始網格來管理對象的拾取,並將它們傳遞給raycaster。我用下面的代碼:Three.js raycaster交點空對象不是場景的一部分
var vector = new THREE.Vector3((loc_x/window.innerWidth) * 2 - 1, - (loc_y/window.innerHeight) * 2 + 1, 0.5);
projector.unprojectVector(vector, camera);
var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
var objects = [];
var i = active_regions.length;
while (i--) {
objects = objects.concat(active_regions[i].mesh_entities);
}
var intersects = raycaster.intersectObjects(objects);
if (intersects.length > 0) {
console.log("Intersection: " + intersects);
}
所以在上面的代碼中,active_regions包含原始各個網格,和我即時創建一個數組來指定哪些對象我想從選擇。不幸的是相交出現空洞。
如果我稍微修改我的項目,以便將所有這些mesh_entities單獨添加到場景中,則上面的代碼可以工作,並且我可以成功選擇對象。不幸的是,整個場景呈現緩慢。
什麼是一種好的方法(或一些好的方法)讓我成功檢查與射線的交點,而不會減慢渲染速度?
謝謝!
難道你也只是使用未添加到不同的渲染器屏幕而不必在兩個渲染器之間翻轉? – sharpper
@sharper - 你找到了你的問題的答案? – AlvinfromDiaspar