我已经尝试通过创建网格并将它们作为更大几何图形的一部分来改进我的项目的渲染时间,并且将单个几何图形作为我添加到场景中的对象。我认为我仍然可以通过一组原始网格来管理对象的拾取,并将它们传递给光线投射器。我使用了以下代码:
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 包含原始的单个网格,我动态创建一个数组来指定我想从中选择哪些对象。不幸的是 intersects 是空的。
如果我稍微修改我的项目,以便将所有这些 mesh_entities 单独添加到场景中,那么上面的代码就可以工作并且我可以成功选择对象。不幸的是,整个场景渲染得很慢。
有什么好方法(或一些好方法)让我成功地检查与光线的交点,而不减慢我的渲染速度?
谢谢!