Advertisement

OpenGL交互方式Trackball的代码

阅读量:
复制代码

Trackball技术通过将屏幕中检测到的鼠标坐标映射至球体表面,从而识别出旋转轴线及相应的旋转角度。通过以下代码可以更清晰地理解其原理;

首先需要声明若干全局变量:

复制代码
 //camera transform variables

    
 int state = 0, oldX=0, oldY=0;
    
 float r_angle=0, dist = -2;
    
 glm::vec3 r_axis_local=glm::vec3(1.0f, 0.0f, 0.0f);
    
 glm::mat4 Tr;
    
 glm::mat4 R=glm::mat4(1.0);
    
 glm::mat4 MV,P,MVP;
    
    
    
    

将鼠标坐标值转换至区间(-1.0,1.0)之内

复制代码
 glm::vec2 scaleMouse(glm::vec2 coords, glm::vec2 viewport) {

    
     return glm::vec2( static_cast<float>(coords.x*2.f) / static_cast<float>(viewport.x) - 1.f,
    
              1.f - static_cast<float>

全部评论 (0)

还没有任何评论哟~