游戏开发论坛

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

opengl框选实现

[复制链接]

8

主题

91

帖子

93

积分

注册会员

Rank: 2

积分
93
发表于 2007-1-4 09:27:00 | 显示全部楼层 |阅读模式
现在需要完成一个编辑器框选的功能,类似于3dmax中的功能,就是用鼠标拖拉出一个多边形出来,包含在多边形或者与多边形相交的物体被选中,高亮显示,多边形一般是矩形,可以是别的形状,以前没有做过类似功能,有做过的或者有什么思路的,欢迎讨论。

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
发表于 2007-1-4 12:26:00 | 显示全部楼层

Re:opengl框选实现

画2遍。
先画那个选择的多边形,更新stencil buffer.
然后画普通的
然后再画高亮的

8

主题

91

帖子

93

积分

注册会员

Rank: 2

积分
93
 楼主| 发表于 2007-1-4 13:29:00 | 显示全部楼层

Re:opengl框选实现

兄弟,是类似3dmax的那种框选,关键是知道哪些物体被选中了,高亮显示只是一种操作,可能还有别的操作,你说的我不是很明白,更新了stencilbuffer后,能知道哪些物体被选中了么?请详细讲讲。

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
发表于 2007-1-4 17:13:00 | 显示全部楼层

Re:opengl框选实现

o o 我搞错了。

1

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
QQ
发表于 2007-1-5 14:30:00 | 显示全部楼层

Re: opengl框选实现

先给物体建立好包围盒(用OBB比较好),可以根据Frustum筛选出一个可视集. 然后框选就可以对可视集里的物体进行判断. 判断方法:
     遍历可视集, 把每个物体的包围盒定点(共八个)投影到屏幕,得到其投影坐标. 然后再判断该投影坐标是否在鼠标所拉的方框里,只要有一个包围盒定点落入其中就可认为选中. 这样做的精度,效率还可以. 投影只是一个矩阵乘法. 判断某个点是否在矩形里非常简单, 其他多边形的判断稍微麻烦一点,也不难. 当然你还可以用其他优化方法,也可以提高选择精度

1

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
QQ
发表于 2007-1-5 14:32:00 | 显示全部楼层

Re:opengl框选实现

鼠标点的屏幕坐标和投影的二维坐标,y值不一样,要处理一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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