Skip to content

7.主界面(ADBRuntimeController)介绍

OneYoungMean edited this page Aug 3, 2020 · 1 revision

概述

(ADB控制主面板)ADBRuntimeController是你与ADB物理核心进行交互的地方.
ADBRuntimeController负责收集和生成各种节点,杆件以及碰撞体,并提供了各种用于生成的选项.
ADB控制主面板分为运行时与未运行状态

未运行状态下的面板

全局关联设置

效果关联关键词文件(ADBGlobalSetting)


节点设置


搜索起始点

默认为当前脚本的transfrom,当然你可以更改它为你想要的起点

识别关键词

识别作用的关键词,如果transform的名字中包含该关键词,那么它则会被识别成带有物理效果的节点,包含该关键词的节点将会被识别,不区分大小写.

节点黑名单

被标记的transform将不会被识别(但仍然会搜索其子节点)

关键词黑名单

被标记的关键词将不会被识别(但仍然会搜索其子节点)

生成节点数据

根据条件生成的节点与杆件,如果生成正确,你可以看到不同颜色的线条所代表的杆件.
该项会在start()中自动运行.会在 生成碰撞体 中自动运行.

所有节点坐标

所有所识别到的transfrom与其相符合的 效果设置文件(ADBSetting) 组成的列表.
修改此列表并不能使得数据被读取,请按照正确的工作流程修改ADBSetting.


碰撞体设置

刷新碰撞体/生成碰撞体

刷新碰撞体:识别角色root节点下所有的碰撞体文件并返回.
生成碰撞体:生成角色全身的碰撞体,并返回识别角色root节点下面所有的碰撞体文件列表,需要勾选 自动生成全身碰撞体 才会出现

  • 请尽量在确保能够正确生成节点以后再使用此选项,碰撞体需要读取节点的数据来控制半径.

自动生成全身碰撞体

通过全身的IK关节的比例,按照一定的系数自动生成全身的碰撞体.
由于角色有所不同,所以,生成的碰撞体大部分情况下会出现偏大或者偏小的情况,我并不能保证生成的碰撞体一定就符合你的角色,但是大概能在正确的位置上.

  • 该选项在Start()会被调用,假如你勾选了该选项,脚本会在启动的时候自动生成碰撞体.
  • 如果你已经生成好了全身的碰撞体,请不要勾选此选项.会带来性能上的损失.

以所有节点作为参照

如果你勾选此选项,碰撞体将会被严格限制半径,不会与任意节点发生接触.
反之,碰撞体仍然会以固定节点为参考,保证反复抖动的情况不会发生.

碰撞体列表

所有识别到的碰撞体列表,不包括标记为全局的碰撞体.

移除碰撞体&&同时删去碰撞体脚本

移除碰撞体列表的内容,如果你勾选了同时删去碰撞体脚本,那么脚本会自动把列表中的碰撞体脚本删除.


物理设定

延迟时间

脚本在延迟时间后启动物理,最小不能低于0.

是否绘制所有辅助线

画出所有的点,线,collider以及各种杂七杂八的东西

轨迹优化

这是一个特殊的优化选项,如果你的设定中有关于刚性的系数为零,请不要采用它.
它的主要作用是优化骨骼运动的轨迹,让它看上去更加的卷曲与缓慢,更加具有动漫的质感;在高速运动下的长度会收敛的更加快速,而低速运动下则会强烈失真.
如果没有特殊要求,请不要使用该功能.

高性能模式

在高的迭代次数下(>=16),该选项会让你的运动轨迹变得不稳定,但是能提升大量的性能,迭代次数越多提升的越明显.同时该选项允许你在极大的迭代次数下异步运行物理.
如果你能够接受两个角色在做同一动作的时候,最终计算的物理轨迹结果不一样,你可以采用该选项.

迭代次数

迭代次数,核心功能.原理是对预期的路径进行切片,获得每次切片中更加精确的结果,更高的迭代次数可以减少额外的拉升,增加仿真的精确程度,提高碰撞的精确性,但是会增计算量.


风力

添加一个风力.
抱歉我的风力写的太差了,你或许可以写的好XD.

碰撞模式

按照性能开支从高到低,大概顺序是 全体碰撞>仅杆件碰撞>=仅节点碰撞>不计算碰撞
计算杆件碰撞与计算节点碰撞的原理不同,前者是保证杆件不会进入碰撞体内,后者则是保证节点不会进入碰撞体内.前者的精确度比后者高,但是性能开支有一点微小的提升.


运行状态下的面板设定

全局关联设置

效果关联关键词文件(ADBGlobalSetting)

重置所有节点位置

恢复所有节点的初始位置,初始化内部物理系统.

重置所有节点数据并重新运行.

恢复所有节点位置,重新计算所有节点数据,重新开始物理系统.
注意,该选项可能导致物理系统异常的bug(比如头发倾斜),这是一个逻辑上的bug(骨骼的初始位置已经变化),并不能从代码中直接解决.
如果你出现了该bug,请重启场景以结局.


重新绘制所有碰撞体

如果场景中碰撞体的绘制丢失,请使用此功能刷新.

是否绘制所有辅助线

画出所有的点,线,collider以及各种杂七杂八的东西

  • 该选项开销很大,关闭可以有效提高帧数

轨迹优化

这是一个特殊的优化选项,如果你的设定中有关于刚性的系数为零,请不要采用它.
它的主要作用是优化骨骼运动的轨迹,让它看上去更加的卷曲与缓慢,更加具有动漫的质感;在高速运动下的长度会收敛的更加快速,而低速运动下则会强烈失真.
如果没有特殊要求,请不要使用该功能.

高性能模式

在高的迭代次数下(>=16),该选项会让你的运动轨迹变得不稳定,但是能提升大量的性能,迭代次数越多提升的越明显.同时该选项允许你在极大的迭代次数下异步运行物理.
如果你能够接受两个角色在做同一动作的时候,最终计算的物理轨迹结果不一样,你可以采用该选项.

迭代次数

迭代次数,核心功能.原理是对预期的路径进行切片,获得每次切片中更加精确的结果.

风力

说了自己去改一下啦XD


碰撞模式

按照性能开支从高到低,大概顺序是 全体碰撞>仅杆件碰撞>=仅节点碰撞>不计算碰撞
计算杆件碰撞与计算节点碰撞的原理不同,前者是保证杆件不会进入碰撞体内,后者则是保证节点不会进入碰撞体内.前者的精确度比后者高,但是性能开支有一点微小的提升.


如何在runtime的时候添加该脚本

    void Awake()
    {
    createPhysicalControll = animatorObj.AddComponent<ADBRuntimeController>();
    createPhysicalControll.generateKeyWordWhiteList = new List<string>() { "hair", "bang", "etc" };
    //OYM:默认为hair,skirt,置空则会采用ADBGlobalSetting文件的default key
    createPhysicalControll.generateKeyWordBlackList = new List<string>() { "mesh"};//OYM:默认为ik,可不填
    createPhysicalControll.blackListOfGenerateTransform = new List<Transform>();//OYM:一般这个选项很少用到,可不填
    createPhysicalControll.iteration = 16;//OYM:默认为4,可不填
    createPhysicalControll.isGenerateColliderAutomaitc = true;//OYM:默认为true,可不填
    createPhysicalControll.isGenerateByFixedPoint = false;//OYM:默认为true,可不填
    //OYM:最好在Awake当中运行,在start当中可能会出现抢跑现象
    }
    void Update()
    { 
    createPhysicalControll.AddForce(vecotr3.forward);
        //OYM:你可以用AddForce来给你的物理系统添加一个力 .  
    }