增加父节点模块

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

增加父节点模块

作者:二鸡蛋

本文归所有,未经许可,不得转载。

上节课:“增加子节点”模块。

和“增加子节点”模块对称的是“增加父节点”模块。增加父节点也有叫“设置父节点”,它们是完全一样的。和“增加子节点一样”,都非常容易理解,对于儿子来说,找个爸爸就需要“增加父节点”模块。而对于老爹来说,要个儿子则需要“增加子节点”模块,它们只是出发点不同而已,用法都是基本相同的。

在举例之前,先说明一个数学结构问题:多父和多子问题。

一个父亲可以有多个儿子。这个儿子又有很多的儿子(孙子),情况可以这样无限制的延续下去。这种树状结构的逻辑关系清晰:任何一个节点下面所有的子节点都属于它的子节点。

我们以“平移模块”为例:当平移模块(其他模块也是一样的)中的“继承关系”参数被勾选的时候,我们将任何一个“节点”移动的时候,这个节点的“子孙节点们”都会跟着一起移动。这在逻辑上是没有任何问题的。

但一个儿子如果要有很多的父亲会出现什么情况呢?我们以下图为例说明:

虽然链表结构也可以从上图中判断由该节点之下的子节点的情况(先不考虑上图中蓝色虚线部分),但这种逻辑关系非常的混乱:由于允许“单子多父”,一旦上图中被选择节点左边或右边的节点也被指定为该节点的父亲的时候,那可就遭了,数据从树状结构变成网状结构了。一旦网状结构形成,由于数据交叉,程序就无法判断该节点的子节点是谁了。

因此,VT规定:只有“单父多子”的树状结构才能使“继承关系”这个参数生效。

我们以“平移”模块举例说明:

新建一个作品:

将茶几(CoffeeTable)、沙发(Armchair)、木板(Plank)调入到场景中:它们的位置分别在:注意木板不太好找,在资源中比较靠后的位置。

用移动键把三件物体分别移动到下图的位置,大致即可:

我们通过按下shift键,把它们都选择上,然后按下鼠标右键,设置这三个物体的初始状态。

这里我们要做的是,让茶几(CoffeeTable)有两个父亲,一个是沙发(Armchair),一个是木板(Plank)。看看“继承关系“这个参数是否会起作用:

由于我们今天要学习的是“增加父节点”模块,所以这个模块需要在子节点上使用。因此我们先拖拽一个“增加父节点”模块到茶几(CoffeeTable)上,设置它的父节点为沙发(Armchair):

然后再将这个模块拖拽到茶几的脚本流程区中:

双击打开它,将父级设置为木板(Plank),这样茶几就有两个父亲了。然后我们用鼠标将两个“增加父节点”模块连接到一起:

我们把“平移”模块拖拽到沙发上,将X方向的位移量设置为1,并保证“继承关系”参数被勾选:

为了连续移动,要将平移模块加入循环:

由于是“单子多父”的结构,因此当我们运行程序后,沙发独自移动了,而并没有带动它的儿子“茶几”移动。说明“继承关系“这个属性并没有起作用。

原因上面我们已经提到了,由于茶几有两个父亲,因此“继承关系”参数失效了。为了让茶几跟着沙发移动,我们需要将茶几与木板的父级关系删除。选择第二个“增加父节点“模块删除,然后按下IC按钮,再次按下播放按钮,这时我们希望的情况出现了,茶几跟着沙发一起移动了。

今天我们顺便把“继承关系”这个参数也彻底搞明白了,在“基础”分类中

还有三个模块我们没有学习:设置世界矩阵、设置局部矩阵和设置四元数方向。由于它们对于初学者比较难,而且也不太常用,因此我们会在“高级教程”部分继续学习它们。

下节课我们接着学习“三维变换”中的“运动”子分类。

下节课:“运动”分类简介。

相关文档
最新文档