精华内容
下载资源
问答
  • 2018-03-12 11:21:22

    如果模型中某个部件的刚度远远大于其他部件,其变形远远小于其他部件,就可以将其定义为刚体部件。在分析过程中刚体部件不发生变形,而只发生整体的平动和转动。将部件定义为刚体的主要目的是为了提高计算效率,使分析更容易收敛。刚体部件在CAE中的典型应用,如跌落分析中的地面,切削模拟中的刀具,成型制造中的模具等。

    ABAQUS作为一款强大的非线性通用有限元分析软件,可以建立两种刚体部件:一是解析刚体(Analytical rigid,二是离散刚体(Discrete rigid)。

    离散刚体部件可以是任意的几何形状,可以为其添加Part模块中的各种特征;解析刚体只能是较简单的几何形状,计算效率比离散刚体要高。所以,在选择刚体部件的类型时,应尽量采用解析刚体。

    另外,如果部件的几何形状很复杂,无法创建解析刚体,这时可以采用两种方法:

    第一:创建离散刚体,在mesh模块里为离散刚体部件设定单元类型时,必须使用刚体单元。如果离散刚体是三维的实体,则需要首先在part模块里将其转化为壳体部件(因为刚体单元只壳单元和线单元两种)

    第二:创建变形体部件,然后再为其施加刚体约束。在使用刚体部件时,需要注意的是必须给其设定刚体约束点,在考虑了转动惯量的动力学分析中,必须合理设定刚体参考点的位置。

    解析刚体其实就是用几何的形状表示刚体;而离散刚体则是用离散的单元来表示刚体。模具也可以设成变形体,然后在interaction模块里面设定congstraint形式为刚体,并设定参考点,就可以将变形体属性变为刚体,注意的问题就是要在property模块里面创建sectionassign section。如果是动力学问题,涉及到旋转,需要把参考点设置为刚体的质心,其他情况参考点位置任意。

    首先都是刚体,解析刚体主要是由直线圆弧等具有简单几何关系的曲线构成,于建模,离散刚体主要用于形状复杂的几何体,无法用简单线条构成,比如一些复杂模型的导入,二者本质上没有区别。离散刚体需要划分网格,解析刚体不用划分网格

    解析刚体不用赋予截面属性,只要直接给参考点赋予质量就可以了。


    相同点: 

    1、本质上都是刚体,只在ref point上积分,外形只是用来判断接触用,二者本质上没有区别。

    2、都需要指定一个参考点,所有的边界条件和载荷都施加在这个参考点上。

    3、都不需要赋材料属性和截面属性。

     

    不同点:

    1、解析刚体的边界由解析公式定义,只能是较简单的几何形状,计算代价要比离散刚体部件小。离散刚体的边界由网格节点控制,可以是任意的几何形状,可以为其添加part模块中的大部分特征。换句话说,解析刚体不能描述复杂模型,但离散刚体可以

    二维离散刚体部件只能使用Wire或Point,三维离散刚体部件可以是Solid、Shell、Wire或Point。但是只有Shell和Wire才能将单元类型设置为刚体单元。

    二维解析刚体只能使用Wire,三维解析刚体只能使用Shell旋转或者拉伸。

    2、解析刚体不需要画网格,离散刚体需要画网格,且要在发生接触的部位划分足够细的网格,以保证不出现大的尖角。

    3、离散刚体通常用于接触分析中,类似与可变形体,可以模拟任何形状的物体。如果仅仅为接触分析提供刚性表面接触,则可以考虑使用解析刚体,这样可以有效地避免由于离散刚体网格划分太粗造成的摩擦力不准。

    4、解析刚体只输出和参考节点相关的结果(反作用力等),对于接触问题如果要查看接触力、接触压力、切向滑移等结果,只能查看从动面上的结果;离散刚体可以输出上述接触力、接触压力、切向滑移等结果。

    5、解析刚体在不考虑温度的情况下使用,计算速度快;在考虑温度对材料或者其它方面影响的情况下使用计算效率较解析刚体低。

    注意事项:

    (1)定义一块钢板,属性定义弹模无限大、泊松比无限小,可以模拟刚体。

    (2)参考点的位置会影响刚体所受弯矩和可能发生的转动,因此对于动力分析,如果涉及到旋转或考虑转动惯量对模型的影响,需要把参考点设置为刚体的质心,其他情况参考点位置任意。

    (3)刚体一般有这么几种,一种是找个主点,其他点与主点的关系约束为123456自由度,这称为约束刚体,还有就是修改某个部件的弹性模量非常的大,泊松比很小,这种是人为的近似刚体处理方法,第三种是无须划网格和赋属性的真正的刚体,前面两种都有人为的处理手法在里面,最后一种没有.一般来说最后一种的计算效率也是最高的。

    (4)Interaction模块中的刚体约束和显示体约束,可以将变形体变为刚体,其各部分的运动情况完全取决于所指定的参考点的运动情况。在删除或抑制掉这两种约束后,就恢复为变形体。

    ​关于离散刚体应用的几个小提示:

    (1)离散刚体需要指定参考点并进行网格划分,网格划分前需将部件设置为“Dependent”,然后设定种子、选择刚体体单元进行网格划分。

    (2)在Interaction模块中定义RF与离散刚体的关系时,选择 Create Constraint > Rigid Body > Body(elements),此处需要特别注意,Region Type必须选择Body(elements),否则求解时会出错。​

    更多相关内容
  • 对于空间中的一个刚体,我们也是先定义一个空间直角坐标系 如何描述刚体在这个空间的运动:对于一个空间(三个维度)的刚体来说,我们需要六个参数(自由度)来描述刚体的运动状态:用三个自由度来描述刚体前后,...

    基础知识
    刚体的自由度:物体能够对坐标系进行独立运动的数目称为自由度(DOF,degree of freedom);也就是说刚体沿任一个坐标轴移动或者绕任一个坐标系转动,我们称为一个自由度。

    1)如何描述刚体在平面的运动问题呢?
    对于在平面内运动的刚体,我们需要三个参数(自由度)来描述它的运动,2个参数(自由度)来描述刚体的移动(上下左右),1个参数(自由度)描述刚体的转动(旋转轴是固定的,垂直平面,描述的是角速度的大小)。
    平面直角坐标系

    2)如何描述刚体在空间的运动问题呢?
    对于一个在空间内运动的刚体来说,我们需要六个参数(自由度)来描述刚体的运动状态:用三个自由度来描述刚体沿三个坐标轴的移动状态(前后,上下,左右的移动),三个自由度来描述围绕坐标轴三个方向的转动(描述角速度)。
    在这里插入图片描述
    一般来说一个物体可以相对于坐标系,进行三个平移和三个旋转运动,即一个简单的物体有六个自由度。当两个物体间确立起某种关系时,每一物体就对另一物体失去一些自由度,这种关系也可以用两物体间由于建立连接关系而不能进行的移动或转动来表示(在机器人系统中,相邻的连杆和关节由于约束关系,只有一个自由度)。

    空间中的刚体有六个自由度,运动可以简单的分为移动和转动,用什么简单的方法把这两种状态混合在一起表达???
    答案就是:直接在刚体本身(质心)建立一个坐标系(body frame),利用坐标的信息来代替描述刚体的运动状态(移动与转动)

    3)如何利用body frame 的信息去描述刚体的运动状态呢?
    对于移动的部分,我们可以知道建立的坐标是跟着刚体在运动的,换句话说就是刚体运动到哪里,坐标就会运动到哪里;我们可以通过判定坐标的原点位置,就能知道刚体的移动状态(刚体和建立的body frame是一直重合的)
    对于转动的部分,可以通过建立的body frame的三个主轴方向相对于世界坐标系的姿态,我们就能够得到刚体在世界坐标系下面的转动状态。

    总结:利用在刚体上面建立的自身坐标轴(body frame)的原点的相对位置各主轴的相对姿态就可以用来描述一个刚体在空间中移动和转动两个部分的运动状态。

    上面描述的只是一个瞬间或者几何状态下的,我们需要描述的是一个运动的状态,如何去描述呢?
    在这里插入图片描述
    随着不同的时刻,刚体的质心会在不同的位置,我们把不同时刻的轨迹位置记录下来,如上图,我们把这个轨迹位置微分就可以得到刚体质心运动速度的状态,再次微分就可以得到刚体质心加速度的状态;转动方面也是如此,我们知道这个刚体的姿态之后,经过微分和二次微分就可以得到刚体的角速度和角加速度。

    所以,我们只要知道了刚体本身的几何的状态,包含三个自由度的移动和三个自由度的转动,由这六个状态的微分,就可以知道整个刚体的运动状态

    4)刚体移动部分具体的描述——坐标向量
    在这里插入图片描述
    建立一个世界坐标(world frame),然后在刚体质心位置建立一个坐标(body frame),原点和质心重合,只要追踪到body frame原点的移动状态,就能得到刚体(质心)的移动状态,如何去量化这个原点的移动状态呢?

    我们把质心以一个向量的方式和world frame做一个连接,如上图绿线所示,假设为p向量。通过向量p来描述body frame的原点在world frame中的空间状态。
    向量用法1:代表一个点,一个空间中绝对的位置,描述body frame 原点/质心——用来描述移动。
    向量用法2:代表一个方向,例如body frame中的三个主轴就是代表的三个方向——用来描述转动。

    5)刚体转动部分具体的描述——欧拉角和旋转矩阵
    在这里插入图片描述
    建立一个世界坐标(world frame),然后在刚体质心位置建立一个坐标(body frame),原点和质心重合,通过上面介绍的向量的用法二我们知道body frame上面的三个主轴可以代表一个方向,我们可以利用这三个主轴来代表刚体在空间中的姿态,如何去具体描述呢?
    我们可以利用旋转矩阵(ratation natrix)的方式去描述,就是body frame相对于world frame的状态,旋转矩阵里面的每一个列(column)代表了body frame三个主轴在world frame中各自指向的方向
    在这里插入图片描述
    具体就是把body frame的三个主轴投影到world frame的三个轴向上面,看各自的分量是多少。

    旋转矩阵在乘以一个向量的时候有改变向量的方向但不改变大小的效果,旋转矩阵可以直接运算,它是用9个量来表达一个旋转,但实际上一次旋转只有3个自由度。因此旋转矩阵表达式是冗余的。同时,对于旋转矩阵自身也有约束,它必须是正交矩阵,且行列式为1,这些约束会使求解变得困难。

    如何去投影body frame到world frame上面呢?
    我们先介绍一下欧拉角:它是描述刚体姿态的一组3个角值的参量,同时需要指定三个角度转动时分别围绕的坐标轴,以及旋转的顺序,一旦确定了这些,那么这个欧拉角的描述就可以分解为三个基本的旋转,三个基本旋转的旋转矩阵为:
    在这里插入图片描述
    任何关于刚体旋转的旋转矩阵均可以由上面三个基本旋转矩阵复合而成。

    展开全文
  • abaqus中如何使用刚体建模的详细总结文档,值得下载!
  • 该项目是使用 Matlab 7.5.0 (R2007b) 的 GUIDE 和用户定义的类制作的。 该项目可用于技术教育机构的力学研讨会。大多数技术学院都认为力学课程的“刚体”部分是必需的。 大学。 有时很难想象刚体在三维空间中的旋转...
  • 本文目录1 旋转速度2 刚体速度2.1 定义2.2 伴随变换3 旋量运动的速度 科学家必须在庞杂的经验事实中抓住某些可用精密公式来表示的普遍特征,由此探求自然界的普遍原理。 ——爱因斯坦 1 旋转速度 先考虑 R3\R^3R3 中...
  • unity笔记:2D刚体与碰撞

    千次阅读 2021-01-19 16:19:25
    两个物体发生碰撞事件的前提是:运动的那个要有刚体

    目录

    关于刚体休眠:

    2D 刚体工作原理

    组件详解

    【BodyType】 

    【Simulated】

    【Collision Detection】

    【Gravity Scale】

    【Sleeping Mode】

    【Interpolate】

    【Constraints】

    脚本调用

    ProjectSettings-Physics2D

    两个物体发生碰撞事件的前提是:运动的那个要有刚体。

    手册:https://docs.unity3d.com/2019.1/Documentation/Manual/class-Rigidbody2D.html

    以下内容大部分为手册内容,紫色字体为个人解读仅供参考。

    关于刚体休眠

    Rigidbody sleeping happens completely automatically. Whenever a rigidbody is slower than the sleepAngularVelocity and sleepVelocity it will start falling asleep. After a few frames of resting it will then be set to sleep. When the body is sleeping, no collision detection or simulation will be performed anymore. This saves a lot of CPU cycles.

    刚体休眠完全自动发生。只要刚体的速度低于sleepAngularVelocitysleepVelocity,该刚体就会开始休眠。其空闲一些帧后,就会被设置成休眠状态。处于休眠状态中的物体,不会再对其进行碰撞检测和模拟。这会节约大量的CPU开销。

    sleepAngularVelocity 和 sleepVelocity 可以在(Edit -> Project Settings -> Physics)修改。

    2D 刚体工作原理

    • 刚体的用途

    通常,Unity Editor 的 Transform 组件定义 GameObject(及其子游戏对象)在场景中的位置、旋转和缩放方式。当Transform被改变,它会更新其他组件,例如将对象渲染在哪里或 colliders 的位置之类的属性。2D 物理引擎可以移动 colliders并使它们相互作用,因此物理引擎需要一种方法将 colliders的移动传回Transform组件。此移动以及与colliders的连接便是 2D 刚体组件的用途。 

    • 不要修改Transform组件

    2D 刚体组件会覆盖Transform组件,并将其更新为 2D 刚体定义的位置/旋转。请注意,虽然仍然可以通过自行修改Transform组件来覆盖 2D 刚体(因为 Unity 会公开所有组件上的所有属性),但是这样会导致各种问题,例如游戏对象相互穿透或嵌入、以及不可预测的移动。

    • 附加到2D刚体的Colliders

    所有被添加到同一游戏对象或子对象的 2D colliders 组件都会被隐式附加到该 2D 刚体2D colliders被附加到 2D 刚体时,会随之移动。严禁使用Transform组件或任何colliders偏移来直接移动 2D colliders;而应移动 2D 刚体。这将提供最佳性能并确保正确的碰撞检测。连接到同一 2D 刚体的多个 2D colliders不会相互碰撞。这意味着可以创建一组colliders来有效充当一个复合colliders,使所有colliders都与 2D 刚体同步移动和旋转。

    设计场景时,可自由使用默认的 2D 刚体并开始附加colliders。这些colliders可使连接到不同 2D 刚体的任何其他colliders相互碰撞。

    组件详解

    • 【BodyType】 

     此选项决定了:

    • 移动行为(位置&旋转)” (对象能以何种方式发生位移/旋转)
    • 碰撞器交互(对象能与哪些类型的刚体发生碰撞)

    请注意,虽然 Rigidbody 2Ds 通常被描述为相互碰撞,但碰撞的是这些物体中的每一个的 Collider 2Ds。如果没有碰撞器,刚体 2D 不能相互碰撞。

    移动行为

    可发生碰撞的刚体类型

    (即:能触发函数回调的类型)

    性能消耗

    Dynamic

    (动态)

    默认类型

    模拟会移动的物体。

    运动方式:

    • 脚本 - velocity
    • 脚本 - 作用力(AddFroce
    • 重力
    • 碰撞
    全部最高

    Kinematic

    (运动学)

    模拟会移动、但仅在明确的用户控制下运动的物体。不会因物理模拟移动。

    运动方式:

    碰撞时无法被撼动(无限质量)。

    [ x ] Use Full Kinematic

    仅 Dynamic

    [ ] Use Full Kinematic:

    全部

    Static

    (静态)

    模拟不会移动的物体(具有无限质量 不可移动)

    velocity、AddForce、gravity、MovePosition、MoveRotation都不可用

    仅 Dynamic最低

    • Dynamic - 默认类型

    最常见、功能最全、性能消耗最大。位移可以受Velocity、作用力、重力、碰撞影响。

    Dynamic 刚体被设计为在simulation条件下移动。它具有可用的全套属性(例如有限质量和阻力),并受作用力重力的影响。Dynamic 刚体类型可以与所有其他刚体类型碰撞,是最具互动性的刚体类型。这是需要移动的对象最常见的刚体类型,因此是 2D 刚体的默认刚体类型。此外,由于具有动态性并与周围所有对象互动,因此也是性能成本最高的刚体类型。所有 Rigidbody 2D 属性都可用于此BodyType。 

    不要使用 Transform 组件来设置 Dynamic 2D刚体的位置或旋转。模拟系统会根据 Dynamic 2D 刚体的速度(velocity)对该刚体重新定位;可以通过脚本,对刚体施加来直接更改此值,也可以通过碰撞重力来间接更改此值。

    • Kinematic

    性能更好。运动完全依赖用户的脚本控制,碰撞虽可以被检测到,但无法影响其行动轨迹

    Kinematic 刚体设计为在simulation条件下移动,但是仅在非常明确的用户控制下进行。 

    Kinematic 2D 刚体不会作用力重力的影响,因此,Kinematic 的速度很快,与 Dynamic 2D 刚体相比,对系统资源的需求更低。Kinematic 2D 刚体被设计为通过 Rigidbody2D.MovePosition 或 Rigidbody2D.MoveRotation 进行显式重新定位。使用物理查询来检测碰撞,通过脚本确定 2D 刚体移动的位置和方式。

    Kinematic 2D 刚体仍然通过速度(velocity)移动,但是此velocity不受作用力重力的影响。Kinematic 2D 刚体不会与其他 Kinematic 2D 刚体和 Static 2D 刚体碰撞,只会与 Dynamic 2D 刚体碰撞。与 Static 2D 刚体相似,Kinematic 2D 刚体在碰撞期间的行为类似于不可移动的对象(就像具有无限质量)。选择此刚体类型时,与质量相关的属性将不可用。 

    [  ] Use Full Kinematic Contacts 选项

    不勾选:只检测与Dynamic 2D 刚体的碰撞

    勾选:检测与全部BodyType刚体的碰撞(只是能检测到,并不会在物理模拟层面产生影响)

    默认情况下会取消选中此框。如果希望 Kinematic 2D 刚体与所有 2D 刚体类型能够监测到碰撞,请启用此设置(选中复选框)。这种情况下类似于 Dynamic 2D 刚体,不同之处在于 Kinematic 2D 刚体在接触另一 2D 刚体组件时不会被物理引擎移动,而会充当一个具有无限质量不可移动对象

    禁用 Use Full Kinematic Contacts 时,Kinematic  2D 刚体只会与 Dynamic 2D 刚体碰撞,不会与其他 Kinematic 2D 刚体或 Static 2D 刚体碰撞(请注意Trigger碰撞器是此规则的例外情况)。这意味着不会发生碰撞脚本回调(OnCollisionEnterOnCollisionStayOnCollisionExit

    假如你要使用物理查询(例如 Physics.Raycast)来检测 2D 刚体应该移动的位置和方式时,以及需要多个 Kinematic 2D 刚体相互交互时,可能会很不方便。这时你可以启用 Use Full Kinematic Contacts 使 Kinematic 2D 刚体产生交互。

    Use Full Kinematic Contacts 允许显式控制 Kinematic 2D 刚体的位置和旋转,但是仍然允许完全碰撞回调。在需要显式控制所有 Rigidbody 2D 的设置中,使用 Kinematic Rigidbody 2D 代替 Dynamic Rigidbody 2D 仍具有完整的碰撞回调支持。

    • Static

    Static 2D 刚体设计为在simulation条件下完全不动;如果任何对象与 Static 2D 刚体碰撞,Static刚体的行为就像一个不可移动的物体(就像它有无限的质量)。此刚体类型也是使用资源最少的刚体类型。Static 刚体只能与 Dynamic 2D 刚体碰撞。不支持两个 Static 2D 刚体进行碰撞,因为这种刚体不是为了移动而设计的。

    可通过两种方法将 2D 刚体标记为  Static :

    1.对于具有 2D collider组件的游戏对象,不附加 2D 刚体组件。所有此类 2D 碰撞体在内部均视为已附加到单个隐藏的 Static 2D 刚体组件。(如果对象只添加了Collider组件,没有添加Rigidbody组件,效果等同于添加了一个Static刚体组件。)

    2.让 GameObject 拥有一个 Rigidbody 2D 并将该 Rigidbody 2D 设置为Static。

    方法 1 是创建 Static类型的 2D碰撞体的快速方法。当要创建大量 Static 类型的 2D 碰撞体时,不用为每个具有 2D Collider的游戏对象都添加 2D 刚体。

    方法 2 用于提高性能。如果需要在运行时移动或重新配置 Static 2D 碰撞体,该碰撞体具有自己的 2D 刚体时完成这些操作会更快。如果需要在运行时移动或重新配置一组 2D 碰撞体,则将这些碰撞体全部设为一个标记为 Static 的父 2D 刚体的子代会比单独移动每个游戏对象更快。

    注意:如上所述,Static 2D 刚体设计为不移动,因此不会考虑相交的两个 Static 2D 刚体对象之间的碰撞。然而,如果 Static 2D 刚体和 Kinematic 2D 刚体的其中一个 2D 碰撞体设置为触发器,两者就会交互作用

    注意:BodyType不要在运行时去修改,参考文章https://blog.csdn.net/serenahaven/article/details/78851089

    • 【Simulated】

    控制启用/禁用 2D刚体 2D物理模拟系统 之间的交互。(*2D刚体以及其附加的2D Colliders和2D关节)。使用它,比直接启用/禁用Collider2D组件和Joint2D组件更有效率——在内存和处理器方面。

    开启/禁用模拟。包括

    • 物理模拟系统控制的运动(重力、作用力)
    • Collider2D的碰撞
    • Joint2D的约束效果
    • 2D 刚体、2D 碰撞体和 2D 关节的所有内部物理对象 stay in /are left in memory

    为什么取消选中 Simulated 比单个组件控制更高效?

    在 2D 物理模拟中,2D 刚体会控制附加的 Collider2D 的位置和旋转,并允许 2D 关节组件将这些位置和旋转用作锚点。Collider2D 会随着附加的 2D 刚体的移动而移动。然后,Collider2D 会计算与附加到其他 2D 刚体的其他 Collider2D 的触点。2D 关节还会约束 2D 刚体的位置和旋转。所有这些操作都会耗费模拟时间。

    可通过单独启用/禁用组件来停止/启动 2D 物理模拟的各个元素,在 Collider2D 和 2D 关节组件上都可以执行此操作。但是,启用和禁用各个元素会带来内存使用和处理器处理成本。禁用Simulated时,2D 物理引擎不会生成需要模拟的基于物理的任何内部对象。启用Simulated时,2D 物理引擎会生成需要模拟的基于物理的内部对象。启用和禁用 2D 物理模拟组件意味着必须创建和销毁内部游戏对象和基于物理的内部组件;禁用Simulated比禁用单个组件更容易、更高效。

    注意:取消选中 2D 刚体的 Simulated 选项时,附加的所有 2D 碰撞体都会有效“隐形”,即:无法被任何物理查询(例如 Physics.Raycast)检测到。

    • 【Collision Detection】

    Discrete(离散):

            默认选项。关闭刚体的持续碰撞检测,仅会在新位置生成碰撞触点。 游戏对象在物理更新期间可能会重叠或穿过彼此(如果移动得足够快)。

    Continuous(连续):

            确保在Rigidbody2D移动时检测到所有碰撞。具有 2D 刚体和 2D 碰撞体的游戏对象在更新期间不会穿过彼此。相反,Unity 会计算 2D 碰撞体的第一个影响点,并将游戏对象移动到该点。请注意,此设置比 Discrete 耗费更多 CPU 时间。

    • 【Gravity Scale】

    重力。改为0将不受重力下坠影响。

    • 【Sleeping Mode】

    定义GameObject如何“睡眠”以节省CPU在静止时的时间。

    Never Sleep

    Sleeping is disabled (this should be avoided where possible, as it can impact system resources).

    禁止睡眠(应尽可能避免这样做,因为它会影响系统资源)

    Start Awake

    GameObject is initially awake.

    GameObject最初是唤醒的。

    Start Asleep

    GameObject is initially asleep but can be woken by collisions.

    GameObject最初处于睡眠状态,但可以通过碰撞唤醒。

    • 【Interpolate

    插值:定义如何在物理更新之中插入GameObject的移动(当运动趋于不稳定时很有用)

            None不应用平滑移动。
            Interpolate

    基于GameObject之前帧的位置,进行平滑移动差值。

            Extrapolate

    基于GameObject在下一帧中的位置估计,进行平滑移动差值。

    • 【Constraints】

    定义刚体运动的约束。

    冻结位置可选,停止刚体在世界坐标X和Y轴上移动。
    冻结旋转可选,停止刚体绕Z轴旋转。

    脚本调用

    参见https://www.cnblogs.com/qq2351194611/archive/2004/01/13/11911559.html

    ProjectSettings-Physics2D

    手册https://docs.unity3d.com/Manual/class-Physics2DManager.html 

    Gravity重力Set the amount of gravity applied to all Rigidbody 2D GameObjects. Generally, you only set gravity for the negative direction of the y-axis.

    设置应用于所有Rigidbody 2D的重力 游戏对象

    通常,仅将重力设置为y轴的负方向。

    Default Material默认材质Set a reference to the Physics Material 2D
     to use if none has been assigned to an individual Collider
     2D.
    设置要使用的  Physics Material 2D
     如果没有指定特定的2D碰撞器
    Velocity Iterations速度迭代Set the number of iterations made by the physics engine
     to resolve velocity effects. Higher numbers result in more accurate physics but at the cost of CPU time.
    设置由物理引擎为解决速度影响而进行的迭代次数。较高的数字会导致更精确的物理效果,但会占用CPU时间。
    Position Iterations位置迭代Set the number of iterations made by the physics engine to resolve position changes. Higher numbers result in more accurate physics but at the cost of CPU time.设置由物理引擎为解决位置变化而进行的迭代次数。较高的数字会导致更精确的物理效果,但会占用CPU时间。
    Velocity Threshold速度阈值Set the threshold for elastic collisions. Unity treats collisions with a relative velocity lower than this value as inelastic collisions (that is, the colliding GameObjects do not bounce off each other).设置弹性碰撞的阈值。Unity对待碰撞与相对速度低于此值作为非弹性碰撞(即,碰撞GameObjects不相互弹开时)。
    Max Linear Correction线性矫正最大值Set the maximum linear position correction used when solving constraints (from a range between 0.0001 to 1000000). This helps to prevent overshooting.设置求解约束时使用的最大线性位置校正(范围为0.0001至1000000)。这有助于防止过冲。
    Max Angular Correction角度矫正最大值Set the maximum angular correction used when solving constraints (from a range between 0.0001 to 1000000). This helps to prevent overshooting.设置求解约束时使用的最大角度校正(范围为0.0001至1000000)。这有助于防止过冲。
    Max Translation Speed最大移动速度Set the maximum linear speed of a Rigidbody
     2D GameObject during any physics update.
    设置使用2D刚体的GameObject在物理更新中线性速度的最大值
    Max Rotation Speed最大旋转速度Set the maximum rotation speed of a Rigidbody 2D GameObject during any physics update.设置使用2D刚体的GameObject在物理更新中旋转速度的最大值
    Baumgarte ScaleSet the scale factor that determines how fast Unity resolves collision overlaps.设置比例因子,该比例因子确定Unity解决碰撞重叠的速度。
    Baumgarte Time of Impact ScaleSet the scale factor that determines how fast Unity resolves time-of-impact overlaps.设置比例因子,该比例因子确定Unity解决碰撞时间重叠的速度。
    Time to Sleep进入睡眠的时间值The time (in seconds) that must pass after a Rigidbody 2D stops moving before it goes to sleep.2D刚体停止移动后,到进入睡眠之前所必须经过的时间(秒)。
    Linear Sleep Tolerance线性睡眠容差Set the linear speed below which a Rigidbody 2D goes to sleep after the Time to Sleep elapses.经过“Time to Sleep”的时间后,当2D刚体线性速度低于该值,刚体进入睡眠。
    Angular Sleep Tolerance角度睡眠容差Set the rotational speed below which a Rigidbody 2D goes to sleep after Time to Sleep elapses.经过“Time to Sleep”的时间后,当2D刚体旋转速度低于该值,刚体进入睡眠。
    Default Contact Offset默认接触(距离)偏移值Set a proximity distance value for colliders to be considered in contact, even they are not actually in contact. Colliders whose distance is less than the sum of their contactOffset values generate contacts. This allows the collision detection system to predictively enforce the contact constraint even when the objects are slightly separated.
    Caution: Reducing this value too far could cripple Unity’s ability to calculate continuous polygon collisions. Conversely, increasing the value too much could create artifacts for vertex collision.
    为被视为接触的对撞机设置接近距离值,即使它们实际上没有接触。距离小于其contactOffset值之和的碰撞器会生成接触。这使碰撞检测系统可以预测性地强制执行接触约束,即使物体稍微分离也是如此。
    注意:将该值减小得太多可能会削弱Unity计算连续多边形碰撞的能力。相反,过多增加该值可能会导致顶点碰撞的假象。
    Auto Simulation自动模拟Enable this option to automatically run the physics simulation or allow explicit control of it.启用此选项可自动运行物理模拟或允许对其进行显式控制。
    Queries Hit Triggers触发器命中查询Enable this option if you want Collider 2Ds marked as Triggers to return a hit when any physics query (such as Linecasts or Raycasts) intersects with them. Defaults to enabled.如果要让标记为isTriggerCollider 2D在任何物理查询(例如“线”或“射线”)与它们相交时返回命中,请启用此选项。默认为启用。
    Queries Start In CollidersEnable this option if you want physics queries that start inside a Collider 2D to detect the collider they start in.如果要在Collider 2D内部开始的物理查询检测它们开始的碰撞机,请启用此选项。
    Callbacks On DisableEnable this option to produce collision callbacks when a collider with contacts is disabled.
    Auto Sync Transforms自动同步转换Enable this option to automatically sync transform changes with the physics system.启用此选项可自动将变换更改与物理系统同步。
    Layer Collision Matrix图层碰撞阵列表Define how the layer-based collision detection system behaves. Select which layers on the Collision Matrix interact with the other layers by checking them.定义基于层的碰撞检测系统的行为。通过检查来选择“碰撞矩阵”上的哪些层与其他层进行交互。

    展开全文
  • 2D刚体

    2020-09-13 21:48:56
    如果是-1,body将使用在Project >项目设置> Physics > 2d中定义的默认Angular阻尼。 Vector2 applied_force 物体的总作用力 float applied_torque 物体的总施加扭矩。 物体的行为也会受到世界属性的影响,如在项目...

    RigidBody2D

    这个节点实现了模拟的2D物理。你不能直接控制一个RigidBody2D。相反,您可以对它施加力(重力、脉冲等),物理模拟会根据它的质量、摩擦力和其他物理属性计算出运动结果。

    一个RigidBody2D有4种行为模式。RigidBody2D有4种行为模式:Rigid、Static、Character和Kinematic。

    注意:你不应该每一帧都改变一个RigidBody2D的位置或线性速度,甚至不应该经常改变。如果你需要直接影响身体的状态,请使用_integrate_forces,它允许你直接访问物理状态。

    还请记住,物理体管理自己的变换,它会覆盖你设置的变换。因此,任何直接或间接的变换(包括节点或其父体的缩放)都将只在编辑器中可见,并在运行时立即重置。

    如果你需要覆盖默认的物理行为或在运行时添加一个变换,你可以写一个自定义的力集成。请参阅 custom_integrator。

    您可以通过 “质量”、"摩擦 "或 "反弹 "等属性来修改刚体的行为,这些属性可以在检查器中设置。
    在这里插入图片描述

    Mode mode

    刚体可以设置为以下四种模式之一:

    • 刚性 – -- 身体表现为一个物理物体。它与其他物体发生碰撞,并对施加在它身上的力作出反应。这是默认模式。
    • 静态 - 本体的行为就像一个StaticBody2D,不会移动。
    • Character - 类似于 "Rigid "模式,但物体体不能旋转。
    • Kinematic - 本体的行为就像KinematicBody2D,必须通过代码来移动。

    float weight
    物体的重量,基于它的质量和 “项目”>“项目设置”>“物理学”>"2d "中的默认重力值。

    PhysicsMaterial physics_material_override
    物体的物理材质覆盖。
    如果一个材质被分配给这个属性,它将被用来代替任何其他物理材质,例如继承的材质。

    float gravity_scale
    乘以施加到物体的重力。 根据“项目”>“项目设置”>“物理”>“ 2d”中的“默认重力”值和/或由Area2Ds应用的任何额外的重力向量来计算物体的重力。

    bool custom_integrator
    如果为真,则该物体的内力整合被禁用。除了碰撞响应外,该物体只会按照_integrate_forces函数的决定移动。

    CCDMode continuous_cd 连续碰撞检测模式。
    连续碰撞检测试图预测移动物体将在哪里碰撞,而不是移动它,并在碰撞后纠正它的运动。连续碰撞检测速度较慢,但更精确,与快速移动的小物体的碰撞漏失更少。有Raycasting和shapecasting方法。有关详细信息,请参阅CCDMode。

    int contacts_reported 记录的最大接触物体数量。要求 contact_monitor 设置为 true。 注意:
    接触的数量与碰撞的数量不同。平行边之间的碰撞将导致两个接触点(两端各一个),平行面之间的碰撞将导致四个接触点(每个角一个)。

    bool contact_monitor
    如果为真,当本体与另一个RigidBody2D碰撞时,本体将发出信号。参见 contacts_reported。

    bool sleeping
    如果为"true",物体不会移动,也不会计算力,直到被另一个物体通过碰撞等方式唤醒,或者使用apply_impulse或add_force来唤醒。

    bool can_sleep
    如果为true,则物体不运动时可以进入睡眠模式。 见sleeping。

    float linear_damp
    衰减物体的线性速度。如果是-1,主体将在项目>项目设置>物理> 2d中使用默认的线性阻尼。

    float angular_damp
    衰减物体的角速度。如果是-1,body将使用在Project >项目设置> Physics > 2d中定义的默认Angular阻尼。

    Vector2 applied_force
    物体的总作用力

    float applied_torque
    物体的总施加扭矩。

    物体的行为也会受到世界属性的影响,如在项目设置->物理学中设置,或者进入一个覆盖全局物理学属性的Area2D。
    在这里插入图片描述

    当一个刚体处于静止状态,有一段时间没有移动,它就会进入睡眠状态。沉睡的物体就像一个静态的物体,它的力不会被物理引擎计算。当力被施加时,无论是通过碰撞还是通过代码,该体都会被唤醒。

    使用RigidBody2D

    使用刚体的好处之一是可以 "免费 "拥有很多行为,而无需编写任何代码。例如,如果你要做一个 "愤怒的小鸟 "风格的游戏,其中有掉落的积木,你只需要创建RigidBody2Ds并调整它们的属性。堆叠、坠落和弹跳将由物理引擎自动计算。

    然而,如果你希望对物体有一定的控制权,你应该注意–改变一个刚体的位置、线性速度或其他物理属性可能会导致意外的行为。如果你需要改变任何与物理相关的属性,你应该使用 _integrate_forces() 回调而不是 _physics_process() 。在这个回调中,您可以访问物体的Physics2DDirectBodyState,它允许安全地改变属性并与物理引擎同步。

    例如,下面是“小行星”风格飞船的代码:

    extends RigidBody2D
    
    var thrust = Vector2(0, 250)
    var torque = 20000
    
    func _integrate_forces(state):
        if Input.is_action_pressed("ui_up"):
            applied_force = thrust.rotated(rotation)
        else:
            applied_force = Vector2()
        var rotation_dir = 0
        if Input.is_action_pressed("ui_right"):
            rotation_dir += 1
        if Input.is_action_pressed("ui_left"):
            rotation_dir -= 1
        applied_torque = rotation_dir * torque
    

    void _integrate_forces ( Physics2DDirectBodyState state ) virtual
    允许你读取并安全地修改对象的模拟状态。如果你需要直接改变物体的位置或其他物理属性,请使用它来代替Node._physics_process。默认情况下,它除了通常的物理行为外,还可以工作,但custom_integrator允许你禁用默认行为,并为一个体编写自定义的力集成。

    需要注意的是,我们并不是直接设置linear_velocity或angular_velocity属性,而是对物体施加力(推力和扭矩),让物理引擎计算出结果的运动。

    注意
    当一个刚体进入睡眠状态时,_integrate_forces()函数将不会被调用。要重写这一行为,您需要通过创建碰撞、对其施加力或禁用 can_sleep 属性来保持刚体的清醒。请注意,这可能会对性能产生负面影响。

    方法

    void apply_impulse ( Vector2 offset, Vector2 impulse )
    对身体施加一个定位冲力。冲力与时间无关!对每一帧施加一个脉冲,就会产生与帧数相关的力。因此,它只能在模拟一次性影响时使用(否则使用“_force”函数)。该位置使用了全球坐标系统的旋转,但以物体的原点为中心。

    void apply_torque_impulse ( float torque )
    对物体施加旋转冲力。

    void add_force ( Vector2 offset, Vector2 force )
    在物体上添加一个位置的力。力和与物体原点的偏移都是全局坐标。

    void add_torque ( float torque )
    增加恒定的旋转力。

    展开全文
  • lammps模拟中刚体的设置方法

    千次阅读 2021-08-04 09:17:26
    在有些lammps模拟中,需要把部分原子组设为刚体,如纳米切削过程中,可把刀具设为刚体。 被设为刚体的原子组结构不发生变化,因此,可通过neigh_modify exclude命令取消刚体内部原子之间相互作用力,以节省计算资源...
  • 概要 Pysics 是一个简单的 Python 模块,能够模拟服从完整约束的任意二维多体机械系统,包括具有... 例如,下面的代码片段定义了一个具有气动阻力的双实心摆。 from pysics import * #Create the simulation object
  • 〖Array王锐大神力作〗osg与PhysX结合系列内容——刚体物理表现本节内容建立物理世界建立刚体对象定义通用碰撞体形状静态和动态刚体定义刚体的动力学属性碰撞回调构建测试场景并运行 本节内容 建立物理世界 在我们...
  • Unity入门——刚体

    2021-08-06 20:48:05
    这是一个精灵作为刚体前后移动的函数,后面有对函数的解析。 public class RubyController : MonoBehaviour//是控制一个名为Ruby的主角 { Rigidbody2D rigidbody2d; float horizontal; float vertical; // 在...
  • 刚体转动的基本概念

    千次阅读 2020-05-16 17:58:07
    目录一、刚体的定轴转动1. 刚体转动的角速度和角加速度【ω,α】2. 匀变速转动公式3. 角量和线量的关系二、力矩 转动定律 转动惯量1. 力矩【M】2. 转动定律3. 转动惯量【J】4. 平行轴定理三、角动量 角动量守恒定律...
  • 基本旋转 不考虑平移的情况下,即坐标系原点重合时,通过上述定义的 R R R 矩阵,其每列表示的是刚体坐标系基向量在参考坐标系下的余弦。 旋转矩阵 R R R 的物理含义是:将参考坐标系旋转到与刚体坐标系重合所需要...
  • 刚体转动是力学中最重要的部分之一,学生在学习刚体转动的过程中存在着很多学习困难。本次研究的主要目的就是研究学生在学习刚体转动过程中存在的前概念,并基于学生的前概念提出教学上的改进建议。1.2 国内外研究...
  • unity3d刚体 了解Unity 3D刚体 (Understanding Unity 3D Rigidbodies) A rigidbody is a property, which, when added to any object, allows it to interact with a lot of fundamental physics behaviour, like ...
  • 详解Unity中的刚体和碰撞体组件

    千次阅读 2022-04-08 15:07:30
    Unity 中内置了一套...而在 Unity 物理引擎中,刚体组件和碰撞体组件则是无法避开的,刚体组件是让物体产生物理行为的组件,而碰撞体组件则是让刚体与物体产生碰撞的组件,今天就来简要认识一下这两种组件吧。......
  • 刚体的速度只有在选定坐标系时才有谈论意义,比如一台小车可以看作是一个刚体,其上有三个传感器,Camera有一个速度,IMU有一个速度,轮子有一个速度,首先它们的速度是不同的(比如把地球看作一个刚体,地心的速度...
  • 这是一种图形化的交互式可视化工具,用于在力场中加速的物理刚体(质量)的不同离散积分功能。 这样做的目的是比较Euler和Runge-Kutta系列不同算法的精度,以及它们对不同加速功能的适用性。 执照 根据以下任一许可...
  • 为了提高医学影像的配准性能,利用流体粒子运动可以模拟任意自由复杂形变的特性,将医学影像配准问题转化为粘滞流体力学物理问题,提出了一种基于离散格子玻耳兹曼方法(LBM)的非刚体配准新方法.配准过程是把浮动...
  • 本文针对动力学在矩阵李群上定义的多个刚体,包括特殊的欧几里得群SE(2),SE(3),讨论了有限时间地层跟踪控制问题。 预先以离线状态生成姿态和平移运动形式的参考轨迹,作为用于跟踪的虚拟前导。 此外,根据任务...
  • 三维空间的刚体运动

    2020-05-13 17:18:18
    三维空间的刚体运动1)旋转矩阵2)变换矩阵3)欧拉角4)四元数 一个刚体在三维空间中的运动如何描述? 我们知道是由旋转加平移组成的,平移很简单,但是旋转有点麻烦。 三维空间的刚体运动的描述方式:旋转矩阵、...
  • 三维空间中刚体运动

    2020-02-21 16:43:22
     对于坐标变换,向量本身没有发生变换,只是坐标系变了,根据坐标的定义有:  对上式左右两边同时左乘[e1,e2,e3]T,得:  得到 旋转矩阵R , 该矩阵各分量是两个坐标系基的内积,由于基向量的长度为 ...
  • 刚体就是 "刚性物体",它在运动过程中,内部各质点间的相对位置不会改变,也即每两个质点间的距离保持不变 假设刚体内任意两个质点,坐标分别为 $(x_1, y_1, z_1)$ 和 $(x_2, y_2, z_2)$,则在刚体运动过程中,这...
  • 机器人动力学建模之刚体动力学基础学习

    千次阅读 多人点赞 2019-08-28 14:29:41
    刚体动力学基础学习 1 符号 rrr:刚体上某个质量微元对固定点O的位置矢径 rPr_PrP​:刚体上一点P对固定点O的位置矢径 ρ\rhoρ:刚体上某个质量微元对基点P的位置矢径 ρc\rho_cρc​:刚体质心C对P的位置矢径 mmm...
  • 则坐标系 { B } \{B\} {B}的姿态可表示为: { B } = { A p B o B A R } \{B\}=\{\enspace^Ap_{Bo}\quad{}^A_BR\enspace\} {B}={ApBo​BA​R} 坐标系的描述概括了刚体的位置和姿态的描述,当表示位置时,旋转矩阵 B A...
  • 给出可行的软件解决方案,从而定义了多种软件之间相互通信的接口方式,并以虚拟施工场景中复杂多刚体对象虚拟塔吊为例,实现了虚拟塔吊的智能交互仿真.软件开发实践表明:所提出的方法、方案是可行的,达到具备良好...
  • 认识Box2d刚体 b2Body

    2019-06-01 11:34:13
    1 什么是刚体? 通俗的讲,刚体就是一个“东西”,在Box2D中的刚体b2Body类,是Box2d的核心类之一。 2 创建刚体 创建一个刚体,不单单...b2BodyDef: 要创建的刚体信息定义。 b2Body: 要创建的刚体。 b2Fixtur...
  • 虚幻引擎(UE4) 刚体(Rigid Body)

    千次阅读 2021-02-02 14:03:09
    Rigid Body(刚体) 本篇讲述刚体如何作为一种轻量级的物理属性在动画蓝图中的运用。 Rigid Body骨骼控制节点(如下图)可以被用于高性能模拟轻量级的物理特性。Rigid Body可以被添加到Animation Blueprint(动画蓝图)...
  • 利用两幅影像的灰度差生成驱动体素点形变的外力,通过格子玻尔兹曼方法(LBM)模拟外力控制下的体素点形变轨迹,将三维医学影像配准过程转换为粘滞流体的流动过程,提出了一种颅脑核磁共振影像的LBM三维非刚体配准新...
  • 三维刚体变换公式

    2021-07-29 21:25:59
    最近在做刚体变换,查阅了许多相关的文献,发现许多文章中对于旋转矩阵的定义都不一致。笔者经过仔细比对终于发现了一些规律,现在总结如下: 第一种: 注意这里的 sin 角的正负号,使用这种方式定义的x,y,z旋转...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,816
精华内容 3,126
关键字:

刚体定义