Three.js从相机中提取以弧度为单位的旋转
Three.js extract rotation in radians from camera
我已经在四元数的概念上挣扎了一段时间,我认为这可能与这个特殊的挑战有关。
如果你知道three.js,你可能会熟悉等矩形全景视频的例子。我一直在尝试的是,简单地提取相机在任何给定时刻的旋转,以我理解的格式(弧度、度…)提取每个轴的旋转。理论上,我不应该简单地点击相机的旋转.x/y/z参数来找出这些参数吗?不过,我得到了奇怪的价值观。
看看这个例子:http://www.spotted-triforce.com/other_files/three/test.html
我在左上角输出相机的xyz旋转值,而不是预期值,数字在正值和负值之间来回跳动。
现在,这个示例没有使用任何可用的控制脚本。相反,它创建了一个向量来计算要查看的相机目标
function init() {
camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 1100 );
camera.target = new THREE.Vector3( 0, 0, 0 );
}
function onDocumentMouseDown( event ) {
event.preventDefault();
isUserInteracting = true;
onPointerDownPointerX = event.clientX;
onPointerDownPointerY = event.clientY;
onPointerDownLon = lon;
onPointerDownLat = lat;
}
function onDocumentMouseMove( event ) {
if ( isUserInteracting === true ) {
lon = ( onPointerDownPointerX - event.clientX ) * 0.1 + onPointerDownLon;
lat = ( event.clientY - onPointerDownPointerY ) * 0.1 + onPointerDownLat;
}
}
function onDocumentMouseUp( event ) {
isUserInteracting = false;
}
function update() {
lat = Math.max( - 85, Math.min( 85, lat ) );
phi = THREE.Math.degToRad( 90 - lat );
theta = THREE.Math.degToRad( lon );
camera.target.x = 500 * Math.sin( phi ) * Math.cos( theta );
camera.target.y = 500 * Math.cos( phi );
camera.target.z = 500 * Math.sin( phi ) * Math.sin( theta );
camera.lookAt( camera.target );
}
有人知道我得到的这些奇怪的值是什么吗?我如何提取正确的旋转值,然后在另一个对象上使用这些值来镜像运动?
如果设置
camera.rotation.order = "YXZ"
(默认值为"XYZ")Euler角度对您更有意义:
rotation.y
将是以弧度表示的摄像机航向
rotation.x
将是以弧度为单位的相机间距
rotation.z
将是相机的弧度
旋转将按该顺序应用。
three.js r.70
相关文章:
- 如果宽度是百分比,如何设置以px为单位的图像高度
- 如何将datetime转换为以毫秒为单位的epoch时间javascript
- 每小时倒计时一次,但以30分钟为单位
- 以天为单位计算年龄-Javascript
- 是否可以使用javascript获取以em为单位的窗口宽度
- 获取以屏幕像素为单位的旋转SVG元素的边界
- GridStack项的高度和宽度(以像素为单位)
- 有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间
- JQPlot's仪表-以针为单位显示值
- Moment.js unix时间戳,以分钟为单位显示以前的时间
- 从Javascript到C#获取正确的日期(以毫秒为单位)
- 远距离变换元素的宽度/高度(以像素为单位)
- jquery匹配以px为单位的样式字体大小的元素
- 以周为单位计算日期差异(Javascript)
- 以非像素为单位获取HTML DOM元素的CSS高度,在我的例子中是英寸
- Three.js从相机中提取以弧度为单位的旋转
- 为什么setInterval不是以千毫秒为单位
- JavaScript-从HTML img src中获取以字节为单位的大小
- 如何使用 JavaScript 获取以度为单位的 CSS 转换旋转值
- 获取相机的当前旋转(以度为单位)