Physics(物理)
Unigine引擎的实时物理系统集成有Collision Detection(碰撞检测),Fracturing(刚体破碎),Buoyancy(水体浮力),Joints(连接器)以及外部物理作用力,可以用来真实模拟对象以及对象之间的复杂交互。
Unigine引擎中的物理仿真基于Rigid Bodies Dynamics(刚体力学)构建且用于动态对象的计算。 动态对象不同于静止对象,它们拥有:
- 物理实体(或多体)
- 碰撞形状(或多形状)
由于静止对象没有相应的物理实体,因此,就没有力作用在它们之上,会保持固定不动。 不过,它们仍然会参与与动态对象的接触,阻止物理实体通过。
添加物理
为了确保帧速一致,仿真是建立在近似和简化计算(不过仍然存在大量像线速度,旋转速度,加速度,摩擦力,作用力等等这样的参数)基础之上的。 请记住,这不是真实世界的物理,而是拥有足够精度,看上去能令人信服的仿制特性。
- 假如您打算模拟物理,就请不要缩放虚拟世界中的任何网格(静止网格和物理对象)! 否则,碰撞将不能被正确计算。
- 对物理所作的近似(也就是依据对象形状所作的近似)不需要绝对准确。 我们强烈推荐”球体代替凸面体“的近似。
全局物理设置
物理仿真拥有专属的FPS并且它只在物理仿真距离内有效。 (渲染用FPS也可由物理系统用FPS设限)。 其它所有与物理相关的全局设置都位于Physics settings(物理设置)标签页内。
物理交互
置于场景中的大多数对象都不是静止的装饰物,它们彼此间会主动交互,作这样的设计也是因为真实的对象就是带有物理的。 对观看者而言,如果看到有实物不合时宜地穿透其它实物,那给人的感觉将会是不自然的也是很不合理的。 还没对物理属性作出正确近似,提高可视现实标准也就更无从谈起。 另一方面,还有一些对象是不需要对它们的动态进行全面建模的。 同样的双重性问题也体现在对象的多表面形状的复合上。 想要应对这类实际问题,就需要以每个表面为基础来启用物理交互。
碰撞检测(Collision Detection)
占据空间某个区域,弹开障碍物,甚至仅仅是停留在地面都需要用到碰撞检测。 在勾选了碰撞复选框后,表面会参与检测,检测是否有其它对象与其发生了接触,并根据指定设置作出反应。
碰撞掩码(Collision Mask)
为了让碰撞检测更具选择性,同时又能减轻计算量,就需要我们设置碰撞掩码。 例如,某个对象无视其它对象的作用,也不促成虚拟世界的物理效果画面。 尽管如此,我们仍然想让它位于地形之上而不落空,那么只需匹配该对象和地形间的位掩码(掩码中应该至少有一位是要匹配的)就能使您获得想要的效果。