Advertisement
Guest User

Untitled

a guest
May 24th, 2016
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. glm::dmat4 LookAt(const glm::vec3& pos, const glm::vec3& look, const glm::vec3& up) {
  2.  
  3. glm::dmat4 cameraToWorld;
  4. // Initialize fourth column of viewing matrix
  5. cameraToWorld[0][3] = pos.x;
  6. cameraToWorld[1][3] = pos.y;
  7. cameraToWorld[2][3] = pos.z;
  8. cameraToWorld[3][3] = 1;
  9.  
  10. glm::vec3 dir = glm::normalize(look - pos);
  11. glm::vec3 left = glm::normalize(glm::cross(glm::normalize(up), dir));
  12. glm::vec3 newUp = glm::cross(dir, left);
  13.  
  14. cameraToWorld[0][0] = left.x;
  15. cameraToWorld[1][0] = left.y;
  16. cameraToWorld[2][0] = left.z;
  17. cameraToWorld[3][0] = 0.;
  18. cameraToWorld[0][1] = newUp.x;
  19. cameraToWorld[1][1] = newUp.y;
  20. cameraToWorld[2][1] = newUp.z;
  21. cameraToWorld[3][1] = 0.;
  22. cameraToWorld[0][2] = dir.x;
  23. cameraToWorld[1][2] = dir.y;
  24. cameraToWorld[2][2] = dir.z;
  25. cameraToWorld[3][2] = 0.;
  26.  
  27. return glm::inverse(cameraToWorld);
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement