+ -
当前位置:首页 → 问答吧 → open inventor屏幕坐标转换三维坐标,愿意帮忙并解决问题的小弟RMB酬谢了。

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;
}

作者: xiao74485   发布时间: 2011-11-25

帖子千万别沉啊,急呀 在线等。麻烦高手帮帮忙。

作者: xiao74485   发布时间: 2011-11-25

看到木有人来拯救我?

作者: xiao74485   发布时间: 2011-11-28