查看: 3647|回复: 5

Node复制后的显示??

[复制链接]

该用户从未签到

发表于 2009-2-12 08:55:29 | 显示全部楼层 |阅读模式
我把node复制一个后叫node1,改变node1的材质属性,使得node1和node的颜色不一样,然后把node1 add到node的父节点上,为什么这时候node把node1挡住看不见了?
我把node1的 RenderBin射成20(肯定比node的RenderBin要大),设了node1的PolygonOffset,为什么还是不行?请版主给点意见,谢谢!

该用户从未签到

发表于 2009-2-12 12:20:24 | 显示全部楼层
您是如何复制的?如果要复制出一个全新的节点来,那么需要深拷贝,可以参看osgcopy这个例子,基本来说,应该是如下的写法:
  1. osg::ref_ptr<osg::Node> node1= dynamic_cast<osg::Node*>(node->clone(GraphCopyOp(osg::CopyOp::DEEP_COPY_NODES)));
复制代码
还有如果您复制之后的节点没有偏移,而是和原节点重合的话,它们的图形可能会存在Z-Fighting(斑驳)现象。

该用户从未签到

 楼主| 发表于 2009-2-12 12:56:17 | 显示全部楼层
osg::Node* node = dynamic_cast<osg::Node*>(Node1->clone(osg::CopyOp:EEP_COPY_ALL));
我是这样复制的,是和原来的节点重合 ,但是没有出现Z-Fighting(斑驳)现象。根本就看不见,但是把node输出到文件中却能看见

该用户从未签到

发表于 2009-2-12 16:04:05 | 显示全部楼层
如果复制已经成功了。那么看不到节点的原因就不好说了,比如由于场景树的结构,使得这两个节点依然指向同一个子节点,因此绘制只有一次,等等。可以给node1加一个MatrixTransform父节点偏移位置再看一看。

该用户从未签到

 楼主| 发表于 2009-2-13 22:41:02 | 显示全部楼层
那这node1是肯定有的 我把node给setnodemask(0),node1就出来了,由此可见肯定node1是复制成功了的,但是看不到那中斑驳的现象,如果我把node1放到psgFX::scrinbe下,在node->setnodemask(0),  这时候就看不见线框,不会那句的时候就能看见线框。真是不知道是为了啥

该用户从未签到

发表于 2011-12-2 10:31:30 | 显示全部楼层
您好,我也遇到你同样地问题,请问你最后是怎么解决的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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