游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3233|回复: 5

求d3d中实现鼠标拾取代码,没有的话也进来指教一下。

[复制链接]

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2005-6-1 18:47:00 | 显示全部楼层 |阅读模式
我写了一个鼠标拾取的程序,就是实现不了对mesh的拾取。
很显然应该是转换出来的射线方向和观察点有问题。我是跟
着资料写的,自己实在看不出来毛病。如果哪位有已经实现
的源代码麻烦给我看看(给个完整的函数就行)。我也把我
的代码附上,哪位没代码但知道怎么做的也麻烦给我看一下。
谢谢了。

sf_200561184659.rar

43.72 KB, 下载次数:

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2005-6-1 19:00:00 | 显示全部楼层

Re:求d3d中实现鼠标拾取代码,没有的话也进来指教一下。

D3DXMATRIX matProj;
        m_pd3dDevice->GetTransform( D3DTS_PROJECTION, &matProj );

        POINT ptCursor;
        GetCursorPos( &ptCursor );
        ScreenToClient( m_hWnd, &ptCursor );

        // Compute the vector of the pick ray in screen space
        D3DXVECTOR3 v;
        v.x =  ( ( ( 2.0f * ptCursor.x ) / m_d3dsdBackBuffer.Width  ) - 1 ) / matProj._11;
        v.y = -( ( ( 2.0f * ptCursor.y ) / m_d3dsdBackBuffer.Height ) - 1 ) / matProj._22;
        v.z =  1.0f;

        // Get the inverse view matrix
        D3DXMATRIX matView, m;
        m_pd3dDevice->GetTransform( D3DTS_VIEW, &matView );
        D3DXMatrixInverse( &m, NULL, &matView );

        // Transform the screen space pick ray into 3D space
        vPickRayDir.x  = v.x*m._11 + v.y*m._21 + v.z*m._31;
        vPickRayDir.y  = v.x*m._12 + v.y*m._22 + v.z*m._32;
        vPickRayDir.z  = v.x*m._13 + v.y*m._23 + v.z*m._33;
        vPickRayOrig.x = m._41;
        vPickRayOrig.y = m._42;
        vPickRayOrig.z = m._43;


D3D 里的代码

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-6-1 19:17:00 | 显示全部楼层

Re:求d3d中实现鼠标拾取代码,没有的话也进来指教一下。

DX有

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
 楼主| 发表于 2005-6-1 19:23:00 | 显示全部楼层

Re:求d3d中实现鼠标拾取代码,没有的话也进来指教一下。

恩,有进展了(再检查一下,可能是哪里有点错误)。
我在和逆矩阵相乘的时候用的是D3DXVctor3Transform,
看来这个函数并非是向量×矩阵。哈哈,谢谢了。

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
 楼主| 发表于 2005-6-1 20:15:00 | 显示全部楼层

Re:求d3d中实现鼠标拾取代码,没有的话也进来指教一下。

没问题了,谢谢。

54

主题

2916

帖子

3765

积分

论坛元老

Rank: 8Rank: 8

积分
3765
QQ
发表于 2005-6-3 10:15:00 | 显示全部楼层

Re:求d3d中实现鼠标拾取代码,没有的话也进来指教一下。

能适用于2D的Ortho视角吗???
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 21:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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