游戏开发论坛

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

如何把窗口上的鼠标点击点,影射到世界坐标里面去???

[复制链接]

12

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2007-2-14 18:30:00 | 显示全部楼层 |阅读模式
新手问题啊。
我主要是想做求交。
就是 摄象机视点到鼠标点影射到投影空间近平面(或者远平面)上的交点
这个交点在世界坐标系中的位置怎么算??

5

主题

77

帖子

77

积分

注册会员

Rank: 2

积分
77
发表于 2007-2-14 20:23:00 | 显示全部楼层

Re:如何把窗口上的鼠标点击点,影射到世界坐标里面去?

OpenGL和D3D都有相应的函数

37

主题

180

帖子

180

积分

注册会员

Rank: 2

积分
180
发表于 2007-2-15 00:20:00 | 显示全部楼层

Re:如何把窗口上的鼠标点击点,影射到世界坐标里面去?

将mouse point 用视角矩阵转换..扣出的向量...

         |
mouse -->| ----->  向量
         |
         crt
       (投影面)

接下来就是向量跟3角面的碰撞侦查

8

主题

390

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-2-16 08:14:00 | 显示全部楼层

Re:如何把窗口上的鼠标点击点,影射到世界坐标里面去?

参考dx sample之“Pick”(mouse picking)

3

主题

89

帖子

89

积分

注册会员

Rank: 2

积分
89
QQ
发表于 2007-2-18 22:29:00 | 显示全部楼层

Re:如何把窗口上的鼠标点击点,影射到世界坐标里面去?

计算3D空间到屏幕空间的复合变换矩阵的逆变换矩阵,就可以把屏幕上的2D向量还原成3D空间的一条射线。
之后就是射线上的几何求交了。只有知道屏幕上某个点对应的Z深度,才能还原3D空间的一个点。

现成函数有不少,都是傻瓜函数,但使用之前了解一下原理也是不错的。

事实上实现pick也可以用正向思维,将需要检测的3D对象的简单包围体投影到屏幕空间,看看是否覆盖了某个点。

6

主题

396

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
发表于 2007-2-19 23:11:00 | 显示全部楼层

Re:如何把窗口上的鼠标点击点,影射到世界坐标里面去?

要计算几个逆矩阵,怎么把世界坐标系中的物体变换过来的,就怎么逆变换回去
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 13:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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