游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2576|回复: 5

SDK 文档中给出的投影矩阵公式是否是错误的?

[复制链接]

20

主题

136

帖子

172

积分

注册会员

Rank: 2

积分
172
发表于 2008-12-2 19:17:00 | 显示全部楼层 |阅读模式
xScale     0          0               0
0        yScale       0               0
0          0       zf/(zf-zn)         1
0          0       -zn*zf/(zf-zn)     0
where:
yScale = cot(fovY/2)

xScale = aspect ratio / yScale

这个矩阵是在 D3DXMatrixPerspectiveFovLH 文档里出现的,其中 yScale 即视场的缩放,xScale 应当也乘于这个因子。还有宽高比,以 y 方向为基准(fovY),则为了使得侧面为正方形的物体在屏幕中拉伸后保持正方形,应当缩小 x 方向,w : h = aspect,即 w 是 h 的 aspect 倍大小,所以在 y 方向保持不变的情况下,相应地缩小 x 方向 aspect 倍,即除于 aspect,使得经过拉伸后刚好保持比率,那么 xScale 应当为 yScale / aspect ratio。

最后,我通过实际调用 D3DXMatrixPerspectiveFovLH,传递 aspect 为 1.333f,fovY 为 0.7853975 即 45 度角
结果 D3DXMATRIX::_11 为 1.8111148
根据我认为正确的公式 xScale = cot(0.7853975 * 0.5) / 1.333f = 1.81111...
当 xScale 假定为 1.333f / cot(0.7853975 * 0.5),则等于 0.552146...

所以我认为这个文档描述是错误的。遗憾的是到最新的 SDK 文档版本,这个问题仍旧存在。

5

主题

972

帖子

975

积分

高级会员

Rank: 4

积分
975
发表于 2008-12-2 20:51:00 | 显示全部楼层

Re:SDK 文档中给出的投影矩阵公式是否是错误的?

貌似November版的SDK已经修正了这个错误

12

主题

128

帖子

128

积分

注册会员

Rank: 2

积分
128
发表于 2008-12-4 14:20:00 | 显示全部楼层

Re:SDK 文档中给出的投影矩阵公式是否是错误的?

你的版本太旧了.

Remarks
The return value for this function is the same value returned in the pOut parameter. In this way, the D3DXMatrixPerspectiveFovLH function can be used as a parameter for another function.

This function computes the returned matrix as shown:

xScale     0          0               0
0        yScale       0               0
0          0       zf/(zf-zn)         1
0          0       -zn*zf/(zf-zn)     0
where:
yScale = cot(fovY/2)

xScale = yScale / aspect ratio

Requirements
Header: Declared in D3dx9math.h.

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2008-12-5 00:30:00 | 显示全部楼层

Re:SDK 文档中给出的投影矩阵公式是否是错误的?

这个最准确的就是Mesa 3D的代码

0

主题

11

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2010-10-18 14:08:00 | 显示全部楼层

Re:SDK 文档中给出的投影矩阵公式是否是错误的?

我也刚发现了这个问题,DX8.1的文档也给错了

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2010-10-24 08:39:00 | 显示全部楼层

Re:SDK 文档中给出的投影矩阵公式是否是错误的?

瞎说,我按照文档编写自己的3D数学函数,怎么正常运行?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-3 05:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表