【问题标题】:OpenGL ES2.0 rotate camera around its axisOpenGL ES2.0 围绕其轴旋转相机
【发布时间】:2017-11-04 21:09:47
【问题描述】:

我需要将相机绕其轴旋转几度。这怎么可能实现?我无法制定一个公式来计算新的lookX、lookY、lookZ。我将非常感谢您的帮助!

Matrix.setLookAtM(mViewMatrix, 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);

视频以防万一:Video

【问题讨论】:

  • 我想我找到了解决方案。如果 eyeZ -lookZ = 1,则等式:look[X or Y] = tan(角度)。如果需要回头看,那么 eyeZ -lookZ = -1。
  • 注意:如果中心在 x = 0 和 y = 0

标签: android opengl-es


【解决方案1】:

所以,解决方案是:

float deltaZ = 4; // for example 4, it can be any number
oglr.angleX += (downX-x)/10;
oglr.angleY += (y-downY)/10;
if (oglr.angleX > 90 && oglr.angleX < 270) oglr.lookZ = oglr.eyeZ + deltaZ;
else oglr.lookZ = oglr.eyeZ - deltaZ;
if (oglr.angleX < 0) oglr.angleX = 360+oglr.angleX;
if (oglr.angleX > 360) oglr.angleX = oglr.angleX%360;
oglr.lookX = oglr.eyeZ > oglr.lookZ ? (float)Math.tan(Math.toRadians(oglr.angleX))*(oglr.eyeZ-oglr.lookZ) + oglr.eyeX : (float)Math.tan(Math.toRadians(oglr.angleX-180))*(oglr.eyeZ-oglr.lookZ) + oglr.eyeX;
oglr.lookY = (float)Math.tan(Math.toRadians(oglr.angleY))*(Math.abs(oglr.eyeZ-oglr.lookZ)) + oglr.eyeY;
downX = x;
downY = y;

注意:oglr - OpenGLRenderer; x, y - MotionEvent.getX() 和 getY()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-22
    • 2018-08-03
    • 2010-09-22
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    相关资源
    最近更新 更多