(5)添加运动

在屏幕上绘制是OpenGL的基础能力,但是你也可以用其它的Android图形框架类来做,包括Canvas和Drawable。 但是OpenGL ES提供了额外的能力使得可以在三维空间移动和变换绘制对象,或者以其它独特的方式创建引人注目的用户体验。在本文中,将进行下一步使用OpenGL ES为形状添加旋转功能。

一、转动一个形状

使用OpenGL ES 2.0旋转绘图对象是相对简单的。在你的渲染器,创建另一个变换矩阵(旋转矩阵),然后将它与投影和相机视图变换矩阵合并:

public void onDrawFrame(GL10 unused) {
        float[] scratch = new float[16];

        // 绘制背景颜色
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);

        // 设置camera的位置(视图矩阵)
        Matrix.setLookAtM(mViewMatrix, 0, 0, 0, -3f, 0f, 0f, 0f, 0f, 1f, 0.0f);
        // 计算投影和视图变换
        Matrix.multiplyMM(mMVPMatrix, 0, mProjectionMatrix, 0, mViewMatrix, 0);

        // 绘制正方形
        mSquare.draw(mMVPMatrix);

        // 为三角形创建一个旋转

        // Use the following code to generate constant rotation.
        // Leave this code out when using TouchEvents.
        // long time = SystemClock.uptimeMillis() % 4000L;
        // float angle = 0.090f * ((int) time);

        Matrix.setRotateM(mRotationMatrix, 0, mAngle, 0, 0, 1.0f);

        // 把旋转矩阵合并到投影和相机矩阵  
        Matrix.multiplyMM(scratch, 0, mMVPMatrix, 0, mRotationMatrix, 0);

        // 绘制三角形
        mTriangle.draw(scratch);
    }

(1)OpenGL基础—模型变换

其实在前一章已经提到模型变换了,它主要提供了以下几种变换函数:
1. void glTranslate{fd}(TYPE x,TYPE y,TYPE z);
把当前矩阵与一个表示移动物体的矩阵相乘。这个移动矩阵由x,y和z值指定(或者在局部坐标系系统中移动相同的数量)。
2. void glRotate{fd}(TYPE angle,TYPE x,TYPE y,TYPE z);
把当前矩阵与一个表示移动物体(或物体的局部坐标系统)的矩阵相乘,以逆时针方向绕着从原点到点(x,y,z)的直线进行旋转。angle参数指定了旋转的度数。
3. void glScale{fd}(TYPE x,TYPE y,TYPE z);
把当前矩阵与一个表示沿各个轴对物体进行拉伸、收缩或反射的矩阵相乘。这个物体中的每个点的x、y和z坐标与对应的x、y和z参数相乘。使用局部坐标系统方法,局部坐标系统的轴将由x、y和z因子拉伸、收缩或反射,相关联的物体也根据它们进行变换。

(2)分析代码–模型变换

void setRotateM(float[] rm, int rmOffset,float a, float x, float y, float z);
与OpenGL的glRotate函数类似,差别主要是增加了偏移量 rmOffset,以及将旋转矩阵存储在参数float[] rm里。

(3)四维向量

查看坐标变换的代码时,可以发现所有相关的矩阵乘积都是四维的,而立体空间只有三个维度,主要是因为OpenGL关于颜色,位置的坐标都是四维的。
这里写图片描述
位置的w坐标其实是没有意义的,至于纹理坐标后续图像的绘制会涉及到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在将UR5机器人添加到现场总线时,首先需要确保机器人的硬件和软件兼容现场总线的通信协议。现场总线通常使用CAN(控制器局域网)或者以太网作为物理传输介质,并采用诸如Modbus、Profinet、EtherCAT等协议进行通信。 要实现UR5机器人的现场总线添加,一般需要以下步骤: 1. 确定现场总线的通信协议:根据实际情况,选择适合UR5机器人的现场总线通信协议,如Modbus或者EtherCAT。 2. 选择相应的硬件模块:根据所选择的通信协议,选择适配UR5机器人的现场总线通信模块。这些模块通常是可插拔的,可以直接连接到UR5机器人的控制器。 3. 连接硬件模块:将选定的现场总线通信模块连接到UR5机器人的控制器上,以确保机器人与现场总线之间的物理连接。 4. 配置和参数设置:根据现场总线的通信协议要求,对机器人的控制器进行配置和参数设置。这些设置包括通信地址、数据格式、通信速率等等。 5. 编写控制程序:根据实际需求,编写相应的控制程序,以实现机器人与现场总线之间的数据交换和通信。这些程序通常包括读写输入输出数据、设定机器人的状态和运动等功能。 通过以上步骤,我们可以成功地将UR5机器人添加到现场总线中,使其能够与其他现场设备进行数据交换和通信。这样,机器人就可以更好地融入现场自动化系统,并实现更高效的协同工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值