Skip to content

8.效果设置文件(ADBSetting)&&效果关联关键词文件(ADBGlobalSetting) 介绍

OneYoungMean edited this page Aug 3, 2020 · 2 revisions

概述

效果设置文件(ADBSetting)&&效果关联关键词文件(ADBGlobalSetting)(以下直接用脚本名)为一组unity序列化的设置文件,用于可以分为两个部分:ADBSetting与ADBGlobalSetting.

  • ADBsetting用于设置具有相同关键词的一组骨骼(比如位于同一个head上的所有hair)的物理特性,约束特性和生成约束的种类
  • ADBGlobalSetting用于设置不同的关键词所采用的不同ADBSetting
  • 你可以在右键-Ceate-ADB中找到创建这两个文件的方式.同时你也可以在文件夹的/Resource/Setting目录下找到这两个文件.

ADBSetting文件概述

ADBSetting大致可以分为三部分:

1.Point Setting部分

高级曲线设定

是否采用高级的曲线形物理设定,换句话说,所有点的某项物理特性并非采用某一固定值,而是一条曲线,针对具有复杂要求的物理效果使用.

如果选上,则计算时会所有点会根据深度对框内的曲线进行取样.取样顺序按照点所在某一条链位置与链全长的比值进行取值.


重力

给所有节点添加一个朝向重力方向的力.

刚性

这个属性会添加一个返回到原始位置的力,适合用在一些不适合用重力的地方,比如裙子(大雾).
它的工作原理稍微有些不同,当低于1时会限制力的大小为一个定值,高于1时则会在基础的力上乘以一个系数.
建议范围[0~2];


怠速

怠速,每次update之后对于上一次速度的保留,设置成1将会全部保留.
如果你的头发看上去像是一根皮鞭,那么你可以考虑把它调低一些.如果你将它设置为0,则会失去所有惯性.
建议范围[0~0.99];


速度补偿

速度补偿,以该点的固定节点的速度作为参考,提供给该节点的速度的补偿的比值. 建议配合距离补偿属性使用,你可以把该选项设置成负数.
建议范围[-1~1];

距离补偿

距离补偿,即该节点的现处位置受到其固定节点的位移的影响的比值,如果是1则与固定节点保持同步移动,0则不受到fixedpoint的影响.

  • 当你的角色以100米每秒的速度奔跑,而头发却无法跟上的时候,你可以将他设置成0.99,以欺骗物理系统其实你只跑了1米,来避免无意义的高迭代次数.
  • 建议配合速度补偿使用.同样的,你可以把该选项设置成负数.
  • 高性能模式下, 即使设置成1也不能静止其运动.

建议范围[-1~1]


摩擦力

当碰撞到collider时所产生的怠速,设置成1将会使碰撞后几乎完全静止.
建议范围[0-1];


外力

节点对于外力的敏感程度,风力属于外来力,你也可以调用ADBRuntimeController.AddForce(vector3)来添加一个外力.
建议范围[0~1];


杆件力系数值/杆件基础力

这里容我偷个懒,因为对应的设置都是(某种杆件)-(舒张还是拉伸)的组合词,所以更好的办法不是一一列举而是提供每个词的含义,在这里我准备了一个详细的介绍.
这些值会作为计算这力的权重.这些词可以在这里找到相关简介. 同时,杆件最终的力量=杆件基础力*杆件力系数值;

杆件设置部分

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

允许xxx杆件碰撞

允许该杆件与碰撞体发生碰撞.

允许首尾衔接

如果不允许,则会在最末尾-最开始之间的固定节点与其子节点间生成一个拉伸与收缩的基础力都为0的特殊杆件.
这可以让你的裙子活动范围更大,但是也会增加穿模的可能性.

其他设置

是否绘制杆件

允许将杆件绘制出来.


生成虚拟节点

如果你的头发末尾仍然可以控制一部分mesh,请勾选该选项以实现末尾物理效果

适用于那些只能进行旋转运动的固定节点以及某些头发的最后一个节点,勾选以后会自动生成一个virtualpoint,用于模拟运动所产生的rotation.

允许虚拟额节点生成其他的杆件

虚拟节点默认值允许生成垂直相邻的虚拟杆件,如果你想让它与上面的节点保持一致,你可以勾选此选项.

虚拟杆件长度

虚拟节点距离其父节点的距离,当父节点没有上一级的节点的时候默认朝下,有的时候朝向其父节点朝向上一级节点的朝向.


自动计算节点质量

自动给节点质量,质量在外力与杆件受力时参与计算, 如果你不想让脚本帮你计算,你可以取消勾选并自己绘制一个质量曲线.


重力

重力轴,默认为(0,-9.81f,0);


重力轴随角色旋转而旋转

这是一个很具有争议性的设置,你可以用它来制作反重力的裙子.
在没有勾选选项之前,无论是刚性还是重力,他们最终的位置都会指向重力轴,不会因为角色的旋转受到影响.
勾选之后,重力轴将会随着角色而转动,节点的最终位置也会随着角色转动而保持同步.
假如你角色动作幅度太大导致裙子实在穿模的厉害,那么采用这个选项可以有效的防止其到处乱跑.


接收来下种类碰撞体的信息

这个选项的最大作用是允许你自定义碰撞体对撞规则.

这个选项在ADBSetting与ADBEditorCollider上同时带有,在计算当中如果两者匹配,则会进行相应的碰撞体计算.

举个例子,如果你在hair的ADBsetting当中屏蔽选项,那么当hair的杆件或者点与属性的碰撞体的时候将会跳过其计算.

一些适当的屏蔽可以提高性能,比如一些超短裙几乎不会碰到小腿,头发不会碰到脚之类的.这些取决于你对于物理的要求.

如果你想在身体与背部添加一个大号的胶囊体碰撞体防止背部头发穿模,但是又怕这个碰撞体影响到裙子,那么这个选项再适合不过了.

自动生成的ADBEditorCollider会给出生成部位的属性,手动添加的ADBEditorCollider的ColldierChoice则会默认为Other.



ADB Gloabl Setting 概述

settings

用于将不同种类的setting与关键词进行联系的设定,用于在Controller当中设置不同关键词对应的ADBSetting.

举个例子,当你给ADBRuntimeController脚本添加关键词"hair"的时候,系统并不知道将要对hair关键词采用哪一套ADBsetting,此时就需要前往其顶部的ADBGlobalSetting当中进行对应.

如果你采未录入的关键词,脚本将会默认生成一套ADBSetting进行分配,这样可能会导致效果并不理想.


DefaultKeyWord

在runtime过程中添加ADBRuntimeController脚本的时候,将其中的Generate Key Word List置空(设为null),将会调用该列表的关键词进行录入,主要用于在Runtime过程中大量加载模型时省去反复的设置.