This page has been translated automatically.
Programming
Fundamentials
Setting Up Development Environment
UnigineScript
High-Level Systems
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine and Tools
GUI
Double Precision Coordinates
API
Core Library
Containers
Engine Classes
Node-Related Classes
Rendering-Related Classes
Physics-Related Classes
Bounds-Related Classes
GUI-Related Classes
Controls-Related Classes
Pathfinding-Related Classes
Utility Classes
注意! 这个版本的文档是过时的,因为它描述了一个较老的SDK版本!请切换到最新SDK版本的文档。
注意! 这个版本的文档描述了一个不再受支持的旧SDK版本!请升级到最新的SDK版本。

Physics(物理)

Unigine引擎的实时物理系统集成有Collision Detection(碰撞检测),Fracturing(刚体破碎),Buoyancy(水体浮力),Joints(连接器)以及外部物理作用力,可以用来真实模拟对象以及对象之间的复杂交互。

Unigine引擎中的物理仿真基于Rigid Bodies Dynamics(刚体力学)构建且用于动态对象的计算。 动态对象不同于静止对象,它们拥有:

  • 物理实体(或多体)
  • 碰撞形状(或多形状)
此外,物理实体也可用Joints(连接器)连接,它的作用是限制相对彼此的实体运动。 通过这种方式,就可以将它们近似组合成复杂对象,如碎布玩偶,或是复合的机械设备,如汽车。

由于静止对象没有相应的物理实体,因此,就没有力作用在它们之上,会保持固定不动。 不过,它们仍然会参与与动态对象的接触,阻止物理实体通过。

添加物理

为了确保帧速一致,仿真是建立在近似和简化计算(不过仍然存在大量像线速度,旋转速度,加速度,摩擦力,作用力等等这样的参数)基础之上的。 请记住,这不是真实世界的物理,而是拥有足够精度,看上去能令人信服的仿制特性。

注意
  • 假如您打算模拟物理,就请不要缩放虚拟世界中的任何网格(静止网格和物理对象)! 否则,碰撞将不能被正确计算。
  • 对物理所作的近似(也就是依据对象形状所作的近似)不需要绝对准确。 我们强烈推荐”球体代替凸面体“的近似。

全局物理设置

物理仿真拥有专属的FPS并且它只在物理仿真距离内有效。 (渲染用FPS也可由物理系统用FPS设限)。 其它所有与物理相关的全局设置都位于Physics settings(物理设置)标签页内。

物理交互

置于场景中的大多数对象都不是静止的装饰物,它们彼此间会主动交互,作这样的设计也是因为真实的对象就是带有物理的。 对观看者而言,如果看到有实物不合时宜地穿透其它实物,那给人的感觉将会是不自然的也是很不合理的。 还没对物理属性作出正确近似,提高可视现实标准也就更无从谈起。 另一方面,还有一些对象是不需要对它们的动态进行全面建模的。 同样的双重性问题也体现在对象的多表面形状的复合上。 想要应对这类实际问题,就需要以每个表面为基础来启用物理交互。

碰撞检测(Collision Detection)

占据空间某个区域,弹开障碍物,甚至仅仅是停留在地面都需要用到碰撞检测。 在勾选了碰撞复选框后,表面会参与检测,检测是否有其它对象与其发生了接触,并根据指定设置作出反应。

碰撞掩码(Collision Mask)

为了让碰撞检测更具选择性,同时又能减轻计算量,就需要我们设置碰撞掩码。 例如,某个对象无视其它对象的作用,也不促成虚拟世界的物理效果画面。 尽管如此,我们仍然想让它位于地形之上而不落空,那么只需匹配该对象和地形间的位掩码(掩码中应该至少有一位是要匹配的)就能使您获得想要的效果。

相交检测(Intersection Detection)

相比于碰撞,相交检测的目的则稍有不同。 如果有表面发生相交,那么从某一点到另一点的相交射线就能做到更快速的轻量级计算。 例如,通常汽车车轮的碰撞计算不仅耗时,还降低了可操作性。 假如采用了相交检测,那车轮就不用能给出反应的适当物理球体表示,而是要用从汽车车身投射到地面的射线来表示。 如此一来,也就解决了仿真需合理的问题。

相交掩码(Intersection Mask)

相交位掩码允许在计算相交时定义要考虑的具体对象,同时忽略掉所有那些拥有不匹配掩码的其它对象。 这是一种灵活的工具,因为掩码中就只有一位是要匹配的。 这意味着一种对象可以轻松参与多种同时发生的不同相交。

最新更新: 2017-07-03
Build: ()