如题。我想知道让摄像机跟据某一点的Z轴旋转。请问下有什么方法?可知道camera的坐标以及camera的四元数,,,就是camera根据x,y,z轴旋转的角度。我设的是camera根据x轴旋转15度,z轴旋转45度。然后camera会看某一点。我想camera对着这个点旋转的功能~~

解决方案 »

  1.   

    就是想做个第3人称视角。跟3d mmorpg一样的camera.只不过焦点不一定只是人。有可能是草了。花了等等。
      

  2.   

    具体
    给你看段代码够具体了吧
    以下代码是基于OpenGL实现类似Maya的旋转场景的关键代码
    void CAnimationView::RotateScene(float fOffsetX, float fOffsetY)
    {
    float fVectorX, fVectorZ;
    CVector vtrSightLine; //设置视线矢量
    vtrSightLine.SetVector(m_glfTargetPosX, m_glfTargetPosY, m_glfTargetPosZ, m_glfViewPosX, m_glfViewPosY, m_glfViewPosZ); //旋转视线矢量及参考坐标轴
    vtrSightLine.Rotate(-m_glfCamDirectY*fOffsetX/360, CVector(0, 1, 0));
    m_vtrCamHor.Rotate(-m_glfCamDirectY*fOffsetX/360, CVector(0, 1, 0));
    //保存视线矢量与x轴,z轴夹角
    fVectorX = vtrSightLine.m_fVectorX;
    fVectorZ = vtrSightLine.m_fVectorZ;
    vtrSightLine.Rotate(-fOffsetY/360, m_vtrCamHor); //重置视点
    m_glfViewPosX = m_glfTargetPosX+vtrSightLine.m_fVectorX;
    m_glfViewPosY = m_glfTargetPosY+vtrSightLine.m_fVectorY;
    m_glfViewPosZ = m_glfTargetPosZ+vtrSightLine.m_fVectorZ; //修正相机指向
    if(fVectorX*vtrSightLine.m_fVectorX<0 || fVectorZ*vtrSightLine.m_fVectorZ<0)
    m_glfCamDirectY = -m_glfCamDirectY; //刷新窗口
    Invalidate();
    }
      

  3.   

    dx或者opengl中都有具体的函数可以实现楼主的想法,随你怎么旋转,只要保证摄像机的视角方向一直对着改点就可以了