zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Unity 3D 2022.1 AND UnityHub 3.2 Patch

3D and Unity 3.2 Patch
2023-09-14 09:04:10 时间

在最新的 Unity 2022.1 版本里,更新了 Physics Debugger,将助你更好地分析力的相互作用。此外,插值、批量查询等功能的性能也得到了改进。

物理调试器(Physics Debugger)改进
物理调试器(Physics Debugger)是了解物理引擎内部运作的重要工具,也是观察项目内特殊物理行为的主要手段。一个好的调试器在编写逼真、现代、丰富的物理模拟上起着关键作用。基于这点考虑,我们重新设计了调试器的用户界面(UI)并增加了一些有趣的功能。

 

为了在相同的空间内容纳更多的信息,我们将各个属性分为几组标签,并且还添加了几组新的检测属性。

Unity 2022.1版本 | Physics功能更新,让机器人感知更复杂的环境

此前,Rigidbody 和 ArticulationBody 组件在检视器内包含有一个可折叠的“Info”部分,它展开后会显示当前线性矢量等其他信息。但这样导致编辑器的整体性能出现了明显的下降。在以前,比较多个运动物体的参数很复杂,你需要同时打开两个检视器面板。为了解决这些问题,我们把所有的属性都转移到了物理调试器(Physics Debugger)窗口的“Info”选项卡上,这里会显示每个被选中对象的属性,让你可以轻松地进行并列比较。

Unity 2022.1版本 | Physics功能更新,让机器人感知更复杂的环境

工具现在支持可视化物体的接触点、接触法线和间距。

Unity 2022.1版本 | Physics功能更新,让机器人感知更复杂的环境

类似 Physics.Raycast 及 Physics.CastSphere 等 Physics 查询指令通常会被用于编写自定义的角色或载具控制器等物理行为。这些指令并不能在调试器中出现,调试起来也很棘手。为了应对这个问题,新版本的调试器支持有选择地可视化物理模拟的查询指令。

Unity 2022.1版本 | Physics功能更新,让机器人感知更复杂的环境

反向动力学(Inverse dynamics)
到目前为止,Unity 工具只支持正向动力学:给定一组物体及其作用力来计算其运动轨迹。这种方法固然非常有用,但我们想进一步扩展机器人工具箱的功能。因此,我们为 Unity 2022.1 添加了对反向动力学的支持:给定一个物体及其运动轨迹,模拟计算出作用力。

我们将在以后的数个版本持续迭代、完善该功能。在 Unity 2022.1 中,我们公开了一组函数用于计算当前作用于 ArticulationBodies 的力的组成,在这些力抵消之后物体才能向着预定的轨迹运动。我们会在后续版本中继续披露更多有趣的概念,比如抵消解算器冲力的关节力。

需要特别指出,新功能可以:
取得施动者当前施加给某物体的力。它可以表明某个驱动力向目标运动的强度。它的大小取决于驱动力的刚度(stiffness)和阻尼(damping),以及当前的目标位置和目标速度;
取得抵消物体所受重力、科里奥利力(Coriolis force)和离心力所需的关节力;
取得物体达到特定加速度所需的关节力。
Unity 2022.1版本 | Physics功能更新,让机器人感知更复杂的环境

插值与外推法
Rigidbody 同时使用插值和外推法进行较低频率的模拟,形成一种平滑运动的表象。引擎内部会在每次更新(update)计算变换(transform)的位置来实现运动。在插值时,物体前两帧的姿势会被用于计算当前帧的姿势。在外推法时,仅上一帧的姿势和矢量会被用于计算。但由于它轻量的特点,我们不会将这些姿势传回物理引擎。它们只会被传给物理引擎以外的系统(比如图形和动画)。正因为如此,一条投射出去的光线并不能检测到插值姿态下的物体。

为了不让物理引擎注意到变换的改变,我们的机制是在写入姿势前调用 Physics.SyncTransforms() 来调取每次更新,再调用一个内部方法来清除 Physics 的所有变换更新。这造成了两类问题:

如果一个场景至少有一个插值物体,那么每次更新时,所有物理组件的变换改变都会与物理引擎同步(尽管这些改动主要会在每次 FixedUpdate 中被处理);
如果一个带插值 Rigidbody 组件的变换被改变,则该对象的插值就会中断,因为用户作出的变换修改被传到了物理引擎,并改变了最终的模拟姿势(姿势并不会被单独存储,而是会取代物理引擎当前的姿势)。
为了解决这些问题,我们特意将插值代码修改成不在每一帧上同步所有变换。这个改动显著提高了性能;新的插值代码比以前运行得更快(与场景复杂度相关)。