游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5043|回复: 4

请教下OpenGL获取物体xyz坐标问题~非常感谢!

[复制链接]

1

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2009-2-21 11:44:00 | 显示全部楼层 |阅读模式
小弟初接触OpenGL~根据教程建立了3d圆筒~gluCylinder(quadratic,1.0f,1.0f,3.0f,32,32);
现欲实现一个功能:
在屏幕中用鼠标获取3D物体表面所选点的3维坐标~

如能实现应该看那方面?pick?feedback?
书上感觉讲的很笼统~没细说~感谢赐教!

试用了gluUnProject得到的坐标不对~获取的似乎的坐标z是靠glReadPixels~
可是旋转后物体上同一点坐标并不相同~而似乎和旋转没有关系~依旧是屏幕上分布的xy坐标~
是否在保存矩阵和出入栈上有应该注意的地方?恳请指教!
非常感谢!

PS:附件为工程文件~环境Vc++6.0&OpenGL~右键控制旋转~左键捕捉坐标~但是捕捉的不对*.*请赐教!

sf_2009221114342.rar

293.47 KB, 下载次数:

1

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2009-2-21 18:32:00 | 显示全部楼层

Re: 请教下OpenGL获取物体xyz坐标问题~非常感谢!

glTranslatef (0,0,-6);//glRotatef(r,1.0,1.0,1.0);
glRotatef(float(rx),1.0f,0.0f,0.0f); //  绕X轴旋转
glRotatef(float(ry),0.0f,1.0f,0.0f);

旋转后物体的同一个位置的坐标不一样了……能否帮忙分析下?

效果如下图~红圈为鼠标点击选取的点~
sf_2009221183132.jpg

0

主题

56

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2009-3-17 13:11:00 | 显示全部楼层

Re:请教下OpenGL获取物体xyz坐标问题~非常感谢!

首先你要确定你pick下来的是什么空间内的坐标。如果是世界坐标系内的坐标,那么变换前跟变换后肯定是不一样的。如果是物体本身的坐标系空间内的坐标的话,那一定是你程序写错了。

0

主题

56

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2009-3-17 13:57:00 | 显示全部楼层

Re:请教下OpenGL获取物体xyz坐标问题~非常感谢!

我没有仔细看你的代码,而且你的代码在我电脑上花不出东西,但通过Debug我发现在函数OnLButtonDown()里,在你Unproject之前,你读到的mvMatrix和projMatrix都是Identity。现在知道问题在哪了吧?应该是你Push/PopMatrix的过程有问题。

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2009-3-29 15:40:00 | 显示全部楼层

Re:请教下OpenGL获取物体xyz坐标问题~非常感谢!

gluUnProject,是这个函数,仔细检查代码吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 15:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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