简体   繁体   English

如何获得相机运动向量的角度

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM