游戏开发论坛

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

请教如何用鼠标控制摄像机旋转?

[复制链接]

3

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2007-10-21 15:37:00 | 显示全部楼层 |阅读模式
我知道directInput中的GetDeviceState(sizeof(m_MouseState),&m_MouseState)可以获取鼠标的移动量m_MouseState,那如何转化为摄像机的旋转角度呢?多谢指教!

0

主题

34

帖子

46

积分

注册会员

Rank: 2

积分
46
QQ
发表于 2007-10-22 00:11:00 | 显示全部楼层

Re:请教如何用鼠标控制摄像机旋转?

如果没有摄象机类可用,那么只能通过设置VIEW矩阵了
D3DXMATRIXA16        mViewScene;
        D3DXVECTOR3 vecEye         ?;
D3DXVECTOR3 vecAt ?;
        D3DXVECTOR3 vecUp (0.0f, 1.0f, 0.0f);
        D3DXMatrixLookAtLH( &mViewScene, &vecEye, &vecAt, &vecUp );

                Device->SetTransform(D3DTS_VIEW, &mViewScene);

根据你的m_MouseState来调整vecEye和vecAt了

3

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2007-10-22 10:44:00 | 显示全部楼层

Re: 请教如何用鼠标控制摄像机旋转?

关键就是不知道怎样根据鼠标的变化来调整摄像机,是不是要获得相应旋转角度啊?那如何根据鼠标的变化来获得旋转角度呢?

0

主题

34

帖子

46

积分

注册会员

Rank: 2

积分
46
QQ
发表于 2007-10-22 14:20:00 | 显示全部楼层

Re:请教如何用鼠标控制摄像机旋转?

看来你是要自己写摄象机类啦
没有固定的模式,根据你的摄象机的需求的
一般第一人称摄象机,鼠标转视角就是鼠标移动的时候vecEye眼睛位置不动,移动vecAt调整看向哪里
根据鼠标现在的位置和上一贞的位置和这一贞过去的时间旋转vecAt就可以了

转视角详细算法参看Introduction to 3D Game Programming with DirectX 9.0 Chapter 12

还有鼠标移动状态不需要directInput也可以做的
MsgProc 处理WM_MOUSEMOVE消息 ,参数lParam的高位是当前Y轴屏幕坐标,低位是当前X轴屏幕坐标

14

主题

345

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
发表于 2007-10-22 16:43:00 | 显示全部楼层

Re:请教如何用鼠标控制摄像机旋转?

可以参考DXUT中的Camera

6

主题

99

帖子

99

积分

注册会员

Rank: 2

积分
99
发表于 2007-10-22 23:20:00 | 显示全部楼层

Re:请教如何用鼠标控制摄像机旋转?

这个问题我以前也问过,但直到现在都没有得到解决。
正如xoyojank所说的 “参考DXUT中的Camera”。
好像里面是实现一个轨迹球,之后就很爽的可以用鼠标旋转了,不过原理我搞不清楚。
我也希望能实现 3dsmax 那样方便的旋转视角功能,哎,难。
期待高手指导。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-16 04:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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