游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7222|回复: 12

问一个关于D3DXVec3Project的问题

[复制链接]

7

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2005-3-27 18:17:00 | 显示全部楼层 |阅读模式
这个函数用来求出一个点的屏幕坐标。
然后我设置了一个点,当这个点出现在屏幕中央的时候
计算出来的屏幕坐标却不是屏幕中心坐标,
而计算出来的屏幕坐标为0,0时,该点也不在屏幕的最左上角

请教高手,是我理解有错还是有需要什么注意的地方。

该函数传进去的第二个参数,是传一个点的原始3d坐标吗?

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-3-27 20:49:00 | 显示全部楼层

Re:问一个关于D3DXVec3Project的问题

那说明你求得不是屏幕坐标!而是求转换到投影空间的坐标。
opengl的投影空间从正面看是左下角(0,0),右上角(1,1)
d3d的投影空间从正面看是左上角(-1,-1),右下角(1,1),中间当然是(0,0)了

不过该函数确实是求屏幕坐标的,很有可能你没有给出正确的投影矩阵参数,导致
该函数在最后一步将其通过投影矩阵转换到屏幕坐标时无效,返回了一个没有经过
投影变换的坐标!
八成你是将 *pProjection 这个参数传了一个4*4单位矩阵,没有任何作用!

1

主题

48

帖子

48

积分

注册会员

Rank: 2

积分
48
发表于 2005-3-27 20:57:00 | 显示全部楼层

Re:问一个关于D3DXVec3Project的问题

可能投射函数因为受到透视角度的影响,所以得不到你要的。我这里没有SDK,你能不能把函数带参数都写上。

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-3-27 21:00:00 | 显示全部楼层

Re:问一个关于D3DXVec3Project的问题

参数一,结果,参数二,源坐标,参数三view port 然后的三个参数是世界、观察、投影矩阵

1

主题

48

帖子

48

积分

注册会员

Rank: 2

积分
48
发表于 2005-3-27 21:25:00 | 显示全部楼层

Re:问一个关于D3DXVec3Project的问题

我使用的是unproject,为了进行picking(物体拾取),如果按楼上的参数正确输入,应该没问题。

7

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
 楼主| 发表于 2005-3-27 21:49:00 | 显示全部楼层

Re:问一个关于D3DXVec3Project的问题

D3DXVECTOR3 a,b;
a = D3DVECTOR3(100, 100, 100)
g_pApp.GetDevice()->GetTransform(D3DTS_WORLDMATRIX(0), &m_matWorld);
g_pApp.GetDevice()->GetTransform(D3DTS_VIEW, &m_matView);
g_pApp.GetDevice()->GetTransform(D3DTS_PROJECTION, &m_matProj);
D3DXVec3Project(&b,         &a, &m_ViewPort, &m_matProj, &m_matView, &m_matWorld);

我是这样写的~~~有什么不对呢?

7

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
 楼主| 发表于 2005-3-27 21:54:00 | 显示全部楼层

Re:问一个关于D3DXVec3Project的问题

三楼兄弟,我查了一下sdk,这个函数的参数,传进去的矩阵依次是投影,观察,世界。
另外我传进去视线向量,得出的结果是viewport中Width和Height的一半,也就是我所理解的屏幕中心的坐标。

7

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
 楼主| 发表于 2005-3-27 23:20:00 | 显示全部楼层

Re:问一个关于D3DXVec3Project的问题

嘿嘿,找到错误了,我一个坐标传错了,不好意思。

lights兄,纠正你一个小错误,屏幕坐标原点在窗口的左上角

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-3-28 00:40:00 | 显示全部楼层

Re:问一个关于D3DXVec3Project的问题

无语?投影空间=屏幕坐标系?

7

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
 楼主| 发表于 2005-3-28 00:44:00 | 显示全部楼层

Re:问一个关于D3DXVec3Project的问题

我求得就是屏幕坐标阿
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-26 16:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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