Isaac Sim教程04 Isaac Sim的高级使用

2024年6月更新: Isaac Sim当前已经更新到4.0.0大版本,有了不少新的内容,因此笔者制作了最新的Isaac Sim整套入门教程,欢迎大家跳转到新的入门教程链接。

Isaac Sim 高级使用

版权信息

Copyright 2023 Herman Ye@Auromix. All rights reserved.

This course and all of its associated content, including but not limited to text, 
images, videos, and any other materials, are protected by copyright law. 
The author holds all rights to this course and its contents.

Any unauthorized use, reproduction, distribution, or modification of this course 
or its contents is strictly prohibited and may result in legal action. 
This includes, but is not limited to:
Copying or distributing course materials without express written permission.
Reposting, sharing, or distributing course content on any platform without proper attribution and permission.
Creating derivative works based on this course without permission.
Permissions and Inquiries

If you wish to use or reproduce any part of this course for purposes other than personal learning, 
please contact the author to request permission.

The course content is provided for educational purposes, and the author makes no warranties or representations 
regarding the accuracy, completeness, or suitability of the course content for any specific purpose. 
The author shall not be held liable for any damages, losses, 
or other consequences resulting from the use or misuse of this course.

Please be aware that this course may contain materials or images obtained from third-party sources. 
The author and course creator diligently endeavor to ensure that these materials 
are used in full compliance with copyright and fair use regulations. 
If you have concerns about any specific content in this regard, 
please contact the author for clarification or resolution.

By enrolling in this course, you agree to abide by the terms and conditions outlined in this copyright notice.

学习目标

  • 熟悉Isaac Sim物理场景的创建
  • 熟悉Isaac Sim中添加材质的步骤

难度级别

初级中级高级

预计耗时

25 mins

学习前提

对象类型状态
Ubuntu22.04操作系统软件已确认
Isaac Sim软件已配置
Isaac Sim基本概念知识已了解
Isaac Sim基本使用知识已了解

添加物理环境

在仿真中,物体通常受到各种物理力,时间也在不断地流逝,为了尝试实现这样的仿真效果,请完成以下步骤:

通常来说,世界需要一般的物理模拟属性,例如重力和物理时间的步进,依次点击Create->Physics->Physics scene来添加物理环境
在这里插入图片描述

随后,在Property->Physics里修改这个物理环境的基本属性,因为这是简单的测试,所以不需要GPU的强大能力,取消选中Enable GPU Dynamics,并将Broadphase Type改为MBP

multi box pruning (MBP)是一种Broadphase(广相位)的算法,具体细节可参考Nvidia physX 中的说明

“Broadphase”(广相位)是物理引擎中的一个阶段,它用于加速物体之间的碰撞检测。 Broadphase的目标是减少需要进行详细碰撞检测的物体数量,从而提高碰撞检测的效率。这对于处理大量物体的仿真非常重要,因为详细碰撞检测是计算密集型的操作。

在Broadphase之后,只有被Broadphase算法认为可能发生碰撞的物体对才会进行详细的碰撞检测。这包括精确的形状相交检测,如球体、多边形、网格等。由于Broadphase已经大大减少了需要检测的物体对的数量,这一步通常较为高效。

更详细地说,在物理引擎中,碰撞检测通常分为广相位(Broad Phase)和窄相位(Narrow Phase)两个阶段,这有助于有效地处理大量物体之间的碰撞。以下是对这两个阶段的详细解释:

  1. 广相位(Broad Phase):
    在广相位中,物理引擎会确定哪些物体可能会发生碰撞,并将这些潜在碰撞对象存储在一个列表中,通常被称为碰撞对(collision pair)。这一阶段的目标是减少需要在窄相位进行详细碰撞检测的物体数量,从而提高碰撞检测的效率。广相位的任务是识别可能碰撞的物体,而不是确认它们是否确实碰撞。

    举例来说,如果你想模拟整个世界的人口,就需要检查每个代表人的对象是否与其他人发生碰撞。但显然,伦敦的人不可能与大连的人发生碰撞,因此没有必要在广相位中检查这两个城市的所有人之间的碰撞。广相位会尝试将世界分成离散的区域,其中我们知道这些区域不会重叠,因此区域内的物体也不会发生碰撞。这样可以大大减少需要进行详细碰撞检测的对象数量,从而提高性能。

  2. 窄相位(Narrow Phase):
    在窄相位中,引擎会迭代广相位中识别的潜在碰撞对列表,并对每对物体进行详细的碰撞检测,以确定它们是否确实发生了碰撞。如果两个物体在窄相位中被确认为发生碰撞,那么引擎将执行碰撞解决过程,即使物体之间的碰撞也会得到处理。

总而言之,广相位负责快速识别可能碰撞的物体,将它们存储在一个列表中,而窄相位则负责对这些潜在碰撞对进行详细的碰撞检测和解决。通过这种两阶段的碰撞检测方法,可以显著减少需要检测的对象数量,从而提高物理引擎的性能和效率。

对于广相位更深入的理解可参考Newcastle University相关研究

在这里插入图片描述

添加地面

和其他仿真软件一样,Isaac Sim也需要添加地面,这是因为即使有了重力等物理环境,物体在开始仿真前也被摆放好了位置,如果没有地面,那么物体可能会处在一直坠落的状态。

依次点击Create->Physics->Ground Plane来添加一个地面
在这里插入图片描述

可以看到地面被添加了,通过鼠标中间缩放,发现地面只有一部分,这是因为超出范围的地面不需要渲染,以此减少性能开销,但即使是在不可视的地面,依然会有碰撞属性,物体在坠落到地面时不会再继续向下坠落。
在这里插入图片描述

添加物体

按照Isaac Sim基本使用中的办法,添加一个普通的立方体,并将它的位置设置在[0,0,0.5],这是因为默认的物体中心将在[0,0,0]出现,默认立方体的边长是1m,内嵌在了地面中,这显然和地面冲突了。
在这里插入图片描述

添加光照

每个Stage都带有默认的环境光照(defaultLight),否则看不见东西。
此时我们来尝试添加另一个光照,来感受光照对于环境和物体的影响。
依次选择Create->Light->Sphere Light来添加一个球状光源
在这里插入图片描述

因为默认环境光照比较强,会导致新的光照看着似乎没有生效,因此在Stage中将defaultLight设为不可视
在这里插入图片描述

随后将这个新添加的球状光照的颜色改为红色使得它更加显眼,Radius改为1使得它不再是添加时默认的非常大的半径,同时将这个球光源的Z轴位置设置为5,便于观察。
在这里插入图片描述

在这里插入图片描述

添加更多物体

随意地从Create->Shape里找一些物体,将他们悬空放置
在这里插入图片描述

随后点击Isaac Sim左侧的Play来使仿真开始步进
在这里插入图片描述

令人疑惑的是,这些物体并没有按预料中的方式下坠,这是因为虽然设置了物理环境,但并没有设置物体自身的物理属性,接下来在Propetry中为物体添加刚体和碰撞器

添加刚体和碰撞器

Stage中选中物体,并在Property中添加Physics里的Rigid Body with Colliders Preset
在这里插入图片描述

  • 刚体 Rigid Body
    刚体可以具有质量、惯性、速度、角速度等属性,这些属性决定了物体如何响应外力和碰撞。
    刚体可以是动态的(可以受到外力和碰撞的影响)或静态的(不会移动)。
    在游戏引擎中,如Unity或Unreal Engine或者其他仿真器,将刚体属性添加到对象,可以使其具备物理性质。

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

在添加完后会发现物体多了这些属性,以Cube为例,它有各种各样的Property,包括GeometryVisualPhysics等,在Physics中可以发现刚才新添加的Rigid BodyCollider
在这里插入图片描述

检查碰撞体情况

依次选中GUI界面中的眼睛->Show By Type->Physics->Colliders->All来启用碰撞体可见模式。
在这里插入图片描述
在这里插入图片描述

开始仿真

此时再次点击Isaac Sim左边的Play按钮,将会观察到悬空的物体在时间开始流动时不断下坠,直到撞击地面

在这里插入图片描述

添加物理材质

对于特定的仿真,比如箱子在斜坡上滑动,需要涉及到摩擦力等问题,物理材质在其中起到了重要的作用。
依次点击Create->Physics->Physics Material来创建一个物理材质
在这里插入图片描述

在添加物理材质时会提示不同材质的选项,这也是Isaac Sim的强大之处,"rigid body material""deformable body material""PBD Particle Material"是可选的三种类型。

  • Rigid Body Material(刚体材质)

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

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

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

在这里插入图片描述
因为这里只是普通的刚体,因此在PhysicsMaterial的资产中选择Rigid Body Material,随后在Property里的Physics里修改摩擦力的选项

在这里插入图片描述

随后为Cube添加这个摩擦力的属性。在这里插入图片描述

添加外观材质

除了物理材质,物体也可以添加用于外观展示的材质
依次选中Create->Material->OmniPBR来添加一个OmniPBR材质,可以理解为普通的外观材质。

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

OmniPBR材质的Property里有海量的可调选项,这也是Isaac Sim的强大之处,此处就以简单地修改颜色为例。
选中OmniPBR->Property->Albedo->Albedo color修改为你喜欢的颜色,随后将Stage中这个材质拖动到场景物体上即可赋予视觉的颜色。

在这里插入图片描述
在这里插入图片描述
另一种更准确的方式是在对应PrimProperty->Material on selected model中选择刚才添加的OmniPBR

在这里插入图片描述

现在,你已经学会了如何创造一个更加真实的世界,带有物理环境、物体、地面、光照、刚体与碰撞、物理材质、外观材质等内容。

USD文件的保存与使用

保存USD文件

localhost/Library下新建文件夹isaac_learning用于存放Isaac练习的相关文件
在这里插入图片描述
在GUI界面的File->Save保存USD文件

在这里插入图片描述

对于使用了多个外部素材的USD文件,建议将它所涉及的素材全部打包到一个文件夹内
通过右键USD文件并选中Collect Asset来收集相关素材并打包。
在这里插入图片描述

使用USD文件

在Nvidia Isaac Sim中使用USD文件作为参考的步骤如下图所示:

  • 选择菜单栏中的 File
  • 在下拉菜单中选择 Add Reference 选项
    添加参考图片
    一旦加载完成,引用的USD文件将以与文件名相同的Prim名称加载到舞台上。这意味着整个USD文件的内容,包括PhysicsScene、defaultLight和GroundPlane等内容,都会被加载到新的舞台上。

注意: 这可能导致混淆,特别是当您需要加载多个USD参考,每个参考包含自己的PhysicsScenes和defaultLights。由于这些内容是通过Add Reference加载的,您不能直接在新的Stage上删除它们。同时,在原始USD文件中删除PhysicsScene、defaultLight和GroundPlane等内容也不是一个理想的解决方案,因为这可能会导致在创建USD文件时更加复杂。

为了更好地管理加载的USD文件和避免加载原始世界的环境内容,您可以按照以下步骤修改原始USD文件:

  1. 创建一个名为 my_robot 的新 Xform,用于容纳机器人的相关组件。
  2. 将机器人的所有组件从原始USD文件拖动到 my_robot 这个 Xform 下。
  3. my_robot 设置为新的defaultPrim。这样,当您在其他舞台上将机器人作为参考导入时,只会导入机器人的主体,而不会包含原始世界的环境内容。这一步确保了您只加载了所需的机器人部分,而不会混淆或加载多余的内容。

在这里插入图片描述

练习

练习目标

制作出一个两轮机器人,由一个Cube拉伸得到身体,两个Cylinder作为左右轮,并保存作为USD文件
在这里插入图片描述

练习参考

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 23
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值