位置: 编程技术 - 正文

OpenGL--3D世界(视图变换,模型变换,投影变换,视口变换)(opengl 3d engine)

编辑:rootadmin

推荐整理分享OpenGL--3D世界(视图变换,模型变换,投影变换,视口变换)(opengl 3d engine),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl 3d游戏,opengl 3d模型,opengl3d小游戏,3d opengl,opengl 3d engine,opengl 3d模型,opengl 3d engine,3d opengl,内容如对您有帮助,希望把文章链接给更多的朋友!

理论基础 1,OpenGL渲染3D物体到屏幕上的过程其实类似我们平时用照相机拍照的过程,这个步骤大致如下:一,把照相机固定在三脚架并让它对准场景(视图变换)二,把场景中的物体调整摆放好(模型变换)三,选择照相机的镜头,并调整放大倍数(投影变换)四,确定最终照片的大小(视口变换)。其中视图变换必须要在模型变换之前,其它可以在任何时候。 2,视图变换:设置摄像机的位置,gluLookAt(摄像机位置,镜头瞄准,上方向),其中上方向的理解就类似是一个放好的瓶子,一般指定垂直向上是瓶盖的方向。默认摄像机位于原点,指向z轴的负方向,朝上向量为(0, 1, 0). 3,模型变换:设置物体的位置和方向,包括:旋转,移动,缩放,而且要注意组合使用他们的顺序,像先平移再旋转与先旋转再平移它们的表现是不一样的。注意,可以不必通过移动摄像机(视图变换)来观察物体,而是移动这个物体(模型变换),这两个方式都能实现同样地效果,有时使用其中一种变换比使用另一种变换要方便得多。这也是把视图变换和模型变换都统一为模型视图矩阵的原因。 4,投影变换:设置视景体,将3维坐标投影为2维屏幕坐标,位于视景体之外的东西将被裁剪掉。它分为两种投影:正投影和透视投影,其中正投影就是平行投影,不管远近物体看上去都一样。而透视投影则是近大远小的真实效果。为什么会是这样?可以这么理解:投影时会是有个正方体或是平截头体(就是指视景体),它们的每个切面其实就相当于我们的屏幕,对应正投影的正方体(长方体)当然是不管距离摄像机远处还是近处,切面都是一样大,所以物体观察没有变化。而对于透视投影的平截头体,近处的切面小因而物体占据的切面百分比面积要大,即同样的物体近处填充屏幕的面积要大,所以就形成了近大远小的真实效果。 正投影:glOrtho(left, right, bottom, top, near, far)或二维图像的投影gluOrtho2D(left, right, bottom, top) 透视投影:glFrustum(left, right, bottom, top, near, far),或者工具封装的接口gluPerspective(angle, w/h, near, far) 对应的示意图如下:

5,视口变换:其实就是指定最终图像显示在屏幕那个区域,一般我们是设置和屏幕一样大。(glViewport (0, 0, (GLsizei) w, (GLsizei) h)) 6,glPushMatrix() 和 glPopMatrix()理解:首先我们要知道,对于矩阵的操作都是对于矩阵栈的栈顶来操作的。当前矩阵即为矩阵栈的栈顶元素,而对当前矩阵进行平移、旋转等的变换操作也同样是对栈顶矩阵的修改。所以我们在变换之前调用giPushMatrix()的话,就会把当前状态压入第二层,不过此时栈顶的矩阵也与第二层的相同。 当经过一系列的变换后,栈顶矩阵被修改,此时调用glPopMatrix()时,栈顶矩阵被弹出,且又会恢复为原来的状态。即保存原来状态与恢复原来状态,它与glLoadIdentity ();这个的区别是,这个直接恢复为最初始状态(0),而它是保存了当前状态。示意图如下: 7,逆变换:我们是经过各种变换将3D空间投影到2D屏幕上的,然而我们鼠标点击2D屏幕它对应的原来3D空间的哪里了?这就需要逆变换还原。(gluUnProject())

代码示例 1,绘制一个长方体

2,绘制一个裁剪掉了3/4的线框圆(除了视景体的6个裁剪平面外,还可以另外再指定最多可达6个的其他裁剪平面,对视景体施加进一步的限制)

OpenGL--3D世界(视图变换,模型变换,投影变换,视口变换)(opengl 3d engine)

3,模拟行星系统

4,模拟机器人手臂

5,逆变换实例

openGL 矩阵的旋转-平移-缩放 1.openGL的矩阵openGL的矩阵是列优先排序的。就是说,矩阵的数据是存贮在一维数组中,数据上传到openGL处理的时候,会把一维数据的每一行当做列来处理

qt5错误can not find -lGL的解决方法 位ubuntu安装qt后,用桌面套件构建运行时,错误显示can'tfind-lGLcollect2:error:ldreturned1exitedstatus这是由于缺少opengl库引起的,可以在终端输入sudoapt-getinstal

opengl 绘制简单的带纹理贴图的立方体 #includegl/glew.h#includeglfw/glfw3.h#includeglm/glm.hpp#includeglm/gtc/matrix_transform.hpp#includeglm/gtc/type_ptr.hpp#includeiostream#includeourProgram.h#includeSOIL.husingnamespacestd;intmain(){gl

标签: opengl 3d engine

本文链接地址:https://www.jiuchutong.com/biancheng/369607.html 转载请保留说明!

上一篇:混合(混合痔疮怎么治疗最好方法 女性)

下一篇:openGL 矩阵的旋转-平移-缩放(opengl绘制图形旋转)

  • 建筑企业如何预交增值税
  • 税控盘白盘和黑盘一样吗
  • 销售货物开票及销售收入
  • 会计凭证的数字书写示例图
  • 定期定额征收和核定征收一样吗
  • 党费会计核算科目说明
  • 建筑劳务公司开劳务发票税率是多少
  • 违约金抵扣货款等于现金折扣吗会计分录
  • 工资薪金所得适用的税率是
  • 代收代付的发票开给谁
  • 跨年度发票退回如何记账
  • 企业财务月确定不当造成税务问题
  • 小规模纳税人销售农产品免税吗
  • 一次还本付息摊余成本计算公式
  • 普通的增值税发票可以查询到购买人的信息吗
  • 公户没有开票进账了可以吗
  • 生活补贴和节日补贴区别
  • 企业所得税一季度盈利二季度亏损
  • 哪些企业可以享受加计扣除
  • 打英文字母突然没声音了
  • 损益类科目在期末均需转入什么科目
  • 小规模餐饮企业增值税申报表填写
  • xp系统鼠标右键不能用怎么办
  • 如何修复面部毛孔粗大
  • vue项目管理器
  • PHP:pg_connection_status()的用法_PostgreSQL函数
  • 小程序怎么自定义tabbar
  • 若依管理系统前端代码分析
  • HTML布局方式
  • mysql分区分表原理
  • 应收款项减值的核算方法
  • 相见恨晚求下联
  • 微信小程序制作
  • 激活函数总结
  • 大数据相关框架
  • 大语言模型集成工具
  • chkconfig命令参数
  • 收到的赔款,罚款怎么算
  • 出租固定资产的租金收入
  • 企业注销时实收资本没有到位要紧吗
  • phpcms添加内容
  • 商业承兑贴现几个点
  • 教育行业有主营业务吗
  • 企业固定资产如何查询
  • 销售额大于营业收入吗
  • 工程建设期间发生的差旅费
  • 对方公司倒闭应收账款,销售需要承担吗
  • 借别人账户过钱
  • 今年发的去年的工资怎么扣税
  • 收到外国人的礼物怎么感谢
  • 固定资产的后续支出应如何进行会计处理
  • 未开票收入转为开票收入
  • 进账单,其中有两个账户
  • 会计科目中的财务费用
  • 医院产生的相关费用
  • 工资全扣是什么意思
  • 三证合一后还有纳税人资格证吗
  • Windows Server 2008的节能降耗
  • Win7 vpn连接不上怎么办?Win7系统vpn连接不上问题的解决方法
  • mac如何自行检测硬盘信息
  • 虚拟光驱uiso
  • win10系统怎么设置开机密码
  • cocos2dx视频教程
  • nodejs不再维护
  • js拖拽元素到另一个元素
  • jquery.min.js源代码
  • 怎么查看u盘有没有传输过数据
  • linearlayout addview
  • google gsoc
  • js清除文本框内的文字
  • js 编程
  • 陕西省电子税务局官网登录入口网址
  • 捐赠收入如何交印花税
  • 深圳税务网上申报客户端更正申报流程
  • 个人所得税子女教育和赡养老人抵扣多少税
  • 江苏省国税务局
  • 应纳税所得额怎么求公式
  • 国地税怎么交
  • 湖南电子税务局网上办税大厅
  • 2010年末实现净利润390万,宣告发放现金股利40万,在计算本年未分配利润时,是否要减掉这40万?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设