游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7634|回复: 18

OpenGL里点击选择地形坐标位置的问题

[复制链接]

3

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-1-15 00:56:00 | 显示全部楼层 |阅读模式
请问一下,当我渲染一个地形后,当鼠标在地形表面上的点击
的时候,如何获得该鼠标点击位置的地形坐标(x,y,z)?

私下问了几个搞OpenGL 2~3年的(也是业余玩的),都说不知道,
难道这个问题很难嘛?

我是用的heightmap生成的地形图,就是focus on 3D program里面的例子

[em7]

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-1-15 22:59:00 | 显示全部楼层

Re:OpenGL里点击选择地形坐标位置的问题

搜以前类似的帖子吧。。。

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2007-1-15 23:31:00 | 显示全部楼层

Re:OpenGL里点击选择地形坐标位置的问题

如果鼠标坐标是(x,y),分辨率是800*600的话

那么你指的方向是从 (0,0,0) 到
( (x-400)*tan(fovy/2)*屏幕宽高比/400,(y-300)*tan(fovy/2)/300,1)的直线。

你再用数学和几何计算求出 你自己设计的地面与该直线的焦点的坐标(x,y,z),便OK了。

1

主题

102

帖子

108

积分

注册会员

Rank: 2

积分
108
QQ
发表于 2007-1-17 20:07:00 | 显示全部楼层

Re:OpenGL里点击选择地形坐标位置的问题

我这么想:
一开始先给节点计算包围球

然后用gluUnProject得到鼠标指向的射线,并确定方程
然后遍历树,和包围球求交,若相交继续遍历子节点,若交到最后一级的包围球,计算平面法向量并确定点法式方程,解三元一次方程组,就是结果

9

主题

688

帖子

688

积分

高级会员

Rank: 4

积分
688
发表于 2007-1-17 22:14:00 | 显示全部楼层

Re:OpenGL里点击选择地形坐标位置的问题

遍历拾取射线可能扫过的地形片,行不行?
因为地形的高度是有范围的,只要观察的方向与地平面的夹角足够大,需要判断的地形片应该不会太多。

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2007-1-18 01:21:00 | 显示全部楼层

Re:OpenGL里点击选择地形坐标位置的问题

楼上说的好象很有道理呀!

95

主题

1089

帖子

3301

积分

论坛元老

Rank: 8Rank: 8

积分
3301
QQ
发表于 2007-1-23 10:13:00 | 显示全部楼层

Re:OpenGL里点击选择地形坐标位置的问题

其实我很喜欢做好人的,能者多劳是人类不公平的规律,但是好人都只是吃亏而已!
其实鼠标拾取最简单的,如果你知道xy指向的z坐标你还搞不定吗,z坐标用这函数搞就行:
glReadPixels(scrX,scrY,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,depth);
...
碰撞才是头疼的问题!

95

主题

1089

帖子

3301

积分

论坛元老

Rank: 8Rank: 8

积分
3301
QQ
发表于 2007-1-23 10:40:00 | 显示全部楼层

Re:OpenGL里点击选择地形坐标位置的问题

唉,楼上的兄弟说的好听啊,如果拾取能判断方向就好了,那么就不用愁碰撞问题咯。
你对碰撞有高见吗,说不定你是我一样的怪人有特别的见解说出来让我学习吗?

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2007-1-23 11:01:00 | 显示全部楼层

Re: Re:OpenGL里点击选择地形坐标位置的问题

huangjinlu: Re:OpenGL里点击选择地形坐标位置的问题
glReadPixels(scrX,scrY,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,depth);

这个方法,只适合在 "平行投影" 里使用吧?
如果摄象机是斜视45度,而且是俯视视角,怎么测?

95

主题

1089

帖子

3301

积分

论坛元老

Rank: 8Rank: 8

积分
3301
QQ
发表于 2007-1-23 13:24:00 | 显示全部楼层

Re:OpenGL里点击选择地形坐标位置的问题

都已经搞到这个点在世界坐标里的坐标了,何愁搞不到他矩阵里对应里的坐标呢,如果真的需要就取回矩阵来计算不就行咯。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-20 20:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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