查看: 1465|回复: 8

clipplane 顺序号问题

[复制链接]

该用户从未签到

发表于 2014-9-25 18:59:32 | 显示全部楼层 |阅读模式

各位大哥,我找了很多地方,都没有关于clipplane相关参数的详细说明:

请问:ClipPlane (unsigned int no) 构造函数的no是顺序号 (0~5), 因为只能定义6个?
clipped_subgraph->getClipPlane(unsigned int pos) 请问这个 pos 是根据ClipNode中clipplane的数目来确定的? 从(0~num).
pos 和 no 不是同一个东西?
感激不尽。

  1. osg::ClipNode* clipped_subgraph = new osg::ClipNode;
  2.         clipped_subgraph->setCullingActive(false);
  3.         clipped_subgraph->addClipPlane( new osg::ClipPlane( 2 ) );
  4.         if(clipped_subgraph->getClipPlane(0) == NULL){
  5.                 std::cout<<"oh my god, it is null "<<std::endl;
  6.         }
  7.         clipped_subgraph->getClipPlane(0)->setClipPlane( 0.0, 0.0, 1.0, 2);
  8.         clipped_subgraph->addClipPlane( new osg::ClipPlane( 3 ) );
  9.         if(clipped_subgraph->getClipPlane(1) == NULL){
  10.                 std::cout<<"oh my god, it is null too"<<std::endl;
  11.         }
  12.         clipped_subgraph->getClipPlane(1)->setClipPlane( 0.0, 0.0, -1.0, 2);
复制代码

该用户从未签到

发表于 2014-9-28 11:10:57 | 显示全部楼层
no是每一个clipplane唯一标识符,且最多只有六个,如果要扩展需要配合shader实现
pos是节点在父节点children列表中的索引

该用户从未签到

 楼主| 发表于 2014-9-28 15:14:13 | 显示全部楼层
gis_wudi 发表于 2014-9-28 11:10
no是每一个clipplane唯一标识符,且最多只有六个,如果要扩展需要配合shader实现
pos是节点在父节点children ...

神人! 精辟, 听君一席话,胜读半年书。

直到现在才意识到此问题。
以前使用裁剪面总是遇到莫名其妙的问题。

多谢 大哥!

该用户从未签到

 楼主| 发表于 2014-9-29 16:24:45 | 显示全部楼层
本帖最后由 rubby 于 2014-9-29 16:29 编辑
gis_wudi 发表于 2014-9-28 11:10
no是每一个clipplane唯一标识符,且最多只有六个,如果要扩展需要配合shader实现
pos是节点在父节点children ...


再请教一下gis_wudi大哥:


  1. setClipPlaneNum(unsigned int num)
  2. getClipPlaneNum()
复制代码


这两个函数是指定裁剪平面的索引(0~5),
还是设置,获取裁剪面的数量?
因为如果是索引
  1. setClipPlaneNo(unsigned int no)
复制代码

no貌似更好。

一直很糊涂,两本书在这方面说的也不一样: FreeSouth 的 step into osg
和 三维渲染引擎编程编程指南说法不一致。

麻烦你啦

该用户从未签到

发表于 2014-9-29 19:28:33 | 显示全部楼层
指定和设置有什么不同吗?
no是唯一,重复设置=更新

该用户从未签到

 楼主| 发表于 2014-9-29 22:10:19 | 显示全部楼层
gis_wudi 发表于 2014-9-29 19:28
指定和设置有什么不同吗?
no是唯一,重复设置=更新

FreeSouth 的 step into osg
和 三维渲染引擎编程编程指南说法不一致。

setClipPlaneNum(unsigned int num)
这个函数功能:一本书是说设置数量,另外一本书是说设置索引

该用户从未签到

 楼主| 发表于 2014-9-30 11:26:07 | 显示全部楼层
gis_wudi 发表于 2014-9-29 19:28
指定和设置有什么不同吗?
no是唯一,重复设置=更新

大哥,
请问一下,裁剪面的裁剪方向如何确定。
比如 z=0; 这是把z=0的上面的部分裁剪掉,还是吧z=0下面的部分裁剪掉??

多谢。

该用户从未签到

发表于 2014-9-30 13:51:04 | 显示全部楼层
setClipPlaneNum(unsigned int num)
这个函数功能:一本书是说设置数量,另外一本书是说设置索引

索引
请问一下,裁剪面的裁剪方向如何确定。

与法线相反即裁剪
另外这些问题可以轻易测试出来,没有任何提问的必要
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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