|
楼主 |
发表于 2009-7-30 23:14:07
|
显示全部楼层
本帖最后由 dlhuaan 于 2009-7-30 23:31 编辑
我查了以前论坛里的资料:windowCoord = worldCoord * VM * PM * WM
---------------------------------------------------------------------------------
原点世界坐标osg::Vec3(0.,0.,0.),以下代码:
osg::Vec3 winPos =osg::Vec3(0.,0.,0.)*(viewer->getCamera()->getViewMatrix() )* (viewer->getCamera()->getProjectionMatrix() )* (viewer->getCamera()->getViewport()->computeWindowMatrix());
std::cout <<"Windows Position X:"<<winPos.x()<<" Y: "<<winPos.y()<<" Z: "<<winPos.z()<<":::\n";
答案怎么不对呢?调了半天,没找出原因。
结果是:Windows Position X: -1.#IND Y: -1.#IND Z: -1.#IND
----------------------------------------------------------------
使用projectObjectIntoWindow方法,
世界坐标点osg::Vec3(0.,0.,0.)的Windows Position X: 400 Y:300,好像是正确的。
但是,世界坐标点osg::Vec3(-6.,0.,0.)的结果是:Windows Position X: -2000 Y:300
这个好像不对,我的屏幕分辨率是600x480,怎么会出来-2000呢?
我是新手,呵呵,概念有点混乱,查了一些网上的代码,不理解,困扰中~恳请版主或者大侠们解释一下。 |
|