NVIDIA Isaac Sim中的物理组件
简述:在Isaac Sim中创建元素后需要给元素添加物理属性元素才能参与到仿真的物理碰撞中。简单来说 ”Rigid Body” (刚体) 决定了物体能不能动 (受不受力包括重力)而 “Collider“ (碰撞体) 决定了物体有没有实体边界 (会不会穿模)。 “Preset“ (预设) 是 Isaac Sim 为了方便操作提供的一键配置打包方案操作:可以批量选择元素右击元素本体或 Stage中的元素 → Add → Physics → 选择需要添加的组件组件列表:“Rigid Body with Colliders Preset“、 ”Colliders Preset”、 “Rigid Body“、 “Collider“、 “Articulation Root“、 “MeshMergeCollision“物理组件的详细区别:1. 物理属性的 “底层零件“:Rigid Body (纯刚体组件)只添加了动力学属性 (质量、速度、力)却没有添加碰撞边界。如果物体只有刚体没有碰撞体它虽然会受到重力往下掉但因为物理引擎不知道它的外壳形状它会直接穿透地板掉出世界之外 (穿模)。很少单独使用。通常只在一些需要极度简化计算的不可见控制节点 (Dummy objects / Xforms) 上使用通过关节 (Joints) 带动其他有碰撞体的组件运动。Collider (纯碰撞体组件)通常指的是 底层属性 (Physics API) 中的碰撞边界而不是UI上的预设快捷键。如果手动给一个物体只添加了 ”Collider” 属性效果和 ”Colliders Preset” 类似就是一个没有质量的静态边界。区别在于手动添加需要自行去属性面板里调整碰撞网格的计算方式 (比如是 Convex Hull 还是 Triangle Mesh)。2. 一键配置的 “快捷预设“:Rigid Body with Colliders Preset (带碰撞体的刚体预设)同时赋予物体质量 (Rigid Body) 和物理边界 (Collider)。物体不仅有了边界 (不会穿模)还能完全参与物理模拟。会受到重力自由落体可以被推走撞击后会产生反作用力。适用于所有需要发生位移的动态物体或是虚拟房间里较轻且可以被碰撞移位的家具Colliders Preset (碰撞体预设)会自动计算并为选中的3D网格添加合适的物理边界但不添加任何动力学属性。物体有坚实的边界别的物体撞倒它会被弹开或挡住。但它本身没有质量不受重力影响悬在空中也不会掉下来即使受到巨大的力也不会移动。适合作为静态障碍物。机器人会撞到它们并触发避障但墙壁永远不会被机器人推倒。3. 处理复杂机械与大场景的 “进阶工具“:Articulation Root (铰接树根节点 / 关节根节点)专门为机器人和复杂机械结构设计的核心节点。当有一个由多个刚体 (Rigid Body) 通过关节 (Joints比如转轴、滑轨等) 连接在一起的复杂系统时需要在一个最高层级的父节点 (通常是一个 Xform) 上添加 Articulation Root。这相当于向物理引擎宣告: “这是一个完整的机器人系统请把它作为一个整体来计算物理反馈而不是一堆用绳子拴在一起的松散木块。”普通的刚体加普通关节使用的是 ”最大坐标法 (Maximum Coordinate)”在受到外力 (比如撞墙) 时关节处容易发生拉扯、形变甚至断开 (也就是俗称的 ”爆模型”)。而加了 Articulation Root 后物理引擎会切换到专门的 “简化坐标求解器 (Reduced Coordinate Solver)“这会让机器人的关节变得及其坚固和稳定不会因受力过大而扯断。MeshMergeCollision (网格合并碰撞体)用于性能优化和简化复杂几何体的物理碰撞处理选项。当有一个由成百上千个微小面片组成的及其复杂的3D模型时如果让物理引擎去精确计算每一个小凹槽的碰撞会极大的损耗计算机的算力导致仿真帧率狂跌。MeshMergeCollision (或者类似生成合并碰撞网格的操作) 会将这些复杂的视觉网格 (Visual Mesh) 合并并包裹成一个或几个简化的碰撞外壳 (通常是凸包集合Convex Decomposition)。它把 ”视觉模型” (看到的复杂的样子) 和 “碰撞模型“ (物理引擎计算边界的样子) 分离开来碰撞外壳比视觉模型简单的多但足以应对正常的物理交互。