求教一个很基础,但是困惑了我很久的问题,关于3D变换的(OpenGL/D3D).高分请教

潘李亮 2003-08-22 01:02:29
我们知道,当我们没有为OpenGL/D3D指定一个视图矩阵的时候,摄影机有一个默认的位置,就是在(0,0,0)位置,指向Z轴的负方向,就是说Z小于0的顶点才能看得见,但是我觉得把一个顶点和单位矩阵香乘的话,是不变的。应该是Z大于0的顶点才能看见的。也就是说摄影机的方向该指向Z的正方向才对,
那位大虾能给小第指点一二啊?
...全文
143 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2003-08-23
  • 打赏
  • 举报
回复
GL里面从矩阵的数据来看,确实没有办法把所有数据都变换到(0,1)范围内的
它是把视锥内的数据变换到0,1范围内
使用这个矩阵肯定会把视锥外的变换到0,1之外。

在Z-BUFFER下,投影矩阵主要是做了一个除法,没有做乘-1的操作,所以不会拧z轴的
潘李亮 2003-08-22
  • 打赏
  • 举报
回复
但是我从GL里提取出来的矩阵没有办法解释它是把z变到(0,1)范围的。
寻开心 2003-08-22
  • 打赏
  • 举报
回复
投影矩阵的作用是先把x,y变换到(-1,1), z则是(0,1)的范围,然后把x和y范围与屏幕窗口位置和宽高对应起来。
潘李亮 2003-08-22
  • 打赏
  • 举报
回复
投影矩阵自己把Z轴给逆过来了。而且把坐标变成了(-1,1)的规范范围,然后再变成(0,1)的裁剪范围(我从投影矩阵和最后的坐标里估计出来的
tomb4 2003-08-22
  • 打赏
  • 举报
回复
hehe,sorry没仔细看

LOADIDENTITY调单位矩阵,摄像机方向是第三列向量(0,0,1,0)即指向Z+

投影矩阵是把眼坐标的点CLIP到裁减坐标,默认使用glDepthFunc(LEQUAL)表示片段Z值小则取代前面的,当然眼坐标也是(0,0,1,0)向Z+
寻开心 2003-08-22
  • 打赏
  • 举报
回复

我晕啦。
和投影矩阵有什么关系呐?

投影矩阵的作用是,假定电脑屏幕是摆放在相机方向上,距离NearClip上的一个幕布,它和相机最大的角度是fov。投影矩阵是把相机空间的图像变换到这个幕布上。
-z方向上的点是什么意思,是点本身坐标z分量数值是-数,还是说法向量?
从下向上看,只能看到朝下的面/点,是正常的啊。
潘李亮 2003-08-22
  • 打赏
  • 举报
回复
我已经明白了。默认的时候只能看到-Z方向上的点的。因为是投影矩阵的问题。
YangLin1ST 2003-08-22
  • 打赏
  • 举报
回复
视矩阵初始矩阵是单位矩阵,缺省的时候,第3列是(0,0,1,0),其中前面3个就是摄象机“前方”这个轴。显然是指象Z+的。同理,第一列(1,0,0,0),表示摄象机“左”这个轴,是指向X+的,第二列(0,1,0,0),说明摄象机的“上方”,是指向Y+的。不醒你改改看。
寻开心 2003-08-22
  • 打赏
  • 举报
回复
第一个问题,视矩阵初始矩阵是单位矩阵吗?(需要验证,GET出来看一下就知道了,很可能是单位矩阵)

第二个问题,即便是单位矩阵,那么它所代表的意义也不是你前面所说的指向-z方向。
我们知道变换矩阵的向量(行向量或者列向量——因为左手或者右手坐标系而不同),就是一个坐标系的单位长度的坐标轴和原点在另外一个坐标系当中的位置,方向和长度。
例如变换阵 T把一个坐标系A当中的点a变换到B坐标系当中的点b
那么T的行或者向量必然是,A的坐标系原点和方向向量,在B当中的位置和方向向量

根据这个原则,视矩阵的向量就是世界坐标系原点和坐标轴在相机空间当中的位置和方向。 如果视矩阵是单位矩阵,就表示两个坐标系是一模一样的,它的Z方向就是世界坐标系的Z方向,绝对不会是-z方向。
也就是说,缺省的情形,眼睛在世界坐标系的原点,向Z的方向看,不是-z方向。

其实这点你可以通过构造特殊的场景作为例子,测试出来。

在你的世界坐标系下, 在圆点位置偏上和偏下各放置一个不同颜色的盒子,就可以知道了。
tomb4 2003-08-22
  • 打赏
  • 举报
回复
"把一个顶点和单位矩阵香乘的话,是不变的。"
"应该是Z大于0的顶点才能看见的。也就是说摄影机的方向该指向Z的正方向才对"

这两句话有什么联系吗?
coolvoldo6 2003-08-22
  • 打赏
  • 举报
回复
“把一个顶点和单位矩阵香乘的话”

这个单位矩阵哪里来的啊?如果默认的View矩阵真是你说的
那样的话,View矩阵肯定不是单位矩阵
(我用DX,都是自己设置Camera的,默认的情况不是很清楚)

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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