opengl中近裁减面的z值多少啊?0还是-1

flmn 2004-11-10 10:25:32
如题。
...全文
375 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2004-11-22
  • 打赏
  • 举报
回复
严格意义上,投影平面是不存在的
它只是一个虚拟的平面, 这个平面距离视点距离多远不是问题


屏幕上的内容是投影平面光栅化后的结果,和屏幕分辨率,窗口大小相关的东西
图形学当中经常把它叫做视口 viewport

视锥则是world坐标系下的一个四棱台,视点在棱台的顶点
只有位于这个四棱台内部的物体才是可见

view坐标矩阵负责把world坐标系下的物体转换到这个四棱台的内部
此时远近裁减平面不起作用,通通会被变换的

远近裁减平面是在投影矩阵当中起作用的,和四个边框同等待遇,是裁减位于四棱台外部的物体的
一半说来,近裁减平面是个矩形,它的中心点和屏幕窗口的中心点重合的
经过view变换后,位于棱台内部的物体的xy坐标都在-1和+1之间的,
和窗口大小比例变换后才成为屏幕窗口坐标的

而z分量没有这么幸运, 它只是在投影矩阵作用后,一般才变换到0到1范围(其实可以是0 和 1区间内的任意一个范围, 比如 0.3 到 0.8 也是可以的 )

所以,你在使用gluUnproject变换的时候,xyz坐标当中xy是屏幕窗口坐标
z范围是0到1的一个数值,0对应近裁减平面1对应远裁减平面

找红宝书仔细看看这个部分吧,关于投影矩阵那块
syy64 2004-11-20
  • 打赏
  • 举报
回复
这是概念问题,近截面和远截面是为了控制场景大小。
flmn 2004-11-20
  • 打赏
  • 举报
回复
投影之后,传说xyz都到了-1和1之间,上下左右很清楚了,但是前后就不太清楚了

屏幕上的图像是投在近裁减面的图象么?

如果是,我用gluUnproject时传给他z为0可以得到近裁减面在世界坐标系的位置,传1得远裁减面
这样近裁减面z成了0了

如果屏幕上的图像不是投在近裁减面的图象,那是什么呢?
寻开心 2004-11-12
  • 打赏
  • 举报
回复
楼主的问题么有描述清楚
如果问的是z缓冲当中的数值
远近裁剪平面的z缓冲数值都是可以由用户指定的,范围一定是0到1.0中间的数值,不可能是负数
如果是近裁减平面到视点的距离
同样是正数,不可能是负数, 但是范围可以是任意, 具体采用那个数值,如同楼上的说法,要根据你的场景大小来选择, far/near的比值越小越好, 大的就会导致z精度下降,场景会闪烁
pinxue 2004-11-12
  • 打赏
  • 举报
回复
http://www.freecoder.org/~pinxue/OpenGL/opengl_ortho_near_far_analyst.htm
liufeng24 2004-11-12
  • 打赏
  • 举报
回复
z值做了归一化后只能在0和1之间,是1,不可能是-1
syy64 2004-11-11
  • 打赏
  • 举报
回复
0.1--10,跟坐标的大小有关.
zxl_llx 2004-11-11
  • 打赏
  • 举报
回复
houdy的对,其实是(-1)/n,如果n=0表示无穷远
houdy 2004-11-10
  • 打赏
  • 举报
回复
在摄像机空间内,近视截面可以表示为:<0,0,-1,-n>,其中(0,0,-1)表示平面的单位法向量,-n表示距离。
yjh1982 2004-11-10
  • 打赏
  • 举报
回复
0
远裁减面为1

z值最多0--1之间

4,450

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧