[英]How to get angle of vector of camera movement
I have an animation of camera and I would to pass the angle of movement to 2d sprite shader. 我有一个摄影机的动画,我想将运动角度传递给2d精灵着色器。 I'm guessing I should to project these 2 vectors to camera and then compute the angle, but it doesn't work. 我猜我应该将这两个向量投影到相机,然后计算角度,但是它不起作用。
let prevCameraVector = null;
function tick() {
if(prevCameraVector && !prevCameraVector.equals(camera.position)) {
let vector1 = prevCameraVector;
let vector2 = new THREE.Vector3(camera.position.x, camera.position.y, camera.position.z);
vector1.project(camera);
vector2.project(camera);
let angle = vector1.angleTo(vector2);
uniforms.uRotate.value = angle;
}
prevCameraVector = new THREE.Vector3(camera.position.x, camera.position.y, camera.position.z);
}
I found an example with motion blur and took that algorithm. 我找到了一个运动模糊的示例,并采用了该算法。 It works now. 现在可以使用了。 http://www.zeropointnine.com/blog/motion-blur-shader/ http://www.zeropointnine.com/blog/motion-blur-shader/
let prevCameraVector = null;
function tick() {
if (prevCameraVector && !prevCameraVector.equals(camera.position)) {
let vector1 = prevCameraVector;
let vector2 = new THREE.Vector3(camera.position.x, camera.position.y, camera.position.z);
vector1.project(this.camera);
vector2.project(this.camera);
vector2.sub(vector1);
vector2.y *= window.innerWidth / window.innerHeight;
let angle = Math.atan2(vector2.x, vector2.y);
uniforms.uRotate.value = angle;
}
prevCameraVector = new THREE.Vector3(camera.position.x, camera.position.y, camera.position.z);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.