我需要从鼠标坐标运行光线投射并检查一组三个 CSS3DObject 对象上的交叉点。
这是功能:
RayCastCheck = function(event, objects){
var vector = new THREE.Vector3((event.clientX / window.innerWidth)*2 - 1, -(event.clientX / window.innerHeight )*2 + 1, 0.5);
new THREE.Projector().unprojectVector( vector, camera);
var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
var intersects = raycaster.intersectObjects(objects);
console.log(intersects.length);
};
objects 参数是一个数组css3dobjects
。我可以使用类似的功能将场景中的水滴定位到正确的鼠标位置,因此我相信我对世界空间中鼠标点的计算是正确的。这导致人们相信 Raycaster 不会检查交叉路口css3dobjects
。
我的 css3dobjects 通常以 div 作为其元素来构造。
createObject = function(){
var element = document.createElement("div");
var obj = new THREE.CSS3DObject(element);
scene.add(obj);
}
我的场景是通过这个函数创建的
//global
var scene;
var camera;
var renderer;
createScene = function(){
camera = new THREE.PerspectiveCamera( 75, 400 / 600, 1, 1000 );
camera.position.z = 500;
scene = new THREE.Scene();
renderer = new THREE.CSS3DRenderer();
renderer.setSize(400, 600);
$(#body).appendChild(renderer.domElement);
}
场景中是否拥有启用光线投射所需的所有元素?
是否可以使用 raycasting 进行光线css3dobjects
投射css3drenderer
?
谢谢您的帮助