OSG学习笔记19——再看pick点选物体

本文探讨了在OpenSceneGraph(OSG)中进行pick操作时,如何在多个重叠物体中准确选择目标物体。通过遍历获取的节点并结合节点的标签来判断选中状态。目前的实现方式是使用全局变量和map存储物体名字及可选性,作者欢迎更好的解决方案。详细pick实现可参考之前的笔记。
摘要由CSDN通过智能技术生成

之前一直使用的pick方法就是将第一个点选到的节点保存下来,如果场景中只有一个物体,当然是没有问题的。当场景中出现多个物体,并且每个物体设置了标签,是可以被修改还是不能被修改,当两个物体重合的时候就不能得到正确的结果。

正确的做法是:用迭代器遍历所有获取到的节点并再遍历nodePath,找到需要的节点,并根据标签判断其是否可以被选中来执行操作。

这里我对物体标签设置的方法应该是不够科学的,我用了一个全局变量,一个map来保存了模型的名字和一个布尔值

extern ModelIndex modelIndex;
主函数中是

std::list<ModelManage> modelList;
model1->setName("aorta");
modelIndex[model1->getName()] = true;
其中 ModelIndex是 std::map < std::string, bool >的别名,每添加一个模型,就给map中以模型节点为名字,bool为值向map中新增节点。

暂时想不到更好的方法。如果你们有好一点的想法&#

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值