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);

除此之外,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); 
时间: 2024-10-06 00:39:24

Opengl es Android 3D 手指触控旋转object的相关文章

android点滴之触控相关知识点(持续更新)

1.检查当前屏幕有多少个触摸点. 使用MotionEvent的getPointerCount()方法. 2.多点触控下,触摸的状态的检测 MotionEvent类中方法getActionMasked(),这个方法可以检查触摸的状态: 当只有一个触摸点时(只用一根手指触摸屏幕),按下是0,起来是1,移动是2: 当触摸点多于1时(多根手指触摸屏幕),按下是5,起来是6,移动是2: 3.多点触控下,每个触点的分类处理 多点触摸时 假如是第i个点 int x = event.getX(i); int y

Android实现多点触控,自由缩放图片

Android多点触控涉及到的知识点 1.ScaleGestureDetector 2.OnScaleGestureListener 3.Matrix 4.OnTouchListener 四个知识点需要了解一下,需要注意的是Matrix在内存中是一个一维数组,操控图片的Matrxi是一个3X3的矩阵,在内存中也就是一个大小为9的一维数组. 实现多点触控,自由变化图片 1. ImageView的基础上继承 2.因为要在图片加载完成就获取到相关的属性,所以实现OnGlobalLayoutListen

【OpenGL ES】关于VBO(Vertex Buffer Object)的一些坑——解析一些关于glBuffer的函数

最近在写毕设的时候用到OpenGL ES中的VBO,由于对一些接口用到的变量不了解被坑得很惨,在此记录一下防止以后再被坑. 使用VBO的好处在此就不多说了,在Java中操作VBO绘图涉及到的OpenGL接口主要有以下几个: 1. void glGenBuffers(int n, int[] buffers, int offset) 向OpenGL ES申请开辟新的VBO,并通过buffers数组获取VBO handle,handle的类型为整型. int n 申请的VBO个数 int[] buf

Unity 游戏移植与手指触控识别-JDK 安装与环境参数配置

目前各游戏公司在使用Unity3D开发的游戏产品中,一般都不会仅仅停留在PC 端Windows 平台的游戏发布与运营,而是面向所有主要的游戏平台,尤其以目前的移动端Android与IOS 平台为主. 由于Android平台的开放性与普遍性,本文主要探讨此平台的环境配置与搭建过程.Android 是运行在手机上的目前全世界最大众化的操作系统,由Google 公司研发. Android平台环境配置主要分为三大步骤: 1: JDK安装与环境参数配置. 2: Android虚拟机的安装与配置. 3: U

Android OpenGL ES 开发教程 从入门到精通

From:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ES 简明开发教程一:概述 Android OpenGL ES 简明开发教程二:构造OpenGL ES View Android OpenGL ES 简明开发教程三:3D绘图基本概念 Android OpenGL ES 简明开发教程四:3D 坐标变换 Android OpenGL ES 简明开发教程五

[转]Android OpenGL ES 开发教程 从入门到精通

本文转自:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ES 简明开发教程一:概述 Android OpenGL ES 简明开发教程二:构造OpenGL ES View Android OpenGL ES 简明开发教程三:3D绘图基本概念 Android OpenGL ES 简明开发教程四:3D 坐标变换 Android OpenGL ES 简明开发教程五

Android多点触控技术

1 简介 Android多点触控在本质上需要LCD驱动和程序本身设计上支持,目前市面上HTC.Motorola和Samsung等知名厂商只要使用电容屏触控原理的手机均可以支持多点触控Multitouch技术,对于网页缩放.手势操作上有更好的用户体验. 在Android平台上事件均使用了MotionEvent对象方式处理,比如开始触控时会触发ACTION_DOWN,而移动操作时为 ACTION_MOVE,最终放开手指时触发ACTION_UP事件.当然还有用户无规则的操作可能触发ACTION_CAN

Android开发实例之多点触控程序

智能终端设备的多点触控操作为我们带来了种种炫酷体验,这也使得很多Android开发者都对多点触控程序的开发感兴趣.实际上多点触控程序的实现并不是那么遥不可及,而是比较容易.本文就主要通过一个实例具体讲解多点触控程序的实现. 首先来了解一下Android中多点触控的原理. Android多点触控在本质上需要LCD驱动和程序本身设计上支持,目前市面上HTC.Motorola和Samsung等知名厂商只要使用电容屏触控原理的手机均可以支持多点触控Multitouch技术,对于网页缩放.手势操作上有更好

Android多点触控(图片的缩放Demo)

本文主要介绍Android的多点触控,使用了一个图片缩放的实例,来更好的说明其原理.需要实现OnTouchListener接口,重写其中的onTouch方法. 实现效果图: 源代码: 布局文件: activity_main: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools&quo