Three.js求场景高度的问题

工程中导入一个地形,不知道它的高度,如何求出来呢,我们可以用射线求,射线和地形焦点的z值就是地形高度,下面是我写的代码片段,不能通用但是基本结构差不多。定义方向——创建raycaster——将方向向量转换成视点坐标系中——形成归一化的射线——和场景求交。

在此贴一个连接写的很好https://www.cnblogs.com/lst619247/p/9071233.html

let points = [];
let vertexes = [];
let directVector = new THREE.Vector3(0,0,-1); //这个是方向
let raycaster = new THREE.Raycaster();
raycaster.setFromCamera(directVector,this.viewer.getCamera()); //根据坐标吧坐标转换成标准坐标系中,并且在视点坐标系中形成射线,起点是相机,方向是上面相对相机的方向,并且是归一化的
let intersects = raycaster.intersectObjects(this.viewer.scene.terrainLayers);
if(intersects.length > 0) {
     points.push(intersects[0].point);
     vertexes.push(intersects[0].point.x);
     vertexes.push(intersects[0].point.y);
     vertexes.push(intersects[0].point.z);
}
carCameraHeight = intersects[0].point.z+4.0;



setFromCamera: function ( coords, camera ) {

			if ( ( camera && camera.isPerspectiveCamera ) ) {

				this.ray.origin.setFromMatrixPosition( camera.matrixWorld );
				this.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();

			} else if ( ( camera && camera.isOrthographicCamera ) ) {

				this.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera
				this.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );

			} else {

				console.error( 'THREE.Raycaster: Unsupported camera type.' );

			}

		}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值