物理和约束(Physics&Constraints)

这些拼图用于模拟物理行为和限制物体的运动。

puzzles-physics.jpg

physics模块入门

在使用这些拼图以前,必须在应用程序中添加物理模块。可以在程序管理器的程序创建面板使用对应的选项。

puzzles-physics-option-app-manager.jpg

或者,可以将模块ammo.js从verge3d / build文件夹复制到应用程序文件夹,然后再将应用程序更新为较新版本。然后,更新操作将自动将物理模块添加到应用程序。

puzzles-physics-ammo-update.jpg

Physics拼图

"create physics world"

使用指定的gravityframe-per-second参数初始化物理引擎。默认gravity值9.8对应于地球表面条件。零值意味着在空间中没有引力。较高的fps值会以牺牲性能为代价来提高仿真质量。

puzzles-physics-create-physics-world.jpg

在内部,这个拼图允许碰撞检测和图形自动同步。

"create physics body"

DynamicKinematicStatic类型的指定对象创建物理体。指定碰撞形状:BoxSphereMesh。设置主体的质量(仅对动态实体有效)。也适用于对象列表,组(或组列表)或all objects拼图。

puzzles-physics-create-physics-body.jpg

物理体的类型:

  • Dynamic - 由物理引擎驱动,受碰撞影响并与其他物体碰撞。
  • Kinematic - 通过动画或用户动作驱动。 Dynamic对象将被推开,但不会受Dynamic对象影响。
  • Static - 不能移动但能与其他实体发生碰撞。

建议:

  • 确保在3ds Max或Blender中应用缩放,因为物理引擎会忽略对象的比例。
  • 为获得最佳效果,物体的原点应与质心重合。
  • 使用snap body拼图移动DynamicStatic物体,而不是尝试直接移动物体。

"remove physics body"

通过销毁与之关联的物理体来从指定对象中移除物理。也适用于对象列表,组(或组列表)或all objects拼图。

puzzles-physics-remove-physics-body.jpg

"physics body params"

设置与指定对象关联的物理体的参数。也适用于对象列表,组(或组列表)或all objects拼图。

puzzles-physics-body-params.jpg

参数:

  • friction - 固体相对运动的阻力系数。
  • linear damping - 阻碍移动物体的阻力系数。
  • angular damping - 使旋转物体减速的阻力系数。
  • restitution - 弹性系数(如果0-主体像粘土那样没有弹性,如果1-主体的行为就像是由橡胶制成的)。

"apply vector"

将力、重力、线速度、角速度、冲量、扭矩、扭矩冲量或位置以世界空间中的指定方向应用于与指定对象关联的物理体。也适用于对象列表、组(或组列表)或all objects的拼图。

puzzles-physics-apply-vector.jpg

参数:

  • Force - 按指定的方向推物体。
  • Gravity - 为指定的实体单独指定重力。
  • Linear Velocity - 设置移动速度。
  • Angular Velocity - 设置旋转速度。
  • Impulse - 类似于Linear Velocity,但也考虑到了物体质量(较重的物体获得的速度较低)。
  • Torque - 沿指定方向旋转物体。
  • Torque Impulse - 类似于角速度,但也考虑到了物体质量(较重的物体获得的旋转速度较低)。
  • Position - 设置物理体位置(类似于snap body拼图)。

"snap body"

通过复制变换(transform)数据,将与指定对象关联的物理体以及对象本身移动到另一个对象的位置。同时复制旋转。不适用于列表、组或all objects拼图。

apply vector / Position拼图类似。

puzzles-physics-snap-body.jpg

"detect collision" and "collision_info"

检测指定实体与另一个实体(或列表或组中的任何实体)之间的碰撞。如果发生碰撞,将触发"upon collide" 槽中的拼图,否则将触发"upon no collide"插槽中的拼图。

puzzles-physics-detect-collision.jpg

collision info拼图输出带有如下字段的字典类型数据:

  • objectA - 第一个碰撞体的名称。
  • objectB - 第二个碰撞体的名称。
  • distance - 两个碰撞点的距离。
  • positionOnA - 第一个物体的碰撞点的XYZ坐标。
  • positionOnB - 第二个物体的碰撞点的XYZ坐标。
  • normalOnB - 第二个物体碰撞点处法线向量的XYZ分量。

Constraints Puzzles

如果对象不是另一个对象的父级,则约束将在世界空间中起作用。否则它们将在父对象的空间中工作 - 您可以在3ds Max或Blender中选择父对象以显示坐标轴。

"limit transform"

设置约束以限制沿选定轴的对象移动,旋转或缩放。指定的id应该是唯一的,否则将替换具有相同名称的现有约束。 “min”和“max”插槽指定允许移动的范围。

puzzles-constraints-limit-transform.jpg

"copy transform"

设置约束以从另一个对象复制对象的位置,旋转或缩放。指定的id应该是唯一的,否则将替换具有相同名称的现有约束。

puzzles-constraints-copy-transform.jpg

"operations"

使用分配给指定对象的指定id删除,静音或取消静音约束。分配给此对象的其他约束(如果有)将保持不变。

puzzles-constraints-operations.jpg

Copyright © zjbcool.com 2019 all right reserved,powered by Gitbook最后更新: 2019-11-15 17:15:50

results matching ""

    No results matching ""