查看: 1881|回复: 3

小弟被一个问题逼疯了~~向诸位大虾求助!!

[复制链接]

该用户从未签到

发表于 2009-1-6 00:46:40 | 显示全部楼层 |阅读模式
下面代码用了ortho projection,ModelView矩阵视点为(0, -16, 0),视线沿y轴正方向

设置近裁剪平面与视点距离为17,远裁剪平面与视点距离为100

这时,由于几何体的y坐标在0和1之间,应该看不到几何体才对

但是,为什么还是可以看到几何体??请各位大虾指教!!小弟谢了!!

#include <osg/DisplaySettings>
#include <osg/Geode>
#include <osg/ShapeDrawable>
#include <osgViewer/Viewer>
#include <iostream>
#include <osgText/Text>
#include <osg/Matrix>
#include <osg/Geometry>
#include <osg/Projection>

void main(){
        osgViewer::Viewer viewer ;
        osg::Camera *cam = viewer.getCamera() ;

        osg::ref_ptr<osg::Geode> geode = new osg::Geode() ;

        osg::Geometry *geom = new osg::Geometry() ;
        osg::Vec3Array *vertices = new osg::Vec3Array() ;
        vertices->push_back(osg::Vec3(0.0, 0.0, 0.0)) ;
        vertices->push_back(osg::Vec3(1.0, 0.0, 0.0)) ;
        vertices->push_back(osg::Vec3(1.0, 1.0, 1.0)) ;
        vertices->push_back(osg::Vec3(0.0, 1.0, 1.0)) ;
        geom->setVertexArray(vertices) ;
        geom->addPrimitiveSet(new osg:rawArrays(GL_POLYGON, 0, 4)) ;
        geode->addDrawable(geom) ;

        viewer.setSceneData(geode.get()) ;
        viewer.realize() ;

        cam->setViewMatrixAsLookAt(osg::Vec3(.0, -16, 0), osg::Vec3(0, 10000, 0), osg::Vec3(0, 0, 1)) ;
        cam->setProjectionMatrixAsOrtho(-3, 3, -3, 3, 17, 100) ;

        while(!viewer.done()){
                viewer.frame() ;
        }
        //viewer.run() ;
}

该用户从未签到

发表于 2009-1-6 08:26:48 | 显示全部楼层
我想Robert已经在邮件列表中回复您了,OSG是自己计算远近平面的,可以设置DO_NOT_COMPUTE_NEAR_FAR来屏蔽这一特性。还有我帮您改了一下标题,以免有不雅的字眼出现在论坛的贴子上~~

该用户从未签到

发表于 2009-1-6 08:41:01 | 显示全部楼层
呵呵,进来看下,学习了

该用户从未签到

 楼主| 发表于 2009-1-7 00:02:13 | 显示全部楼层
嗯,已解决,谢谢~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表