如何从加载的.ive模型树中旋转/转换现有的OpenSceneGraph(OSG)节点?

时间:2014-04-29 09:31:14

标签: c++ c opengl openscenegraph

我在.ive中有一个给定的模型,问题是我试图将整个树模型中的单个节点旋转出来(存在于.ive文件中)。那可能吗?我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

当然,可以做到。

首先必须找到要操作的节点。您应该能够通过创建osg :: NodeVisitor的子类来完成此操作,并使用它来遍历图形,直到找到要操作的节点。如果您为节点命名,则可以很容易地找到您要查找的节点。如果没有,你将不得不弄清楚节点的一些其他独特特征,或者只是拉出某种类型的所有节点并一次尝试一个。

然后,一旦你有了,你可以直接保存指针并对其进行操作。

参见教程:

https://www.movesinstitute.org/Sullivan/OSGTutorials/osgDOF.html

https://www.movesinstitute.org/Sullivan/OSGTutorials/osgUpdate.htm

答案 1 :(得分:1)

您必须找到与模型的该子部分对应的节点。要做到这一点,你需要确定一些关于该节点的独特之处(希望它有一个名称或其他东西)。

一旦有了这个节点,你可能需要将它从主树中分离出来,添加某种变换(可能是一个PositionAttitudeTransform),然后重新添加你的节点作为PAT的子节点。

然后你可以修改PAT中的旋转。

您可以使用像查找命名节点访问者之类的访问者来找到您想要的节点。

考虑将.ive文件转换为.osgt或.osg,以便查看文件中的结构(以及希望节点名称)。