关闭

osg::ClipNode与osg::ClipPlane

3233人阅读 评论(1) 收藏 举报
  • osg::ClipNode继承自osg::Group,功能是定义场景中裁剪面的位置。
  • osg::ClipPlane继承自osg::StateAttribute,定义一个裁剪面,可参考:glClipPlane().
  • 先看一下osg::ClipPlane的构造函数:

ClipPlane (unsigned int no, const Vec4d &plane) 
ClipPlane (unsigned 
int no, const Plane &plane) 
ClipPlane (unsigned 
int no, double a, double b, double c, double d) 

 

后四个参数其实构建了一个平面方程:

aX+bY+cZ+d=0

第一个参数指定定义哪个裁剪面,至少支持6个。

定义多个裁剪面时可调用

setClipPlaneNum 和setClipPlane 函数
  • osg::ClipNode的使用
    //创建节点    
    osg::ClipNode* clipped_subgraph = new osg::ClipNode;
    //得到subgraph节点的包围球
    osg::BoundingSphere bs = subgraph->getBound();
    bs.radius()
    *= 0.4f;
    //根据包围球创建一个6面体,刚好包住球体
    osg::BoundingBox bb;
    bb.expandBy(bs);
    clipped_subgraph
    ->createClipBox(bb);
    //添加子节点
    clipped_subgraph->addChild(subgraph);

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:278345次
    • 积分:2921
    • 等级:
    • 排名:第12567名
    • 原创:47篇
    • 转载:34篇
    • 译文:2篇
    • 评论:55条
    文章分类
    最新评论