首页 > 其他分享 >OpenGL模型变换平移、缩放、旋转注意事项

OpenGL模型变换平移、缩放、旋转注意事项

时间:2024-10-18 11:45:55浏览次数:1  
标签:平移 scale 1.0 glm OpenGL 缩放 model

一、概述

  在OpenGL中,想要对物体(模型)进行操作,如:平移、缩放、旋转。其顺序不能错,不同的顺序会给出不同的结果

  网上的博客大家看过后要慎重使用,好多都是错误的,在实际项目中使用前最好先写demo进行验证,不然一旦整合到项目中,排错成本将会非常高。

  三者的顺序是:

    理论:先缩放、再旋转、然后平移

    实际:平移*旋转*缩放。ps:实际和理论是相反的,这个和projection*view*model是类似的。

  下面是一个简单的样例:将立方体平移到屏幕右下角。

  ps:物体的顶点坐标系是在-1.0~1.0之间。

  四个角的坐标分别为:

    右上角:(1.0f,1.0f)

    右下角:(1.0f,-1.0f)

    左下角:(-1.0f,-1.0f)

    左上角:(-1.0f,1.0f)

  所以物体变换的时候也是在--1.0f~1.0f区域变换

二、代码示例

  float scale = (float) mWidth / (float) mHeight;
    LOGE("scale:%f",0.5f/scale);

    glm::mat4 model = glm::mat4(1.0f);
    ///旋转、平移、缩放顺序不能反了
    model = glm::translate(model, glm::vec3(0.5f, -0.5f/scale, 0.0f));
    model = glm::rotate(model, 45.0f, glm::vec3(0.5f, 1.0f, 0.5f));
    model = glm::scale(model, glm::vec3(0.1f));

 

标签:平移,scale,1.0,glm,OpenGL,缩放,model
From: https://www.cnblogs.com/tony-yang-flutter/p/18473946

相关文章

  • Android OpenGL粒子特效
    在本篇,我们将开启一个新的项目,探索粒子的世界。粒子是一种基本的图形元素,它们通常被表示为一组点。通过巧妙地组合一些基础的物理效果,我们能够创造出许多令人惊叹的视觉效果。想象一下,我们可以模拟一个水滴从喷泉中喷出,然后优雅地落回地面的场景。同样,我们也能模拟出逼真的......
  • Learn OpenGL In Qt之纹理
    竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~公众号:C++学习与探索 | 个人主页:rainInSunny | 个人专栏:LearnOpenGLInQt文章目录纹理纹理坐标纹理环绕方式纹理采样多级渐远纹理纹理加载和创建加载纹理创建纹理应用纹理纹理纹理坐标  在前面的......
  • OpenGL: 计算机图形学OpenGL在Visual Studio 2019/2022中的环境配置
    前言    在查找了众多有关OpenGL相关的环境配置后,对opengl在vs中的初步配置终是有了收获,总结作以此篇以免自己遗忘,也希望对大家有所帮助。一、OpenGL简介        OpenGL(OpenGraphicsLibrary)是一个跨语言、跨平台的应用程序编程接口(API),用于渲染二维和三维......
  • 在盲解卷中,解卷积时滤波器系数翻转,平移与信号相乘再相加。另一种是信号翻转,平移与滤波
    在盲解卷积中,有两种基本的方法来处理信号和滤波器系数:一种是将滤波器系数翻转、平移与信号相乘再相加,另一种是将信号翻转、平移与滤波器系数相乘再相加。这两种方法的区别主要在于处理信号和滤波器的顺序,以及它们对最终结果的影响。1.**滤波器系数翻转(FilterCoefficientFli......
  • 模拟四旋翼飞行器的平移和旋转动力学(Matlab、Simulink仿真实现)
     ......
  • Transformer 的缩放因子为什么需要开平方根
    目录一、防止过大的注意力分数导致softmax函数饱和二、维度校正三、保持方差稳定在Transformer模型中,缩放因子(scalingfactor)特别设计用于调整注意力分数(attentionscores),它通常是键向量维度的平方根。这一做法主要是出于以下几个原因:一、防止过大的注意力分数导致......
  • OpenGL学习01-环境配置-实测好用
    首先下载VisualStudio2022,配置环境,安装库等开发环境:VisualStudio2022语言:C++freeglut库glfw 库以上两个库用于窗口管理glew库glad库以上两个库帮助我们链接到openGL比较新的实现方法相同功能库可以二选一VisualStudio2022安装教程参考可以这个VisualSt......
  • OpenGL 学习(1)
    知识点随笔是根据LearnOpenGLCN进行记录,本人用来巩固回顾的基础概念:顶点数组对象VAO顶点缓冲对象VBO元素缓冲对象EBOGL_POINTSGL_TRIANGLESGL_LINE_STRIP图形渲染管线:3D坐标转换为2D坐标2D坐标转变为实际的颜色像素顶点数据(Vertexdata)---->顶点着色器(......
  • OpenGL RHI优化
    前言随着Vulkan的普及,OpenGL已经在被慢慢淘汰,更轻的API调用可以节省不少性能,尤其是在移动平台上,可以减少CPU开销,进而减少功耗。看起来很完美,但是问题是目前移动平台Vulkan驱动存在很多兼容性问题,大家主流的做法都是通过白名单的方式去开Vulkan,所以目前我们还是要继续以OpenGL为主......
  • Qt开发技巧(十六):文本框的光标处理,数据库的int在视图中展示问题,工程文件中区分系统及硬
    继续讲一些Qt开发中的技巧操作:1.文本框的光标处理正常情况下我们在文本框中输入,光标会一直伴随着我们的输入指向最后,有点像链表的next指针,但有时候文本框中的内容过长,而我们想要主动设置下将光标移到最前面的时候,可以用下面方法。//下面三种方法都可以//1.样式表方式设......