3d 计算当前视图中平面的角点

3d 计算当前视图中平面的角点,3d,three.js,3d,Three.js,我是一个3D编程新手,需要一些帮助 我有一个用户可以移动(使用OrbitControl)的XZ平面,每当用户单击(或移动)鼠标时,我都希望在当前可见的平面拐角处找到世界空间坐标(如minx、miny、maxz、maxz) 下面是一个简单的JSFIDLE来帮助说明这个问题 var摄影机、场景、渲染器、控件、平面; init(); 制作动画(); 函数init(){ 场景=新的三个。场景(); 摄像头=新的三个透视摄像头(45,window.innerWidth/window.innerHeig

我是一个3D编程新手,需要一些帮助

我有一个用户可以移动(使用OrbitControl)的XZ平面,每当用户单击(或移动)鼠标时,我都希望在当前可见的平面拐角处找到世界空间坐标(如minx、miny、maxz、maxz)

下面是一个简单的JSFIDLE来帮助说明这个问题

var摄影机、场景、渲染器、控件、平面;
init();
制作动画();
函数init(){
场景=新的三个。场景();
摄像头=新的三个透视摄像头(45,window.innerWidth/window.innerHeight,11000);
摄像机位置设置(0250500);
场景。添加(摄影机);
控制装置=新的三个控制装置(摄像机);
createPlane();
renderer=new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
document.body.addEventListener(“单击”,函数(){
//计算在当前视图中可见的平面的角点顶点
});
}
函数createPlane(){
var numOfXTiles=30;
numOfYTiles=30;
var geometry=新的三个平面几何体(numoftextiles*256,numOfYTiles*256,numoftextiles,numOfYTiles);
var材料=新的三网格基本材料({
线框:正确
});
平面=新的三个网格(几何体、材质);
平面旋转x=Math.PI/2;
场景。添加(平面);
}
函数animate(){
请求动画帧(动画);
render();
}
函数render(){
控件更新();
渲染器。渲染(场景、摄影机);

}
确定平面与平截头体角点相交位置的最简单方法是使用
光线投射器
从相机沿平截头体的每个边(角点)投射光线,并查看光线与平面相交的位置

var raycaster = new THREE.Raycaster();
var mouse = new THREE.Vector2();

...

document.body.addEventListener("click", function() {

    mouse.x = + 1; // use + 1 and - 1
    mouse.y = + 1; // use + 1 and - 1

    raycaster.setFromCamera( mouse, camera );

    var intersects = raycaster.intersectObjects( [ plane ] ); 

    if ( intersects.length > 0 ) {

        var geometry = new THREE.SphereGeometry( 10, 12, 6 );
        var material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
        var mesh = new THREE.Mesh( geometry, material );
        mesh.position.copy( intersects[ 0 ].point );
        scene.add( mesh );

    }

});
小提琴:

3.js r.88