理论教育 控制父子关系-VegaPrime虚拟现实开发技术

控制父子关系-VegaPrime虚拟现实开发技术

时间:2023-11-24 理论教育 版权反馈
【摘要】:但相对于父节点,子节点是静止不动的。对于父子关系的设置,代码非常灵活自由,主要有:直接利用addChild 方法。利用vpTransform 对象,把转换作为父节点的儿子,把子节点作为转换的儿子,这样也可以建立父子关系。图6.17.1定义坦克为汽车的子物体运行程序,点击运行按钮,将出现图6.17.2所示的画面,键盘控制汽车的同时,坦克将随汽车一起运动。图6.17.2添加坦克为汽车的孩子

控制父子关系-VegaPrime虚拟现实开发技术

对于Vega Prime应用程序中的父子关系,首先要认识到这样一个基本的事实:场景中所有的对象都是场景的后代,场景是节点容器,场景是场景图形的根节点。另外,对于子节点,它的位置姿态都是相对于父节点而言的。如果父节点产生了位置姿态的变化,子节点将跟随父节点产生同样的位置姿态变化。但相对于父节点,子节点是静止不动的。同时,也可以单独对子节点进行操作,而父节点保持原样不变。

对于父子关系的设置,代码非常灵活自由,主要有:

(1)直接利用addChild 方法。

(2)直接利用push_back_child 方法。

(3)利用vpTransform 对象,把转换作为父节点的儿子,把子节点作为转换的儿子,这样也可以建立父子关系。

在前面的代码中,可以看到以下代码:

pScene_myScene->addChild(pObject_terrain);

pScene_myScene->addChild(pObject_farmhouse);

pScene_myScene->addChild(pObject_Hummer);

pScene_myScene->addChild(pObject_gainstore);

pObject_farmhouse->addChild(pFxDebris_Debris);

其中,前4句分别是把地形、房屋、汽车和粮仓添加为场景的“孩子”,而第5句则是把碎片特效添加为房屋的“孩子”。(www.daowen.com)

在应用开发中,将加入一辆坦克作为汽车的子节点。这样,坦克将跟随汽车一起运动,但坦克可以有自己的操作。

首先,需要准备好素材。与前面动态添加物体一样,把"C:/Program Files/MultiGen-Paradigm/resources/data/models"目录下的"m1_tank"文件夹复制到应用程序的data 目录下,将使用其中的文件。

接着,利用路径搜索对象添加坦克文件的路径:

pSearchPath_mySearchPath->append(CTS_RunPath+"//data//m1_tank");

具体定义坦克对象的代码与动态加载物体的绝大多数代码相同,只是要注意最后一句“pObject_Hummer->addChild(pObject_m1_tank);”,把坦克添加为汽车的“孩子”,而不是添加为场景的“孩子”。详细代码如图6.17.1所示。

图6.17.1 定义坦克为汽车的子物体

运行程序,点击运行按钮,将出现图6.17.2所示的画面,键盘控制汽车的同时,坦克将随汽车一起运动。

图6.17.2 添加坦克为汽车的孩子

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈