游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1428|回复: 3

怎样区域选中物体?

[复制链接]

5

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2008-3-7 22:11:00 | 显示全部楼层 |阅读模式
我想制作用鼠标选中物体,这个可以用射线与物体是否相交来实现
可是我想做一个拖动框,这个框内的物体都会被选中
什么方法比较好呢?

27

主题

179

帖子

259

积分

中级会员

Rank: 3Rank: 3

积分
259
发表于 2008-3-8 01:29:00 | 显示全部楼层

Re:怎样区域选中物体?

方法1:(简单,精确,速度慢)

每个物体用不同color,或者 depth value,或者stencil,render到一个texture,然后读回来,把选择框映射到texture的坐标,对框内所有texel,把数据读出来,然后根据 color/depth value/stencil,找出对应的物体。

方法2:  (麻烦,不精确,速度快)

根据对应的选择区域建立一个 view projection matrix, 对每个物体的AABB做 world view projection,结果在-1,1(也可能是0, 1,dx 和 ogl可能有不同,具体不记得了)可以选择。

方法3:  (麻烦,比较精确,速度中等)

同方法2,如果落在区域内,继续对每个vertex做world view projection,如果有vertex落在区域内,才选择。

方法4:  (非常麻烦,比较精确,比较快)

需要给物体建立collision capsules 或者 convex hull, 同方法2,不过做变换的是collision capsules或convex hull, 不是AABB. 不需要近一步做vertex projection.

22

主题

309

帖子

353

积分

中级会员

Rank: 3Rank: 3

积分
353
QQ
发表于 2008-3-8 12:14:00 | 显示全部楼层

Re:怎样区域选中物体?

选择框和平截头体构成另一个平截头体,再进行一次Frustum cull..

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2008-3-8 13:24:00 | 显示全部楼层

Re:怎样区域选中物体?

楼上的做法,似乎很不错

另外也可以把对象包上包围球,如果怕不精确的话,就再一些关键部位搞几个包围球,然后把包围球投影逆变换到投影平面上,想办法求出近似的圆形投影,然后和你的矩形框判断相交,剩下的只是平面的圆和矩形相交的判断了

如果有更好的做法,表示关注
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 09:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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