Advertisement Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

117 Neutral

About Hattraz

  • Rank

Personal Information

  • Role
  • Interests
  1. Hattraz

    Screen Coords to World Coords

    It looks like normalization was part of the problem, and the adjustment to the 4th component of the screenPos helped save me some time from troubleshooting more.   Thank you! =)
  2. I am trying to convert screen coords to world cords so that I can move an object with the mouse cursor in C++ using glew and glfw. I've been following an article on raycasting, which gets me part of the way.   In my program, I am able to move the object but it either moves too far or too little.     The code I have right now is:   Projection/View Declaration ... GlobalProjection = glm::perspective(1.0f, 4.0f / 3.0f, 1.0f, 1024.1f); GlobalView = glm::lookAt( glm::vec3(0, 0, 1024.0f), // Camera location glm::vec3(0, 0, 0), // Where camera is looking glm::vec3(0, 1, 0) // Camera head is facing up ); ... Transform Function glm::vec3 Application::viewToWorldCoordTransform(int mouse_x, int mouse_y) { double x = 2.0 * mouse_x / 1024 - 1; double y = 2.0 * mouse_y / 768 - 1; glm::mat4 ProjectView = GlobalProjection * GlobalView; glm::mat4 viewProjectionInverse = inverse(ProjectView); glm::vec4 screenPos = glm::vec4(x, -y, -1.0f, -1.0f); glm::vec4 worldPos = viewProjectionInverse * screenPos; return glm::normalize(glm::vec3(worldPos)); } I have a loose understanding of how this all works, and I get lost when inverse is used.   If there's any existing code out there that I can get referred to or if someone can point out where I'm going awry I would appreciate it.
  • Advertisement

Important Information

By using, you agree to our community Guidelines, Terms of Use, and Privacy Policy. is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!