游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2929|回复: 7

关于D3D中camera的一个困惑

[复制链接]

7

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2005-4-22 17:50:00 | 显示全部楼层 |阅读模式
D3DXVECTOR3 pos(0.0f, 30.0f, -50.0f);
D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);
D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);
D3DXMATRIX V;
D3DXMatrixLookAtLH(&V, &pos, &target, &up);
Device->SetTransform(D3DTS_VIEW, &V);

这是一般情况下设置视角空间变换的代码

在我的思维中有一个结,认为 (pos-target) 应该是与 up 垂直的,显然实际情况证明我错了
而且up一般总是被设置为与y轴平行,为什么呢?

而且我很想知道根据pos,target,up是怎么计算出那个变换矩阵V的,这个问题应该不是很难

24

主题

229

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
发表于 2005-4-22 18:45:00 | 显示全部楼层

Re:关于D3D中camera的一个困惑

我也是初学者,很多不明白的东西,现在只能死记了。

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-4-22 19:28:00 | 显示全部楼层

Re:关于D3D中camera的一个困惑

v矩阵里记着 head face up。
head=pos
face=皈依的(targer-head)一个矢量表示面对的方向。
up=up(这里的up是和face垂直的),一般up设为与y轴平行是为了方便,
矩阵里很容易计算出和face垂直的up.

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-4-22 19:33:00 | 显示全部楼层

Re:关于D3D中camera的一个困惑

《Direct3D游戏编程入门教程(第二版)》中很详细的把复原的代码放了出来

7

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2005-4-22 20:17:00 | 显示全部楼层

Re: Re:关于D3D中camera的一个困惑

lights: Re:关于D3D中camera的一个困惑

v矩阵里记着 head face up。
head=pos
face=皈依的(targer-head)一个矢量表示面对的方向。
up=up(这里...

我认为v里面还记着一个right,right和face和up应该是两两互相垂直的,
但是仅仅根据原先的pos,target和up能计算出最终记录着head,face,uo和right的矩阵v吗,好像条件不充分

7

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2005-4-22 20:24:00 | 显示全部楼层

Re:关于D3D中camera的一个困惑

to lights:
我明白这一点了:right可以由face和up推出来

但是你说: face=皈依的(targer-head), up=up(这里的up是和face垂直的)
也就是我的想法: target减去pos的结果向量应该与up垂直
但是很多情况下显然不是这样,我给的例子就不垂直

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-4-22 21:32:00 | 显示全部楼层

Re:关于D3D中camera的一个困惑

D3DXMatrixLookAtLH
这条函数会在up face平面上旋转up,让他垂直。

所以此up非彼up,他被重算过了;
up=face X (up X face)
皈依=归一=正交化,就是让向量的长度=1;
是我偷懒了,对不起!

7

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2005-4-22 22:13:00 | 显示全部楼层

Re: Re:关于D3D中camera的一个困惑

lights: Re:关于D3D中camera的一个困惑

D3DXMatrixLookAtLH
这条函数会在up face平面上旋转up,让他垂直。

所以此up非彼up,他被重算过了;
up=...

这下弄懂了,谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 10:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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