Halo
发布于 2024-03-14 / 336 阅读 / 0 评论 / 0 点赞

isaac sim搭建物理场景

增加物理引擎

依次点击 Create->Physics->Physics Scene即可创建带有物理引擎的环境

增加物理地面

依次点击 Create->Physics->Ground Plane即可创建地平面

新增物体

创建 Xform

依次点击 Create->Xform。在通用场景描述 (USD) 的上下文中,Xform 是一种特殊的 prim ,它用于表示物体的变换信息,用于控制场景中物体的位置、旋转和缩放。
Xform 是 transform 的缩写,代表一个变换矩阵,用于表示场景中对象的变换。
Xform 提供了一种分层组织和构建场景的方法,支持变换的继承。

创建 Mesh

选中刚刚创建的 Xform 后,然后依次点击 Create->Mesh->xxx,创建 Mesh. 一个 Mesh 对应一个物体。

创建物理材质

依次点击 Create->Physics->Physics Material 来创建一个物理材质

  • Rigid Body Material(刚体材质)
    刚体材质用于模拟刚性物体,这些物体不会发生形变,其形状在运动过程中保持不变。
    刚体通常用于模拟硬物体,如石头、金属、木头等。
    物体之间的碰撞会产生弹性反应,而且刚体通常不会发生变形。

  • Deformable Body Material(可变形材质)
    可变形材质用于模拟具有弹性的物体,它们可以发生形变,如橡胶、布料、软泥等。
    这些物体在受到外部力或碰撞时可以发生形状的变化,通常会遵循弹性和塑性行为。
    通常需要更复杂的物理模型来模拟可变形物体的行为,如有限元分析。

  • PBD Particle Material(基于粒子的动力学材质)
    PBD(Position-Based Dynamics)是一种用于模拟可变形和弹性物体的方法,通常用于模拟细粒度的物体,如液体、布料等。
    PBD通过在模拟中使用一组粒子来表示物体,并应用基于位置的动力学来模拟其行为,可以处理大变形和复杂物体。
    PBD通常比传统的有限元分析更高效,但也可能缺少精确性。

外观材质

依次点击 Create->Material->OmniPBR 来添加一个OmniPBR材质
物理材质和外观材质,在物体的 Physics Materials 中只能用一个

  • Omni PBR材质
    Omni PBR材质是一种基于物理的渲染(Physically-Based Rendering,PBR)材质,用于实现更逼真的图形渲染效果。PBR是一种图形渲染技术,旨在模拟光线如何与物体表面交互以产生更真实的视觉效果。这种技术考虑了光的物理特性,包括漫反射、镜面反射、折射等,以在虚拟环境中模拟材质的外观和光照交互。

    1. 修改颜色,选中外观材质后,在 Albedo 属性中,Albedo color 修改为你喜欢的颜色
    1. 在物体的 Physics Materials 属性,在下拉列表中选择我们刚刚新建的物理材质即可。

为物体添加物理材质或者外观材质

选中刚刚创建的 Xform 后,在 Stage 中选中物体,并在 Property 中点击“+Add”,然后找到 Physics->Rigid Body with Colliders Preset,给物体同时添加 Rigid Body 和 Collision 两个物理属性。在 Physics Materials 属性,在下拉列表中选择我们刚刚新建的物理材质即可。

  • 刚体 Rigid Body
    刚体可以具有质量、惯性、速度、角速度等属性,这些属性决定了物体如何响应外力和碰撞。
    刚体可以是动态的(可以受到外力和碰撞的影响)或静态的(不会移动)。

  • 碰撞器 Collider
    碰撞器是用于定义物体的碰撞形状和边界的组件,通常与刚体一起使用。
    碰撞器没有质量、速度等物理属性,它们仅用于检测物体之间的碰撞。
    碰撞器可以是各种形状,如盒状碰撞器、球形碰撞器、网格碰撞器等,以适应不同形状的物体。
    当两个具有碰撞器的物体发生碰撞时,游戏引擎会检测碰撞并触发相应的事件,例如碰撞检测、碰撞响应等。

为物体添加 join

ctrl + 鼠标左键,选择两个需要连接的物体,然后依次点击 create->physics->joint->revolute joint。第 0 个物体为 child,第 1 个物体为 parent,join 回挂载在第 1 个物体 parent 下。

更改旋转轴和旋转角度

选中刚刚创建的 revolute joint,在 Property 窗口中,找到 Revolute Joint/Axis,更改为需要旋转的轴,默认是 X 轴。找到 Revolute Joint/Upper Limit 和 Revolute Joint/Lower Limit 更改旋转的最大、最小角度。

两个局部轴的对齐

选中刚刚创建的 revolute joint,在 Property 窗口中,找到 Joint,通过调整 position/rotation 来对齐两个局部坐标系。如果平移错位,可能会出现偏心旋转的情况,如果角度错位,可能出现旋转轴非理想的情况。joint的旋转应当是两个局部轴之间的相对运动。


评论