open inventor屏幕坐标转换三维坐标,愿意帮忙并解决问题的小弟RMB酬谢了。
时间:2011-11-25
来源:互联网
小弟写了个算法,但是x坐标总是不对,不知道错在哪里,另外z坐标的深度值也不知道怎么取,请大神下帮忙。
SbVec3f mapViewToWorld(short x, short y, const SoWinExaminerViewer* pView)
{
short winWidth, winHeight;
SbViewportRegion vp = pView->getViewportRegion();
vp.getWindowSize().getValue(winWidth, winHeight);
SbViewVolume vw = pView->getCamera()->getViewVolume();
float z = vw.getNearDist();//????这个好像不对
SbVec2s mousePos(x, winHeight - y);
SbVec2f normvppoint;
SbVec3f curPos;
SbVec2s pt = mousePos - vp.getViewportOriginPixels();
SbVec2s size = vp.getViewportSizePixels();
normvppoint.setValue(float(pt[0]) / float(size[0]), float(pt[1]) / float(size[1]));
SbLine templine;
vw.projectPointToLine(normvppoint, templine);
SbVec3f raystart = templine.getPosition();
SbVec3f raydirection = templine.getDirection();
double scalar = (z-raystart[2])/raydirection[2];
curPos.setValue(raystart[0]+scalar*raydirection[0],
raystart[1]+scalar*raydirection[1], z);
return curPos;
}
SbVec3f mapViewToWorld(short x, short y, const SoWinExaminerViewer* pView)
{
short winWidth, winHeight;
SbViewportRegion vp = pView->getViewportRegion();
vp.getWindowSize().getValue(winWidth, winHeight);
SbViewVolume vw = pView->getCamera()->getViewVolume();
float z = vw.getNearDist();//????这个好像不对
SbVec2s mousePos(x, winHeight - y);
SbVec2f normvppoint;
SbVec3f curPos;
SbVec2s pt = mousePos - vp.getViewportOriginPixels();
SbVec2s size = vp.getViewportSizePixels();
normvppoint.setValue(float(pt[0]) / float(size[0]), float(pt[1]) / float(size[1]));
SbLine templine;
vw.projectPointToLine(normvppoint, templine);
SbVec3f raystart = templine.getPosition();
SbVec3f raydirection = templine.getDirection();
double scalar = (z-raystart[2])/raydirection[2];
curPos.setValue(raystart[0]+scalar*raydirection[0],
raystart[1]+scalar*raydirection[1], z);
return curPos;
}
作者: xiao74485 发布时间: 2011-11-25
帖子千万别沉啊,急呀 在线等。麻烦高手帮帮忙。
作者: xiao74485 发布时间: 2011-11-25
看到木有人来拯救我?
作者: xiao74485 发布时间: 2011-11-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28