Physics
物理和约束拼图
这些拼图用于模拟物理效果和约束物体的运动。
物理入门
使用这些拼图之前,你需要向应用程序添加物理模块。你可以在App Manager的创建应用面板勾选相应复选框来添加该模块。
或者,你可以将ammo.js模块从verge3d / build文件夹复制到应用程序文件夹,然后再将应用程序更新为较新版本。然后,更新操作将自动将物理模块添加到你的应用程序。
物理(Physics)
“create physics world”
使用指定的重力和帧数参数初始化物理引擎。默认值9.8对应于地球表面重力。零值意味着在空间中没有引力。较高的fps值会以牺牲性能为代价来提高仿真质量。
在幕后,这个拼图还可以实现碰撞检测和图形自动同步。
“create physics body”
从Dynamic,Kinematic或Static类型的指定对象创建物理体。指定碰撞形状:Box,Sphere或Mesh。设置主体的质量(仅对Dynamic物理体有效)。也适用于对象列表,组(或组列表)或all objects拼图。
物理体类型:
- Dynamic – 运动由物理引擎驱动,受碰撞影响并与其他物体碰撞。
- Kinematic – 运动通过动画或用户操作控制。Dynamic对象将被推开,但Kinematic对象不会受到影响。
Static – 不能移动但会与其他物体碰撞。
建议:确保在3ds Max或Blender中应用缩放(译注:执行apply scale),因为物理引擎会忽略对象的缩放。
- 为获得最佳效果,物体的原点应与质心重合。(译注:原点在质心碰撞体会更准确)
- 使用snap body拼图移动动态或静态物体,而不是尝试直接移动物体
“remove physics body”
通过销毁与之关联的物理体来从指定对象中移除物理。也适用于对象列表,组(或组列表)或all objects拼图。
“physics body params”
设置与指定对象关联的物理体的参数。也适用于对象列表,组(或组列表)或all objects拼图。
参数:
- friction- 滑动物体之间相对运动的阻力系数。 (译注:摩擦力)
- linear damping-阻碍移动物体的阻力系数。(译注:线性阻尼)
- angular damping-阻碍旋转物体的阻力系数。(译注:角阻尼)
- restitution– 弹性系数(如果0 – 物体像粘土一样没有弹性,如果1 – 物体像橡胶)。
当两个物体碰撞时,考虑两者的摩擦和弹性系数。
“apply vector”
在世界空间的指定方向上将力,重力,线速度,角速度,脉冲,扭矩,扭矩脉冲或位置应用于与指定对象关联的物理体。也适用于对象列表,组(或组列表)或all objects拼图。
参数:
- Force-将物体向一个方向推动(译注:这里物体指的是物理碰撞体)
- Gravity-为某物体指定单独的重力
- Linear Velocity-设置移动速度
- Angular Velocity-设置旋转速度
- Impulse-像Linear Velocity 一样,但会考虑到重量(较重的物体将获得较低的速度)
- Torque-沿指定方向旋转物体。
- Torque Impulse-像角速度一样,但会考虑到重量(较重的物体旋转速度慢)
- Position-设置物体的位置(像snap body拼图一样)。
“snap body”
通过复制其变换数据,将与指定对象关联的物理体和对象本身移动到另一个对象的位置。还复制旋转。不适用于列表,组或“all objects”拼图。
类似apply vector / Position 拼图的效果。
“detect collision” and “collision_info”
检测指定物体与另一个物体(或列表或组中的任何物体)之间是否发生碰撞。如果发生碰撞,则触发“ upon collide ”槽中的拼图,否则触发“ upon no collide ”。
碰撞信息拼图输出一个包含以下字段的字典数据类型:
- objectA – 第一个碰撞体的名称。
- objectB – 第二个碰撞体的名称。
- distance – 碰撞点之间的距离。
- positionOnA – 第一个对象上的碰撞点的XYZ坐标。
- positionOnB – 第二个对象上的碰撞点的XYZ坐标。
- normalOnB – 第二个对象上碰撞点处法线向量的XYZ分量。
约束(constraints)
这些拼图用于约束物体运动。如果对象不是另一个对象的父级,则约束将在世界空间中起作用。否则它们将在父对象的空间中工作 – 您可以在3ds Max或Blender中选择父对象以显示坐标轴。
“limit transform”
设置约束以限制沿选定轴的对象位置,旋转或缩放。指定的id应该是唯一的,否则将替换具有相同的现有约束。 “min”和“max”槽指定允许移动之间的范围。
“copy transform”
设置约束以从另一个对象复制对象位置,旋转或缩放。指定的id应该是唯一的,否则将替换具有相同的现有约束。
“operations”
使用指定给指定对象的指定id删除,关闭或取消关闭约束。分配给此对象的其他约束(如果有)将保持不变。