3D中鼠标点击点和Y=0.0f的面交点问题。

linsir000 2003-11-18 12:51:25
有哪位兄弟能解释一下:

在DIRECTX 8.1的Pick的Sample中,可以通过鼠标点击在3D中的位置,然后由D3DXIntersect函数得到和对象的交点;但是如果我想得到鼠标点击的位置和水平面的交点,既Y轴为0.0f的面的交点,该怎么得到呢,应该是怎么转换得到。

我改了FromPt的位置,如下:
D3DXVECTOR3 vFromPt = D3DXVECTOR3( 0.0f, 20.0f, -20.0f );
D3DXVECTOR3 vLookatPt = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
D3DXVECTOR3 vUpVec = D3DXVECTOR3( 0.0f, 1.0f, 0.0f );

哪位兄弟能解释一下,非常感谢。
...全文
39 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
linsir000 2003-11-21
  • 打赏
  • 举报
回复
我昨天下午从gameres.com上下载的,可我昨天晚上发现它就不能下了。
pzh508 2003-11-21
  • 打赏
  • 举报
回复
哦?真的?那本书那里有下载?告诉我,我去看看
看懂了别忘了讲解给我听。
linsir000 2003-11-21
  • 打赏
  • 举报
回复
To: pzh508(小猪)
我已经找到这个问题了例子了《Introduction to 3D Game Programming with DirectX 9.0》这本书里也非常详细的说明,真是一本好书。
pzh508 2003-11-20
  • 打赏
  • 举报
回复
注意:这些运算都已经是在world空间下的了
pzh508 2003-11-20
  • 打赏
  • 举报
回复
嗯,我提供一个思路给你,你试试看可不可行。
首先根据叉积求得y=0的平面法向量及长度,然后求得鼠标点击转成3D空间下的射线,之后求该平面的法向量与该射线的点积,进而可以求出交点与射线起点的距离。然后在联立平面方程就应该可以求出交点坐标
pzh508 2003-11-20
  • 打赏
  • 举报
回复
嗯,差不多是这个意思了,因为那个函数是判断鼠标位置点击转成3D空间下的射线和对象的三角形所在的平面有没有碰撞,有就表示点击到,和你所要求的原理是差不多的(但不用像那个函数那样那么复杂,因为你不需要处理纹理,而那个函数主要难在处理纹理上),只是平面的方程不同而已

这个函数确实是难看懂,我以前也略为看过,不是很懂,主要是重心坐标(处理纹理)那部分比较难懂,大家交流交流啊,你看懂也要讲解给我知道啊,呵呵
我的QQ:83023094 ,加的时候请注明游戏开发
linsir000 2003-11-20
  • 打赏
  • 举报
回复
先谢了
我知道你的意思,你的这个方法应该也和PICK里的这个函数一样。
BOOL CMyD3DApplication::IntersectTriangle(const D3DXVECTOR3& orig,const D3DXVECTOR3& dir, D3DXVECTOR3& v0,D3DXVECTOR3& v1,D3DXVECTOR3& v2,FLOAT* t, FLOAT* u, FLOAT* v )
可问题是这个函数实在有点难度,看不懂。
我还是认真研究一下这个函数。
linsir000 2003-11-19
  • 打赏
  • 举报
回复
是的,就是交点的坐标。

pzh508(小猪)兄弟知道怎么求得吗?
pzh508 2003-11-19
  • 打赏
  • 举报
回复
你是想求出交点坐标吗?

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧