当前位置: 首页 > news >正文

Open GL ES ->GLSurfaceView正交投影与透视投影方法中近远平面取值参考

坐标系

OpenGL ES使用右手坐标系,相机默认朝向负z方向

相机位置
    |
    v

    z轴<----- 0 -----> -near -----> -far -----
       不可见    可见区域    不可见

裁剪规则

far>near>0,只有z值在[-far, -near]范围内的物体可见, 当z > -near(在近平面前)或z < -far(在远平面后)时被裁剪

1. 正交投影 Matrix.orthoM()

Matrix.orthoM(m, offset, left, right, bottom, top, near, far)

特点:

  • 视锥体是长方体
  • 平行线保持平行
  • 物体大小不随距离变化
示意图:
      +------+
      |      |
      |      |
相机  |      |
 O----+------+
      |      |
      |      |
      +------+
     near    far

2. 透视投影 Matrix.frustumM/perspectiveM()

Matrix.frustumM(m, offset, left, right, bottom, top, near, far)
Matrix.perspectiveM(m, offset, fovy, aspect, near, far)

特点:

  • 视锥体是截头锥体
  • 近大远小效果
  • 平行线会在远处相交
示意图:
            far
            +--+
           /|  |
          / |  |
         /  |  |
相机    /   |  |
 O----+----+--+
         \  |  |
          \ |  |
           \|  |
            +--+
           near

近远平面最佳设置

  • 必须满足:far > near > 0
  • 渲染区域是 [−far≤渲染区域≤−near] 即物体在视图空间中的 Z 坐标必须介于 -far-near 之间(沿 -Z 轴方向),这个区间要包含具体业务场景的长度

相关文章:

  • 20.ARMLinux上ADC的驱动和使用方法
  • 云之家开发者模式下接口值的抓取
  • 前端处理pdf文件流,展示pdf
  • CouchBase稀疏索引和全量索引的对比
  • Leetcode 3504. Longest Palindrome After Substring Concatenation II
  • react+antd封装一个可回车自定义option的select并且与某些内容相互禁用
  • ffmpeg中格式转换需要注意点总结
  • 设计模式基础入门
  • Android 使用CameraX实现预览、拍照、录制视频(Java版)
  • AI产品的基础设施:算法、数据与大语言模型
  • 解决安卓手机WebView无法直接预览PDF的问题(使用PDF.js方案)
  • 基于SpringBoot的仓库管理系统-023
  • 递归详解:从原理到实战
  • 9.常用模板引擎
  • Elasticsearch索引的字段映射
  • 串口中断接收与环形缓冲实例(apollo3 blue plus)
  • Perl 哈希
  • Springboot实战:如何用Docker和Kubernetes部署微服务
  • Unity中MonoBehaviour组件禁用时协程的行为
  • Qt基本框架(1)
  • 国务院安委办、应急管理部进一步调度部署“五一”假期安全防范工作
  • 五一假期上海地铁部分线路将延时运营,这些调整请查收
  • 初步结果显示加拿大自由党赢得大选,外交部回应
  • 癌症来临前,可能伪装成这几种常见病,千万别大意
  • 释新闻|西葡大停电为何规模大、恢复慢?可再生能源是罪魁祸首?
  • 视频丨伊朗港口爆炸事件灭火工作已完成80%