FPS中子弹飞行轨迹随视点位置变化而变化的问题
来源:互联网 发布:刷qb源码 编辑:程序博客网 时间:2024/04/29 20:50
这几天做FPS,倒是好好的考验了下我的三维坐标变换。
开始直接将子弹的初始坐标和初始方向设置在view-space中,这样比较方便
那么初始坐标应该是view-space中枪口的坐标
接下来把view-space中的初始坐标和方向都变换到世界坐标系下,而后所有的变换都在世界坐标系下进行,都使用子弹在世界坐标系下的坐标。
结果我做出来发现一个问题,就是当人物移动射击时,所有子弹竟然都排成一条直线随着人物的移动而移动,变得像是在用激光枪一样。
也就是说,子弹的方向改变了,虽然从摄像机看,子弹的方向没有改变,但在世界坐标系下,子弹的方向却是变化的。
导致这个结果的原因就是在初始化时,将view-space中的方向变换到world-space时,使用的视图矩阵逆阵其中包含了平移的分量,这使得被变换的方向向量改变了方向。
于是应该除去视图变换矩阵逆阵中的平移分量,如下
::D3DXMatrixInverse(&matViewInverse,&fDet,&matView);
matViewInverse._41 = 0.0f;
matViewInverse._42 = 0.0f;
matViewInverse._43 = 0.0f;
::D3DXVec3TransformCoord(&m_direction_world,&direction,&matViewInverse);
这样就一切正常了,,纠结死我了
- FPS中子弹飞行轨迹随视点位置变化而变化的问题
- div位置大小不随浏览器变化而变化
- 控件大小位置随分辨率而变化
- 使用EASYSIZE实现空间位置/大小随窗口的变化而变化
- MFC中让控件随窗体大小变化而变化中需要注意的问题
- Android 解决字体随系统调节而变化的问题
- Android 解决字体随系统调节而变化的问题
- Android 解决字体随系统调节而变化的问题
- 随输入文字长度变化而变化的文本框
- winform 控件随窗体的变化而变化
- EXTJS_GridPanel_ColumnModel_列的宽度随数据变化而变化
- 背景图片随网页的变化而变化(指大小)
- 对话框控件大小随窗口的大小变化而变化
- c#控件随屏幕分辨率的变化而变化
- CSS样式不随浏览器的变化而变化
- APP字体大小,不随系统的字体大小变化而变化
- 如何让控件随窗体的大小变化而变化
- easysize的使用方法 (实现控件大小位置随界面变化而有相应的变化,这个变化可以自己设置)
- 微笑是一种人生修养
- 微软证实下一代浏览器IE 9将不支持Flash
- 用阳光心态面对生活
- 【重要】buntu常用命令与技巧
- 人生要学会的
- FPS中子弹飞行轨迹随视点位置变化而变化的问题
- jQuery入门[1]-构造函数
- 2010年中考英语写作高分指导
- Makefile概述
- 电容
- PPT制作
- 专家指导:“五个必须”迅速提高物理成绩
- JButton 添加右键菜单
- 2010年中考英语选择题掌握技巧