-
Notifications
You must be signed in to change notification settings - Fork 141
Q&A
A: 从纯粹的物理学上来讲,这只是一个有碰撞体,节点和杆件的物理模型,而不是检测mesh是否重叠的图形学黑科技
所以,一般有两种情况:
情况A:碰撞体没能覆盖住mesh
你在制作碰撞体的过程中没有完整的将mesh包裹进去,漏了一部分在外面,请尝试修改碰撞体的位置参数与半径大小;
另外,有时候目标的碰撞体与其组件上的transfrom位置过远,也可能导致这个状况,并非是脚本有问题,而是由于transfrom在旋转的过程当中也会带着碰撞体绕其position旋转,一个经典的例子就是案例当中的miku模型,由于盆骨的位置实在太高,一旦稍微转动就会导致一个距离较远的胶囊体跑偏,最终被删掉了;
你可以尝试创建一个新的gameobject,并使其一直处于你理想的位置.
情况B:迭代的次数过低.
高次数的迭代意味更加庞大的性能开销,并随着次数的增多线性增长,但同时也意味着更仔细的分割移动情况与计算新位置.
迭代次数越高,其对于碰撞体运动轨迹与节点的运动轨迹的切片就越密集,这是高速运动(图中胶囊体相当等于每秒24m)下迭代32次的场景:
A:建议依次检查以下几个方面:
是否有有约束在碰撞体的范围内:常见于裙子这种有需要约束围一圈的情况,目前经常出现的情况有盆骨附近的碰撞体过大导致挤压了skirt,请调整碰撞体大小.
尝试提高迭代次数: 这是个很有效,但是治标不治本的方案,通常而言,正常的参数设置不会出现异常的颤动情况.
避免超出常规的设定参数:我承认把重力设置为10或者把某些参数设置成-1会让场景很酷,但是在低次数的迭代下这会导致频繁的颤动与一些奇怪问题.
避免不合理的杆件设定:不合理的杆件设定(比如对头发使用shear)可能会导致一些奇怪的效果,其中就包括震颤.
动作本身的问题:如果是该问题,则颤抖无法避免,一个有趣的小解决方案是取消unity对于动画的压缩,通常能得到一定缓解.
A:Collider是否与骨骼发生碰撞一共有三个参数在控制 :
1.ADBEditorCollider上的是否开启选项.
2.碰撞体属性与目标骨骼的接受碰撞体的属性不符合.
3.主面板上的碰撞模式选项为成不计算碰撞.
由于骨骼除了位移,还会有旋转的因素,这会影响到后续节点对复位的判断.除此以外,多线程也是影响因素的主要来源,如果这种情况很严重,请关闭多线程模式并查看效果.
A:UntiyChan请访问https://unity-chan.com/
Miku模型一作是DigitrevX大佬,我是二作,经过大佬同意,可以在非商业的模式下使用该模型,商业需求请上D站联系DigitrevX大佬.
R1N4为公开免费模型,使用前可以参考一下其免费协议,同时强烈安利这个大佬的其他模型XD.
如果仍然存在请发issue.
A: 说出来你们可能不大相信,相比于曾经的DynamicBone,我们在性能上做到了及其夸张,甚至有点匪夷所思的地步.
该套物理系统在60帧的情况下,支持128名角色的物理模拟,任意两个角色都可以互相发生碰撞
在一些极端的性能情况下,它甚至可以异步执行物理!
我在示例中的场景6中制作了该场景,你可以访问example文件夹进行查看.
A: 这是一个好问题,如果你了解C#,你可以快速参考一下ADBConstraintReadAndPointControll:665.不了解也没关系,这是一个脚本读取处理过程图
另外,所有含有列表的设定中,都是排在前面的优先级高于排在后面的优先级
A: 这是因为浮点误差,一个极大的值加上一个极小的值会导致极小的值位置出现偏差.目前我没有很好的方法解决这个问题,你可以尝试降低迭代次数,增大单次迭代长度来减轻这种奇怪现象.
A: 还不是很清楚,哪位大佬帮忙试一下XD
A:想要做到这一些并不难,但是这样做需要一个物理核心以及一些必要的辅助措施;但是这会让这个项目显得很臃肿,脱离了我对它原有的设想,所以我并不打算这样做.
如果您使用该项目的时候的确遇到了性能上的瓶颈,你可以发issue或者联系我的邮箱以获得进一步的帮助.
A:确保jobs库已经正确安装就行,如何安装请参考这里https://www.bilibili.com/video/av543359862/