社区
游戏开发
帖子详情
求助 如何通过 D3DTS_WORLD 算出 实际的物理坐标
diybl
2014-08-07 02:02:24
pd3dDevice->GetTransform(D3DTS_WORLD,&matWorld);
pd3dDevice->GetTransform(D3DTS_VIEW,&matView);
pd3dDevice->GetTransform(D3DTS_PROJECTION,&matProj);
怎么才能得到实际的物理世界坐标呢?x y z
...全文
354
19
打赏
收藏
求助 如何通过 D3DTS_WORLD 算出 实际的物理坐标
pd3dDevice->GetTransform(D3DTS_WORLD,&matWorld); pd3dDevice->GetTransform(D3DTS_VIEW,&matView); pd3dDevice->GetTransform(D3DTS_PROJECTION,&matProj); 怎么才能得到实际的物理世界坐标呢?x y z
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jianghushangxinke
2016-09-20
打赏
举报
回复
楼主,你最后错出来没?
曲面细分
2015-07-07
打赏
举报
回复
引用 4 楼 candycat1992 的回复:
你的模型呢,没有读顶点吗
pd3dDevice就是啊
彩阳
2014-08-08
打赏
举报
回复
给你一段代码看看: #include <iostream> #include <d3dx9.h> #pragma comment( lib, "d3dx9.lib" ) int main( int argc, char** argv ) { D3DXVECTOR3 aVector( 1.0f, 0.0f, 0.0f ); D3DXVECTOR4 outVector; D3DXMATRIX aMatrix; D3DXMatrixTranslation( &aMatrix, 1.0f, 0.0f, 0.0f ); D3DXVec3Transform( &outVector, &aVector, &aMatrix ); std::cout << "The output vector is: (" << outVector.x << ", " << outVector.y << ", " << outVector.z << ")"; return 0; }
diybl
2014-08-07
打赏
举报
回复
难道 原始的 YourObjectPosition 不是 0,0,0 吗
diybl
2014-08-07
打赏
举报
回复
YourObjectPosition 你是说这个 在顶点里面有信息?
妈妈说女孩子要自立自强
2014-08-07
打赏
举报
回复
你的模型呢,没有读顶点吗
diybl
2014-08-07
打赏
举报
回复
YourObjectPosition 难道没有 在 matWorld 里面吗? 那么他会在 d3d9 哪个api里面能获得到呢
妈妈说女孩子要自立自强
2014-08-07
打赏
举报
回复
一个模型的渲染主要经过了Model(大概就是你这里的World)、View、Projection(MVP)三个矩阵相乘后的结果计算而得屏幕上的像素位置。如果你说的物理坐标原点不在摄像机处,在三维空间的,那就是楼上所说的啦 具体可以看这篇文章,介绍的很详细了,好好看看会很有帮助 http://www.opengl-tutorial.org/zh-hans/beginners-tutorials-zh/tutorial-3-matrices-zh/
diybl
2014-08-07
打赏
举报
回复
奇怪了 DrawIndexedPrimitive 在调用这个函数的时候 每次获得的 matWorld 都会有点偏差 有的时候还会获得一个单位矩阵
妈妈说女孩子要自立自强
2014-08-07
打赏
举报
回复
怎么知道不对的,应该是什么,输出是什么
彩阳
2014-08-07
打赏
举报
回复
我觉得是: matWorld * YourObjectPosition
diybl
2014-08-07
打赏
举报
回复
D3DMATRIX mat; m_pD3Ddev->GetTransform(D3DTS_WORLD, &mat); x = pTmpVertextData->x * mat._11 + pTmpVertextData->y * mat._21 + pTmpVertextData->z * mat._31 + 1.0f * mat._41; y = pTmpVertextData->x * mat._12 + pTmpVertextData->y * mat._22 + pTmpVertextData->z * mat._32 + 1.0f * mat._42; z = pTmpVertextData->x * mat._13 + pTmpVertextData->y * mat._23 + pTmpVertextData->z * mat._33 + 1.0f * mat._43; pTmpVertextData 是顶点坐标 算出来的 还是不对
妈妈说女孩子要自立自强
2014-08-07
打赏
举报
回复
你这次真的确定什么都没动么。。。
diybl
2014-08-07
打赏
举报
回复
是我看错了 不好意思 只是我现在这边 算出来的 坐标还是跟游戏本身的坐标有些差别 站那不动 坐标都会变
妈妈说女孩子要自立自强
2014-08-07
打赏
举报
回复
你确定?。。为什么我搜的就是乘号。。。他们肯定会封装这么简单的功能的吧。。。
diybl
2014-08-07
打赏
举报
回复
好像不是简单的乘 http://msdn.microsoft.com/en-us/library/bb199526.aspx 这里有个c#实现的api 不知道 c++下 是怎么实现的
妈妈说女孩子要自立自强
2014-08-07
打赏
举报
回复
这就是个矩阵乘法操作,我没用过Dirext,但矩阵乘很常见吧,你学习的时候肯定经常碰到,一般一个操作符就解决了 Dirext好像使用行向量,因此是 向量*矩阵,也就是上面那个式子反过来计算 你会问这些问题说明你对矩阵变换还不是很清楚,强烈建议你看下之前给的那个链接,如果你要继续学习Dirext的话,这些都是必不可少的呦
diybl
2014-08-07
打赏
举报
回复
版主 matWorld * YourObjectPosition 这个用 函数 该怎么写 dx里面 好像没找到这个函数 输入 D3DXMATRIX D3DXVECTOR3 然后 输出一个 D3DXVECTOR3
妈妈说女孩子要自立自强
2014-08-07
打赏
举报
回复
哦,我以为是顶点。。。那就是啦
light_material_2
light and material source code
《DirectX程序设计》模拟试题.doc
《DirectX程序设计》模拟试题
DirectX 9.0中的
坐标
变换:从模型空间到屏幕
坐标
局部
坐标
系到世界
坐标
系: 物体的局部
坐标
(模型
坐标
)通过世界变换(IDirect
3D
Device9::SetTransform(D
3D
TS
_
WORLD
, matrix))变换到世界
坐标
。 将一个物体的中心置于世界
坐标
系的点(-3, 2, 6): D
3D
XMATRIX matrix; D
3D
XMatrixTranslation(&matrix, -3.0f...
D
3D
中的世界矩阵,视图矩阵,投影矩阵
无论计算机图形技术如何发展,只要它以二维的屏幕作为显示介质,那么它显示的图像即使多么的有立体感,也还是二维的。有时我会想,有没有以某个空间作为显示介质的的可能呢,不过即使有,也只能是显示某个范围内的图像,不可能有无限大的空间作为显示介质,如果有,那就是现实世界了。 既然显示器的屏幕是二维的,那么我们就要对图像作些处理,让它可以欺骗我们的眼睛,产生一种立体的真实感。在D
3D
中,这种处理就是
Directx
3D
编程框架
Directx
3D
编程框架微软的编程工具都别扭,但适者生存、小小程序员只能适应。无奈的初学者面对Directx
3D
图形接口,有个方法倒是可行,就是先搞通基本的编程框架,算是入门的一种方法。下面就简单介绍D
3D
的入门途径。 首先,初始化你的D
3D
设备: LPDIRECT
3D
DEVICE9 pd
3d
Device;LPDIRECT
3D
9 pD
3D
= Direct
3D
Create9(
游戏开发
8,325
社区成员
23,684
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章