Skip to content

2.Change Different Constraint Effect 修改不同的杆件属性

OneYoungMean edited this page Jul 31, 2020 · 3 revisions

2.Change Different Constraint Effect 修改不同的杆件属性

节点和杆件

这部分基础内容有些枯燥,你可以跳过,但是当你需要它的时候记得回来看看XD.

  • 节点(Point) 大概意思是与被识别到的transfrom对应的数据,脚本通过这些数据来读取和修改这些tranform.

  • 节点主要有两种,一种是普通的节点,它们是固定节点的子节点,大部分时候我们都不会讨论它;一种叫做 固定节点 ,他的位置相对于角色固定,通常是没有父节点的那个节点.

  • 还有一种特殊的虚拟节点,他们通常由脚本自动生成transfrom,我们会在之后提到它.

  • 杆件(Constraint) 是存在与两个节点之间的一个弹簧结构,通过杆件,你可以把两个节点连接在一块.

  • 与Dynamicbone不一样的是,ADB不但通过位置计算,同时也会计算杆件的拉伸和压缩来取得更加精确的结果.

  • 杆件分为六种,分别是
    垂直相邻杆件(两个垂直相邻的节点之间的杆件)
    水平相邻杆件(两个水平相邻的节点之间的杆件)
    网状分布杆件(方形两个对角节点之间的杆件)
    垂直相间杆件(两个垂直相间的节点之间的杆件)
    水平相间杆件(两个水平相间的节点之间的杆件)
    放射分布杆件(从固定节点到其子节点之间的杆件)


为一个模型选择合适的杆件

如何使用它们需要有一点想象力,你需要大概想象这么一个木架子,然后对它的稳固性质进行推导,这有点儿抽象,但是我没办法更好描述它,请谅解(笑)
在场景2当中,我给出了几种常用的杆件组合,分别是三个裙子和三个头发,你可以直接运行它并看到对应的效果.

如何修改杆件

抱歉,直到现在我们才开始讲这个问题XD.
控制杆件的参数有很多,不过大部分你几乎都用不到,这里我们只选择最重要的进行说明.

1.首先,你需要记住你的关键词,然后双击最上面的Globalsetting文件,再找到你关键词对应的Setting文件,双击.

2.其次,你需要翻到杆件那一栏,找到这六种不同的选项,选择你喜欢的组合.
忽略那些多余的选项,现在我们不需要用到它XD.

3.运行场景,然后查看效果.


4.假设你已经处于运行中状态,你会发现这个时候你的修改是无效的,因为内部物理系统已经获取了外部数据,并不会因为外部的修改而变化.

5.此时,当你重复完1-2步,场景已经绘制好杆件的时候,为了能够使应用生效,你需要回到一开始的Controller界面,找到[重置所有节点数据并重新运行].

6.大功告成,现在新的数据已经被刷入内部物理系统了.

最后,虚拟节点的设置

在有些时候,某些节点可以通过旋转来影响mesh,并且它没有子节点,脚本并不知道它正确的朝向应该是哪里.
这个时候,我们会采用 虚拟节点 ,来赋予其一个物理效果.
在下面这个演示中,我将会简单介绍怎么添加虚拟节点.

1.首先,在演示中,立方体只有唯一一个节点进行控制.我们将它导入脚本并运行,发现它并没有获得物理效果.

2.我们打开其对应的setting文件,找到[允许生成虚拟节点]选项并勾上.并回到主界面刷新.

3.可以看到,在最开始的节点下面已经自动生成一个新的节点hair virtual了,并且已经正确的被脚本识别出来并朝向它.

还有一点要补充的...

  • 需要注意的是,Setting文件在无论是在运行中还是编辑中都是及时保存的,这意味着你的改动并不会因为调试终止而被还原.
    所以,请不要模仿我随意改动Setting文件,这是一个很差的习惯XD.
  • 此外,一份Setting文件是可以被多个GlobalSetting引用的,这意味着你的改动很可能会造成意想不到的结果,所以请平时做好Setting文件的备份.