06搜索并控制开关节点和自由度节点实用.pdfVIP

06搜索并控制开关节点和自由度节点实用.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
搜索并控制开关节点和自由度节点 对于包含开关节点和 DOF (自由度)节点的场景图形,可以搜索指定的节点并更新其 内容。模型文件可能包含了各种不同的节点类型, 用户通过对这些节点的使用来更新和表达 模型的各个部分。 使用 osgSim::MultiSwitch 多重节点可以在多个模型渲染状态间进行选择。例如,对坦 克模型使用多重节点, 用户即可自行选择与完整的或者损坏的坦克相关联的几何体以及渲染 状态。模型中还可以包含 DOF 节点,以便清晰表达坦克的某个部分。例如炮塔节点可以旋 转,机枪节点可以升高。炮塔旋转时,炮塔体(包括机枪)的航向角( heading)与坦克的 航向角相关联,而机枪抬升时,机枪的俯仰角( pitch )与炮塔的俯仰角相关联。 对这些节点进行更新时, 我们需要一个指向节点的指针。 而我们首先要获取节点的名字, 才能得到该节点的指针。 而获取节点的名称, 主要有这样一些方法:咨询建模人员;使用其 它文件浏览器 (对于.flt 文件,可以使用 Creator 或者 Vega)浏览模型;或者使 OpenSceneGraph。 用户可以根据自己的需要自由运用 OSG 的功能。 例如在场景图形中载入 flt 文件, 并且在仿 真过程中将整个场景保存成 .osg 文件。 osg 文件使用 ASCII 格式保存,因此用户可以使用各 种文本处理软件(写字板,记事本)对其进行编辑。在坦克模型文件中,你可以发现一个名 为“ sw1”的开关节点,它有两个子节点“ good”和“ bad”,分别指向坦克未损坏和损坏的 状态。 findNodeVisitor.h #ifndef FIND_NODE_VISITOR_H #define FIND_NODE_VISITOR_H #include osg/NodeVisitor #include osg/Node #include osgSim/DOFTransform #include iostream #include vector // 构造用户类 class findNodeVisitor : public osg::NodeVisitor { public : findNodeVisitor(); findNodeVisitor( const std::string searchName) ; virtual void apply(osg::Node searchNode); virtual void apply(osg::Transform searchNode); void setNameToFind(const std::string searchName); osg::Node* getFirst(); typedef std::vectorosg::Node* nodeListType; nodeListType getNodeList() { return foundNodeList; } private : std::string searchForName; nodeListType foundNodeList; }; #endif findNodeVisitor.cpp #include findNodeVisitor.h // 默认构造函数,初始化 searchForName函数,设置遍历方式为向子节点遍历 findNodeVisitor::findNodeVisitor() : osg::NodeVisitor(TRA VERSE_ALL_CHILDREN), searchForName() { } // 带有字符串参数的构造函数 // 用用户自定义的字符串初始化 searchForName函数 // 设置遍

文档评论(0)

肖四妹学教育 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档