游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1614|回复: 3

请教如何转换当前的视点(摄像机)

[复制链接]

7

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2010-6-20 16:04:00 | 显示全部楼层 |阅读模式
[em20]

请问高手,如何转换当前摄像机视点?

下面的代码可以设置一个摄像机的位置
D3DXVECTOR3 pos(-0.3f, 0.0f, -5.0f);
D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);
D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);
D3DXMatrixLookAtLH(&viewMatrix, &pos, &target, &up);
pdevice->SetTransform(D3DTS_VIEW, &viewMatrix);

但是,如果当前不知道pos.target以及up的信息。只能通过
pdevice->GetTransform(D3DTS_VIEW,&oldCameraMatrix)
获得以前设置的摄像机信息,如果在这个基础上进行修改呢?

比如向左或者向右平移摄像机位置,其他不变?

本人很菜,请各位大侠们明示啊~~~~
请多码几段能参考的代码吧,谢谢!

万分感谢!!!

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2010-6-21 11:48:00 | 显示全部楼层

Re:请教如何转换当前的视点(摄像机)

newCameraMatrix = oldCameraMatrix + [[1 0 0 0] [0 1 0 0] [0 0 1 0] [Δx Δy Δz 1]]

2

主题

8

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2010-6-23 11:06:00 | 显示全部楼层

Re:请教如何转换当前的视点(摄像机)

zaxis = normal(At - Eye)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)
   
xaxis.x           yaxis.x           zaxis.x          0
xaxis.y           yaxis.y           zaxis.y          0
xaxis.z           yaxis.z           zaxis.z          0
-dot(xaxis, eye)  -dot(yaxis, eye)  -dot(zaxis, eye)  l

你看一下sdk嘛,应该不难

2

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2010-7-6 08:57:00 | 显示全部楼层

Re:请教如何转换当前的视点(摄像机)

这个……
貌似不可能……对eye、at、up任一向量的改动,都会引起整个View矩阵的变化,而从当前的View矩阵是求不出那3个向量的。所以……
不知道he_yiquan兄看了SDK后有何想法,似乎对解答问题也没什么用啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-8 14:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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