游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2040|回复: 1

Directx中关于摄像机的逆旋转问题

[复制链接]

2

主题

5

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2013-6-8 15:41:10 | 显示全部楼层 |阅读模式
   我想做一个水底的模糊效果,想法是在摄像机的近截面蒙上一层淡蓝色的半透明面片,然后在水底打雾效,因为这个面片是要随着摄像机的旋转而逆旋转的,我的做法是:

                D3DXMATRIX MatRot;   //面片的旋转矩阵
                D3DXMatrixIdentity(&MatRot);
                MatRot._11 = m_MatView._11;             //将摄像机的对应位置取出来
                MatRot._13 = m_MatView._13;
                MatRot._31 = m_MatView._31;
                MatRot._33 = m_MatView._33;
                D3DXMatrixInverse(&MatRot,NULL,&MatRot);   //求面片旋转矩阵的逆矩阵

                然后应用于程序中,但是这样有一个问题,面片相对于摄像机Y轴的旋转是对了,但是如果摄像机绕X轴旋转的话,面片就无法随之一起旋转,谁能教教该如何做?

33

主题

159

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
QQ
发表于 2013-6-10 21:50:57 | 显示全部楼层
....又是世界矩阵的原理问题

世界矩阵的前三行
第一行 11 12 13 是对应obj在世界空间的右方向
第2行 21 22 23 是对应obj在世界空间的上方向
第3行 31 32 33 是对应obj在世界空间的LOOK方向
第四行position

MatRot._11 = m_MatView._11;      
MatRot._13 = m_MatView._13;
这两句给值右方向 但没有给 _12 也就是说只给了右方向的 x,z分量

MatRot._31 = m_MatView._31;
MatRot._33 = m_MatView._33;
这两句给值Look方向  但没有给LOOK方向的y分量

Inverse一下变成视矩阵
当然只能按y转

这种摄像机旋转的方法很头痛,个人感觉还是按龙书里面 取摄像机右上前POS四向再组合成ViewMatrix来的好玩
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-26 18:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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