游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2148|回复: 6

请教, 怎样用鼠标选中三维空间中的一个顶点?

[复制链接]

6

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
QQ
发表于 2007-4-29 19:02:00 | 显示全部楼层 |阅读模式
怎样用鼠标选中三维空间中的一个顶点?
  鼠标在窗口平面上的点击,应该转换为三维空间中的一条射线,判断哪一个顶点在这条射线上或附近.
  我的想法,在鼠标点击时获得在窗口平面上的坐标Point(x,y),根据观察矩阵matView中的pEye(眼睛的位置),pAt(观察的方向)来确定这条射线.
  我想知道,在D3D里,有没有一个帮助函数能够帮我们完成这个转换?

1

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2007-4-29 20:31:00 | 显示全部楼层

Re:请教, 怎样用鼠标选中三维空间中的一个顶点?

鼠标位置P转换到3维空间, 眼睛位置-&gt 确定射线

6

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
QQ
 楼主| 发表于 2007-4-29 20:47:00 | 显示全部楼层

Re:请教, 怎样用鼠标选中三维空间中的一个顶点?

也就是,根据眼睛的位置判断点P在三维空间中的位置坐标,
       再根据观察的方向来判定所求射线的方向(射线方向与观察方向平行).
是不是这样?

1

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2007-4-29 21:25:00 | 显示全部楼层

Re:请教, 怎样用鼠标选中三维空间中的一个顶点?


鼠标位置*视口逆变换*投影逆变换*视图逆变换得到三维位置 之后减pEye(眼睛的位置)
与pAt(观察的方向) 无关(除非你用的投影矩阵是正交投影)

6

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
QQ
 楼主| 发表于 2007-4-30 10:18:00 | 显示全部楼层

Re:请教, 怎样用鼠标选中三维空间中的一个顶点?

感谢!
不好意思,本人是菜鸟,还想问的再清楚一点.
视口逆变换 投影逆变换 视图逆变换 这三个是不是世界矩阵的逆矩阵,投影矩阵的逆矩阵,观察矩阵的逆矩阵?
鼠标位置看作矩阵的话是2*1矩阵, 这三个矩阵是4*4矩阵,不能直接相乘.
怎样转换呢?

1

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2007-4-30 11:45:00 | 显示全部楼层

Re:请教, 怎样用鼠标选中三维空间中的一个顶点?

视图逆变换 = 观察矩阵的逆矩阵
投影逆变换 = 投影矩阵的逆矩阵
视口逆变换  这个其实就是把屏幕空间坐标转换到裁减空间
世界矩阵的逆矩阵 这个不需要
鼠标位置P p.x与p.y 就是DINPUT 的LX与LY , p.z可以用近裁减面:远裁减面
P*视口逆变换 得到裁减空间坐标
再*投影逆变换 得到视图(摄像机)空间坐标
再*视图逆变换 得到鼠标在3维世界空间的实际位置

6

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
QQ
 楼主| 发表于 2007-4-30 12:15:00 | 显示全部楼层

Re:请教, 怎样用鼠标选中三维空间中的一个顶点?

非常感谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 15:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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