社区
图形处理/算法
帖子详情
在OpenGL中如何通过鼠标得到所点击点的三维坐标
susanyw
2004-07-08 08:01:27
通过确定视角 等信息后,如何通过鼠标点击 得到某点的三维坐标
...全文
1472
15
打赏
收藏
在OpenGL中如何通过鼠标得到所点击点的三维坐标
通过确定视角 等信息后,如何通过鼠标点击 得到某点的三维坐标
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
alphapaopao
2004-08-31
打赏
举报
回复
呵呵
syy64
2004-08-30
打赏
举报
回复
哥们,还不结帖呀,可得讲信誉呀。
kathywp
2004-07-15
打赏
举报
回复
这个代码比较少啊 :) 能简单解释一下吗?
double Coor[3];
这个就是最后返回的三维点坐标
最后一行错了,是
gluUnProject(X, View[3]-Y-1, depth, Model, Proj, View, Coor, Coor+1, Coor+2);
呵呵,不好意思
大概流程就是先获得深度平面,然后定位具体坐标位置
susanyw
2004-07-15
打赏
举报
回复
是啊,本人很感激同志们,向你们致敬 :) 那太平洋 兄能给我发一份完整代码吗 :)
houk352@nenu.edu.cn
syy64
2004-07-15
打赏
举报
回复
我帖子上的代码已经很完整了,我再给你一些地址,上面有解释和更多的代码:
http://community.csdn.net/Expert/topic/3146/3146805.xml?temp=.948559
http://community.csdn.net/Expert/topic/3115/3115928.xml?temp=.6338007
http://community.csdn.net/Expert/topic/3143/3143497.xml?temp=.9614374
susanyw
2004-07-14
打赏
举报
回复
这个代码比较少啊 :) 能简单解释一下吗?
kathywp
2004-07-14
打赏
举报
回复
#include <gl\glu.h>
double Model[16],Proj[16];
int View[4];
glGetDoublev(GL_MODELVIEW_MATRIX,Model);
glGetDoublev(GL_PROJECTION_MATRIX,Proj);
glGetIntegerv(GL_VIEWPORT,View);
float depth = 0.0;
//读取深度信息
glReadPixels(X, View[3]-Y-1, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth);
double Coor[3]; // 返回值
gluUnProject(X, View[3]-Y-1, depth, Model, Proj, View, Coor, Coor+1, Coor+1);
syy64
2004-07-14
打赏
举报
回复
我的代码可是通过验证的。
viviyw
2004-07-13
打赏
举报
回复
up!
snowegale888
2004-07-10
打赏
举报
回复
up
hmsxg4160
2004-07-09
打赏
举报
回复
看看论文:一种平行透视下的三维拾取方法
2002年2月第32卷第1期
西北大学学报(自然科学版)J
hmsxg4160
2004-07-09
打赏
举报
回复
场景中物体在世界坐标系,屏幕显示为局部二维坐标系,首先要变换世界坐标系到局部二维坐标系,将鼠标点击的点作为垂直屏幕的一条射线,与物体相交就可以得到三维坐标
syy64
2004-07-09
打赏
举报
回复
// 获取光标位置的模型坐标。 2002.11.18.
CVector3 WINAPI GetMouseModelCoordinate(CVRRoomView* pView, CPoint point)
{
GLfloat fdepth;
GLdouble ObjectX, ObjectY, ObjectZ;
GLint iViewPort[4];
GLdouble dProjMatrix[16];
GLdouble dModelMatrix[16];
POINT iScreen;
int iScrToWinX, iScrToWinY;
long iError;
CVector3 pp;
CClientDC ClientDC(pView);
wglMakeCurrent(ClientDC.m_hDC, pView->m_hGLContext); //使 RC 与当前 DC 相关联
glGetIntegerv(GL_VIEWPORT, iViewPort);
glPushMatrix();
glGetDoublev(GL_MODELVIEW_MATRIX, dModelMatrix);
glGetDoublev(GL_PROJECTION_MATRIX, dProjMatrix);
::GetCursorPos(&iScreen);
iScrToWinX = iScreen.x-point.x;
iScrToWinY = iScreen.y-point.y;
glReadPixels(point.x, iViewPort[3]-point.y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &fdepth);
gluUnProject((GLdouble)point.x, (GLdouble)(iViewPort[3]-point.y), (GLdouble)fdepth, dModelMatrix, dProjMatrix, iViewPort, &ObjectX, &ObjectY, &ObjectZ);
if(ObjectX>=pView->m_pDoc->m_dModelMinX&&ObjectX<=pView->m_pDoc->m_dModelMaxX&&
ObjectY>=pView->m_pDoc->m_dModelMinY&&ObjectY<=pView->m_pDoc->m_dModelMaxY&&
ObjectZ>=pView->m_pDoc->m_dModelMinZ&&ObjectZ<=pView->m_pDoc->m_dModelMaxZ)
{
pp.x = ObjectX;
pp.y = ObjectY;
pp.z = ObjectZ;
}
else
{
pp.x = pView->m_pDoc->m_pRoamParameter->dMouseModelX;
pp.y = pView->m_pDoc->m_pRoamParameter->dMouseModelY;
pp.z = pView->m_pDoc->m_pRoamParameter->dMouseModelZ;
}
// pView->m_pDoc->m_pRoamParameter->dMouseModelX = (double)ObjectX;
// pView->m_pDoc->m_pRoamParameter->dMouseModelX = (double)ObjectY;
// pView->m_pDoc->m_pRoamParameter->dMouseModelX = (double)ObjectZ;
glPopMatrix();
iError = glGetError();
if(iError!=GL_NO_ERROR)
{
// Errinfo = gluErrorString(iResultCode);
::MessageBox(NULL, (LPCTSTR)gluErrorString(iError), "提示13:", MB_OK);
}
wglMakeCurrent(ClientDC.m_hDC, NULL);//释放 RC,以便其它 DC 进行绘图
return pp;
}
syy64
2004-07-09
打赏
举报
回复
http://community.csdn.net/Expert/topic/3146/3146805.xml?temp=.3910334
alphapaopao
2004-07-09
打赏
举报
回复
gluUnProject。
深度方向需要进一步通过基准面等方法确定。
使用
OpenGL
实现
三维
坐标
的
鼠标
拣选_-_Y___Y的专栏_-_CSDN博客
使用
OpenGL
实现
三维
坐标
的
鼠标
拣选_-_Y___Y的专栏_-_CSDN博客
OpenGL
三维
坐标
系绘图程序
本例实现在
三维
的
坐标
系
中
绘制图形,可以从COM口接收数据,并根据接收的数据在
三维
的
坐标
系
中
绘制图像。同时实现了把
三维
的曲线投影到三个平面上。
OpenGL
绘制
三维
坐标
图
自制的基于MFC、
OpenGL
平台的
三维
坐标
图程序,在vc2008编译通过
OpenGL
实现
三维
坐标
的
鼠标
拣选
OpenGL
实现
三维
坐标
的
鼠标
拣选,用
鼠标
对
三维
空间的物体进行选取,有很大的实用价值。
opengl
绘制
三维
模型可用
鼠标
控制旋转
通过
opengl
绘制
三维
模型,通过
鼠标
控制可以旋转模型,vs2010编写。
图形处理/算法
19,472
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章