查看: 1691|回复: 3

如何获取两个裁剪面之间的模型

[复制链接]

该用户从未签到

发表于 2012-8-16 16:30:19 | 显示全部楼层 |阅读模式
我设置两个裁剪面,不重复,希望得到两个面之间的模型部分,该如何设置?现在我只能得到第二次裁剪之后的模型。谢谢大家!

该用户从未签到

发表于 2012-8-16 16:46:33 | 显示全部楼层
你的裁剪面id没设置好吧。

该用户从未签到

 楼主| 发表于 2012-8-16 17:45:11 | 显示全部楼层
如何设置呢,这块没有研究过,麻烦赐教!谢谢

该用户从未签到

发表于 2012-8-17 10:32:04 | 显示全部楼层
int main()
{
        setlocale(LC_ALL, "chinese-simplified");
        osg::ref_ptr<osgViewer::Viewer>viewer = new osgViewer::Viewer;
        osg::ref_ptr<osg::Group>root =new osg::Group;
        osg::ref_ptr<osg::Node> city =osgDB::readNodeFile("cow.osg");

        root->addChild(city);
        city->getOrCreateStateSet()->setMode( GL_CLIP_PLANE0, osg::StateAttribute::ON );
        city->getOrCreateStateSet()->setMode( GL_CLIP_PLANE1, osg::StateAttribute::ON );
        osg::ClipPlane* reflClipPlane = new osg::ClipPlane(0);
        reflClipPlane->setClipPlane( 0.0, 0.0, -1.0, 1 );
        osg::ClipPlane* reflClipPlane1 = new osg::ClipPlane(1);
        reflClipPlane1->setClipPlane( 0.0, 0.0, 1.0, 1 );
        osg::ClipNode*_reflectionClipNode = new osg::ClipNode;
        _reflectionClipNode->addClipPlane( reflClipPlane );
        _reflectionClipNode->addClipPlane( reflClipPlane1 );
        osg::Group * clipgroup = new osg::Group;
        clipgroup->addChild(_reflectionClipNode);
        root->addChild(clipgroup);
        viewer->setSceneData(root);
        return viewer->run();
}
这应该是你想要的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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