我试图确定空间中的某个点是否对相机可见或隐藏在场景中其他对象后面。我通过从相机位置向空间中的该点投射光线并测试该光线是否与一组可相交的对象相交来实现此目的。
我的问题是,在相机位置本身与可相交对象集中的一个对象相交之前,不会发生相交。
我创建了一个 jsfiddle,其中如果检测到交叉点,则会从相机位置到我正在测试可见性的空间位置绘制一条线。目前我认为,该线仅在相机位置与可相交对象集相交的特定点处绘制。
如何让相交按应有的方式进行注册,而不必使相机位置与可相交对象集中的对象相交?
代码:
var container;
var camera, controls, scene, renderer;
init();
animate();
function init() {
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000);
camera.position.z = 1000;
controls = new THREE.OrbitControls(camera);
controls.rotateSpeed = 1.0;
controls.zoomSpeed = 1.2;
controls.panSpeed = 0.8;
controls.noZoom = false;
controls.noPan = false;
controls.staticMoving = true;
controls.dynamicDampingFactor = 0.3;
controls.keys = [65, 83, 68];
controls.addEventListener('change', render);
// world
scene = new THREE.Scene();
var testObject_G = new THREE.CubeGeometry(100, 100, 5);
var testObject_M = new THREE.MeshBasicMaterial({ …Run Code Online (Sandbox Code Playgroud)