社区
游戏开发
帖子详情
求助 如何通过 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
...全文
339
19
打赏
收藏
求助 如何通过 D3DTS_WORLD 算出 实际的物理坐标
pd3dDevice->GetTransform(D3DTS_WORLD,&matWorld); pd3dDevice->GetTransform(D3DTS_VIEW,&matView); pd3dDevice->GetTransform(D3DTS_PROJECTION,&matProj); 怎么才能得到实际的物理世界坐标呢?x y z
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
哦,我以为是顶点。。。那就是啦
DirectX 9.0中的
坐标
变换:从模型空间到屏幕
坐标
物体的局部
坐标
(模型
坐标
)通过世界变换(IDirect
3D
Device9::SetTransform(D
3D
TS
_
WORLD
, matrix))变换到世界
坐标
。 将一个物体的中心置于世界
坐标
系的点(-3, 2, 6): D
3D
XMATRIX matrix; D3...
Directx
3D
编程框架
Directx
3D
编程框架微软的编程工具都别扭,但适者生存、小小程序员只能适应。...下面就简单介绍D
3D
的入门途径。 首先,初始化你的D
3D
设备: LPDIRECT
3D
DEVICE9 pd
3d
Device;LPDIRECT
3D
9 pD
3D
= Direct
3D
Create9(
D
3D
中的世界矩阵,视图矩阵,投影矩阵
无论计算机图形技术如何发展,只要它以二维的屏幕作为显示介质,那么它显示的图像即使多么的有立体感,也还是二维的。有时我会想,有没有以某个空间作为显示介质的的可能呢,不过即使有,也...在D
3D
中,这种处理就是
D
3D
中可以变换的
坐标
系
模型
坐标
系的变换是通过下面方式完成:SetTransform( D
3D
TS
_
WORLD
, &mat
World
);这个变换通常用来变换模型在世界
坐标
系中的位置. mat
World
矩阵就是指明模型
坐标
系与世界
坐标
系之间的变换关系. 观察
坐标
系的变换是...
d
3d
旋转分解
如果我们要把它做一些变换再显示出来,就要计算一个该物体的世界矩阵mat
World
,再调用Device的SetTransform(D
3D
TS
_
WORLD
,&mat
World
),来变换他的位置。 位移好说,用一个D
3D
XMatrixTranslation就能统统搞定,...
游戏开发
8,303
社区成员
23,682
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章