关山初度尘未洗,策马扬鞭再奋蹄!这篇文章主要讲述Opengl es Android 3D 手指触控旋转object相关的知识,希望能为你提供帮助。
明确原理:
先确定一下OpenGL里面的坐标为:x轴正方向为屏幕向右,y轴正方向为屏幕向上,z轴正方向为屏幕由里向外。
当手指在X轴方向上移动时,画面中物体应绕Y轴方向旋转,则为gl.glRotatef(Angle,0,1,0);
当手指在Y轴方向上移动时,画面中物体应绕X轴方向旋转,则为gl.glRotatef(Angle,1,0,0);
【Opengl es Android 3D 手指触控旋转object】除此之外,android中屏幕响应手势移动所应用的function为:onTouchEvent.
下面展示代码:
private final float TOUCH_SCALE_FACTOR = 180.0f / 320;
renderer = new NewRender();
public boolean onTouchEvent(MotionEvent e) { switch (e.getAction()) { case MotionEvent.ACTION_DOWN: ypos = e.getY(); xpos = e.getX(); return true; case MotionEvent.ACTION_MOVE: float dy = e.getY() - ypos; //计算触控笔Y位移 float dx = e.getX() - xpos; //计算触控笔X位移 renderer.center.mAngleX = dy * TOUCH_SCALE_FACTOR; //设置沿x轴旋转角度 renderer.center.mAngleY = dx * TOUCH_SCALE_FACTOR; //设置沿y轴旋转角度 requestRender(); //重绘画面 return true; }return true; }
NewRender()是我继承Renderer创建的一个class.
renderer.center.mAngleX = dy * TOUCH_SCALE_FACTOR; //设置沿x轴旋转角度 renderer.center.mAngleY = dx * TOUCH_SCALE_FACTOR; //设置沿y轴旋转角度
center.mAngleX 和 center.mAngleY是指我的Object(center)的旋转角度。
在center中,我的旋转角度设置为:
gl.glRotatef(mAngleX, 1, 0, 0); //旋转 gl.glRotatef(mAngleY, 0, 1, 0);
gl.glRotatef(mAngleZ, 0, 0, 1);
推荐阅读
- Android Fragment生命周期及静态加载
- Android调用系统分享功能以及createChooser的使用
- Android自定义控件 芝麻信用分雷达图
- Android之IPC(aidl)
- Android或者Java发送Http自动重发请求的解决方案
- Android Spans介绍(转)
- Android View的绘制流程三部曲 —— Measure
- Android4.0的Alertdialog对话框,设置点击其他位置不消失
- android WindowManager解析与骗取QQ密码案例分析