|
发表于 2011-3-23 21:12:10
|
显示全部楼层
对于您说的橡皮筋,我认为可以先确定几个控制点,然后插值生成一个封闭线框;
第2个问题:您在选中某模型时,应将其节点记录下来(如果是多个,则可以使用vector、array进行记录),这个节点状态是高亮之前的状态,并设置线框颜色,然后设置一个信号量来表示当前已经完成高亮标记操作;当您再一次选择模型时,先对信号量判断,若已高亮标记了,则需要将原高亮模型对象进行标记恢复,然后再重复上面的操作即可。
大致就是这几个调用及判断:
osgFX::Scribe* parentAsScribe = dynamic_cast<osgFX::Scribe*>(parent);
if (!parentAsScribe)
{
//如果对象选择到,高亮显示
osgFX::Scribe* scribe = new osgFX::Scribe();
scribe->setWireframeColor(osg::Vec4(1.0,1.0,0.0,1.0));
scribe->addChild(node);
parent->replaceChild(node,scribe);
……
//判断交集,查找您要标记的节点,并进行记录
}else{
……
} |
|