三个js相机移动到点
three js camera movement to point
我实际上正在使用three.js开发一个网站。你可以在这里看到一个演示:https://c9.io/frescogusto/demi/workspace/demi_0.3.html它在画布上,可以在ios和android上查看。
问题是:如何将相机从其位置移动到已单击对象的位置?我必须在每个轴上使用翻译方法吗?或者有更快的方法吗?
提前感谢
pp
renderer.domElement.addEventListener('mousedown', function(event) {
event.preventDefault();
var vector = new THREE.Vector3(
renderer.devicePixelRatio * (event.pageX - this.offsetLeft) / this.width * 2 - 1,
- renderer.devicePixelRatio * (event.pageY - this.offsetTop) / this.height * 2 + 1,
0.5
);
projector.unprojectVector(vector, camera);
var raycaster = new THREE.Raycaster(
camera.position,
vector.sub( camera.position ).normalize()
);
var intersects = raycaster.intersectObjects(YOUR_CLICKABLE_OBJECTS);
if (intersects.length) {
camera.position = intersects[0].point;
// Alternatively, camera.position = intersects[0].object.position.clone();
}
}, false);
此代码:
- 在
mousedown
事件上注册侦听器 - 将二维屏幕空间中单击的位置投影到三维场景空间中的位置
- 从摄影机向单击方向投射一条假想线(射线)
- 检查是否有任何对象与该线相交;第一个相交的对象是单击的对象
- 将相机捕捉到单击的位置
如果你宁愿慢慢地将相机转换到点击的位置,而不是立即将其捕捉到那里,你可能需要查看TweenJS这样的tweening库来帮助你确定转换的时间。
(附言:我认为renderer.devicePixelRatio
只适用于WebGL渲染器。您可以为其他渲染器删除它。)
相关文章:
- 从移动相机拍摄图像并在上传前预览
- JavaScript访问移动相机的手电筒
- WebGL / Three.js - 由纹理着色的粒子在移动相机时不规则地闪烁
- 从网络应用程序中的网络摄像头或移动相机拍摄照片
- HTML5移动相机捕获
- 哪个相机将在移动设备中打开getUserMedia API?前部或后部
- 三个js相机移动到点
- Plupload:如何直接从相机上传(在移动设备上)
- 更新对象'相机移动时的几何图形会导致小故障-three.js
- 如何使用Matrix4.setLookAt在场景中移动相机
- 按下按钮时移动角色/相机的功能
- 如何在webgl中移动相机
- 使用TrackballControls移动光线时,相机位置错误
- 从移动相机读取文本或数字
- 相机到画布在移动应用程序
- 代码建议提供读取QR码与相机作品在桌面(不是移动)
- Three.js围绕对象(可能移动的对象)旋转相机
- HTML5移动捕获相机并生成预览框
- 移动相机在它面对的方向,用三ejs
- 使用/访问Android和iOS(移动)相机