游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6228|回复: 13

怎样实现鼠标选择物体后就可以拖动

[复制链接]

8

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2005-7-8 15:59:00 | 显示全部楼层 |阅读模式
怎样实现鼠标选择物体后就可以拖动??
希望能给个答案。

101

主题

467

帖子

482

积分

中级会员

Rank: 3Rank: 3

积分
482
QQ
发表于 2005-7-9 09:00:00 | 显示全部楼层

Re:怎样实现鼠标选择物体后就可以拖动

1:确定你点中了那个
2:确定物体中心所在的平面(为了移动)
3:自己计算投影坐标,反向获得3D坐标
4:如果觉得自己数学还不过关就先学数学,暂时不管opengl

2

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
QQ
发表于 2005-7-10 12:23:00 | 显示全部楼层

Re:怎样实现鼠标选择物体后就可以拖动

这是有关鼠标拾取的技术 有很多相关资料可以查阅

8

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2005-7-12 10:00:00 | 显示全部楼层

Re:怎样实现鼠标选择物体后就可以拖动

能说得再具体一点吗?可以介绍一点资料

101

主题

467

帖子

482

积分

中级会员

Rank: 3Rank: 3

积分
482
QQ
发表于 2005-7-12 10:44:00 | 显示全部楼层

Re:怎样实现鼠标选择物体后就可以拖动

glPerspective函数看懂
向量分析+立体解析几何
就行了

2

主题

177

帖子

177

积分

注册会员

Rank: 2

积分
177
发表于 2005-7-12 12:19:00 | 显示全部楼层

Re:怎样实现鼠标选择物体后就可以拖动

前阵子工作中刚实现过,具体步骤:
1.获取当前鼠标位置,将其反投影回  世界空间  并用各种算法判断其是否与物体相交
2.若相交,则记录下这个位置 v0
3.在每一帧或每一次得到鼠标移动的消息时,得到新的鼠标位置v1
4.用v1-v0得到在屏幕空间上的一个2D向量,将此向量反投影回打算交互的物体的  物体空间,得到一个差向量,将此差向量  叠加入(不是替换)  到物体的平移、缩放变换矩阵中
5.在渲染时利用第4步得到的矩阵对物体进行变换并渲染,即可实现用鼠标实时控制物体,并且相对与物体的位置始终固定


比较麻烦的是第1步物体的相交测试
以及第4步对变换进行改变,这里可能你的屏幕和你实际操作的buffer中间经过了放缩,因此需要用一定的因子对你的差向量进行改变,否则错误的值会导致在拖动物体时候出现物体的移动和鼠标不同步的情况

8

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2005-7-17 16:31:00 | 显示全部楼层

Re:怎样实现鼠标选择物体后就可以拖动

有没有相应的代码
我的email shi zd121@SOHU.COM

2

主题

177

帖子

177

积分

注册会员

Rank: 2

积分
177
发表于 2005-7-19 17:45:00 | 显示全部楼层

Re: Re:怎样实现鼠标选择物体后就可以拖动

zed: Re:怎样实现鼠标选择物体后就可以拖动

有没有相应的代码
我的email shi zd121@SOHU.COM



实在很抱歉,因为是公司的项目,代码不方便放,即使放出来也会因为是基于公司项目的框架而很难看明白

0

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
QQ
发表于 2005-7-19 21:25:00 | 显示全部楼层

Re:怎样实现鼠标选择物体后就可以拖动

楼上的那里高就?

0

主题

18

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2005-8-2 11:59:00 | 显示全部楼层

Re:怎样实现鼠标选择物体后就可以拖动

新人新贴

我来说说我的实践过的方法

1.用Select模式获得你所点击的确切物体(如果不会用Select模式,还是先看看别的资料吧)
2.通过readPixel(具体函数名可能有出入)返回当前鼠标点的深度值
3.使用深度值+x,y坐标用UnProject反投影到3维空间获得x,y,z坐标
4.这一步是否为好方法我不敢说,你可以自己尝试
   确定你要拖动物体的平面,在发生鼠标拖动事件时单独绘制该平面(一定要打开双桢缓存或3桢缓存,否则会显示在屏幕上,这不是所希望的),马上使用2,3的方法获得新的x',y',z'。然后清除桢缓存,绘制原有的场景
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-27 18:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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