Three.js自动旋转相机以聚焦对象
Three.js Auto rotate camera to focus on object
在three.js三维空间中,我有一些位置已知的MESH对象和一个相机对象。
我想实现的是:当我点击一个按钮时,相机会自动旋转和缩放(改变其位置),这样用户的视图就会聚焦在选定的对象上。选定对象的位置是已知的。
请给我一些如何做的建议?
尝试camera.lookAt( object.position );
你不需要使用四元数。
如果需要,您可以将相机移近。
四元数slerp是您平滑旋转到目标位置的朋友。您需要使用四元数(camera.useQuaternion=true)。
var newQuaternion = new THREE.Quaternion();
THREE.Quaternion.slerp(camera.quaternion, destinationQuaternion, newQuaternion, 0.07);
camera.quaternion = newQuaternion;
这应该平滑地旋转到目标旋转。也许你需要考虑最后一个参数。我不确定缩放。
以下是使用slerp和四元数旋转对象的片段:
//Initial and final quaternions
var startQ = new THREE.Quaternion(0,0,0,1);
var endQ = new THREE.Quaternion(0,1,0,0);
//Number of animation frames
var animFrames = 100;
//Pause between two consecutive animation frames
var deltaT = 1;
function goSlerping(acc) {
if(acc>=1) return;
//Let's assume that you want to rotate a 3D object named 'mesh'. So:
THREE.Quaternion.slerp(startQ, endQ, mesh.quaternion, acc);
setTimeout(function() {
goSlerping(acc + (1/animFrames));
}, deltaT);
}
goSlerping(1/animFrames);
因此,使用上面的脚本来旋转相机是完全相同的:您只需要将mesh.quaternion
更改为camera.quaternion
。
您可能想访问这里。。。https://threejsfundamentals.org/threejs/lessons/threejs-cameras.html我做了以下工作,并为我工作,以获得对用户定义坐标的关注。。。
camera.lookAt(0, 10, 0);
-----
-----
-----
controls.target.set(0, 10, 0);
controls.update();
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何使用json将对象列表从java转换为javascript
- 序列化数据属性中对象的最可靠方法
- 如何访问声音管理器2创建的声音对象
- FabricJs-限制主对象内添加对象的移动区域
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 值对象在某个变量发生更改后发生更改
- Three.js自动旋转相机以聚焦对象
- 聚焦SWF对象时停止滚动网页