MAX Reactor之复合约束、点到点、铰链约束

reactor中的简单约束有3种:Springs(弹簧约束),UnearDashpots(阻尼约束)和Angular DaShp0ts(角阻尼约束)。复合约束有6种: Point-to-Point Constraints(点对点约束),Point-to-Path Constraints(点对路径约束),Hinge(合叶约束),Prismatic Constraints(棱镜约束),Car-Wheel Constraints(车与轮约束)和Rag Doll Constraints(布娃娃约束) 。

1、如何建立一个复合约束?

简单约束只用加到两个刚体上就可以用了。

而复合约束还需要有约束解算器(constraint solver),首先,同简单约束一样,为两个几何物体建立出刚体集合,并将此两物体加入到约束中;

然后,增加一个约束解算器,并将刚体集合(rigid body collection)加入到约束解算器器中,就算是完成了复合约束。

约束解答器的作用是将复合约束放到一个特殊的刚体收集器中,并使所有这些约束一起工作。约束解答器只有与一个有效的刚体收集器对应时才有效,这一刚体收集器中的刚体就是约束解答器中的约束控制的对象。无效的约束解答器在视图中显示为红色。若禁止一个约束解答器的运行,则其中所有的约束都不会被模拟。

解释:上面的RB collection只能指定一个刚体集合,而下面的Constraints就可以指定多个约束。

Deactivation Threshold 失效临界值

需要注意的是,一个解算器只能对应一个刚体集合,但可以添加多个复合约束。

复合约束具有以下一些共有属性:
Strength and Tau (强度和Tau值):这两项支配一个约束保持自身生效的难易程度。

Strength:约束保持自身生效的推动力,这一参数控制给予约束中各对象推动力的百分比,若这个力足够大,约束就能保持下去。

Tau:当约束发生"漂移"(被连接对象的状态令约束不能继续)时加入的校正力,这一参数控制给予约束中各对象校正力的百分比。

Breakable Constraints (可破约束):超过特定阈值时失效的约束,例如一扇门的铰链当用力踢时就会断裂。

Breakable (可破):勾选此复选框,约束变为可破约束。

Linear (线性):约束失效的临界线性推动力的大小。

Angular (角性):约束失效的临界角性推动力大小。

2、什么是点对点(Point To Point)约束?

点-点约束是最简单的复合约束。它允许我们将两个对象连接到一起,或将一个对象与坐标系中的一点连接在一起。它使其约束的对象共享坐标系中的一点,对象可以相对对方自由旋转,但始终共用一个连接点。

reactor提供两种点-点约束的形式Limited Point-To-Point Constraints (受限点-点约束)和Stiff Springs (硬弹簧)。有限点-点约束可具体指定子对象相对父对象旋转的限度。硬弹簧约束与普通的点-点约束只有一点不同:它为其约束对象之间指定具体距离,就好像它们是连接在一根杆子的两端,用渔线相连,虽然他们可以各自转动和运动,但他们之间的距离是一定的。

这需要每个对象上各有一点,这两点间的距离固定且分离,每个对象可绕它上在的一点自由旋转。

Constraint Type (约束类型)选项组

选择要添加到场景中的点-点约束类型,共有3种

Standard (标准):默认选项。

Limited (受限):这一类型可限制子对象相对父对象旋转的角度。

Stiflf Spring (硬弹簧):这一类型保持对象约束连接点间有一定的距离。

Limited (受限)选项组

确定子对象相对父对象绕X,、Y,Z轴旋转的限度,对于每个轴均有
个最小(Min)限度(逆时针)和最大(Max)限度(顺时针),其后的Display 复选框用于打开或关闭视图中的受P艮程度显示。


Stiff Spring (硬弹簧)选项组

Length 长度:两连接点间要保持的距离,若想使用当前连接点间的距离作为弹簧的长度,单击Set (设置)按钮。

Display(显示)选项组 Size (尺寸):改变视图中显示的约束受限程度的标志的大小,默认值为1.0。

2、什么是合叶(Hinge)铰链约束?

铰链约束允许我们模拟两个对象间类似铰链的效果。我们可为每个对象指定其转动轴的位置和方向,在模拟时,两个对象的转动轴将始终保持相配,从而使这两个对象绕同一个轴旋转。我们也可模拟一个对象绕坐标系中一个轴旋转的效果。还可以限制对象绕轴旋转的角度,比如设置一扇门只能推开到某种程度,这一限制是针对垂直于对象旋转轴设置的。

铰链约束的大部分参数与点-点约束相同。

上面是Hinge的属性,其中:

Parent与Child---------指定父与子刚体

Align Space To-----将转轴对齐到,有四个选项:child body(子刚体)、child Space(子空间)、Parent Body(父刚体)、Parent Space(父空间),选了后轴将自动移动到对应位置。

Lock Relative Transform ----------锁定相关变化


Limited (受限)选项组
限制对象间的旋转角度。
Min Angle (最小角度):限制对象间旋转的最小角度。
Max Angle (最大角度):限制对象间旋转的最大角度。
Friction (摩擦):指定对象绕轴旋转时受到的摩擦,仅对受限铰链。

要想让铰链约束象门一样只在一个轴向上活动,就必须让它的铰链轴转动到合适的位置,对铰链约束对象进行修改,在其属性中找到Parent Space(父空间)或Child Space(子空间),这时,约束轴就会以绿色显示出来,你可以将其旋转到门轴的角度。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如果组件之中有复用的代码,需要重新创建一个父类,父类中存储公共代码,返回子类,同时把公用属性...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例如我们的 setState 函数式同步执行的,我们的事件处理直接绑定在了 dom 元素上,这些都跟 re...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom 转为真实 dom 进行挂载。其实函数是组件和类组件也是在这个基础上包裹了一层,一个是调...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使用,可能是不了解。我公司的项目就没有使用,但是在很多三方库中都有使用。本小节我们来学习下如果使用该...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接触 react 就一直使用 mobx 库,上手简单不复杂。
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc 端可以使用分页进行渲染数限制,在移动端可以使用下拉加载更多。但是对于大量的列表渲染,特别像有实时数据...
本小节开始前,我们先答复下一个同学的问题。上一小节发布后,有小伙伴后台来信问到:‘小编你只讲了类组件中怎么使用 ref,那在函数式组件中怎么使用呢?’。确实我们...
上一小节我们了解了固定高度的滚动列表实现,因为是固定高度所以容器总高度和每个元素的 size、offset 很容易得到,这种场景也适合我们常见的大部分场景,例如...
上一小节我们处理了 setState 的批量更新机制,但是我们有两个遗漏点,一个是源码中的 setState 可以传入函数,同时 setState 可以传入第二...
我们知道 react 进行页面渲染或者刷新的时候,会从根节点到子节点全部执行一遍,即使子组件中没有状态的改变,也会执行。这就造成了性能不必要的浪费。之前我们了解...
在平时工作中的某些场景下,你可能想在整个组件树中传递数据,但却不想手动地通过 props 属性在每一层传递属性,contextAPI 应用而生。
楼主最近入职新单位了,恰好新单位使用的技术栈是 react,因为之前一直进行的是 vue2/vue3 和小程序开发,对于这些技术栈实现机制也有一些了解,最少面试...
我们上一节了了解了函数式组件和类组件的处理方式,本质就是处理基于 babel 处理后的 type 类型,最后还是要处理虚拟 dom。本小节我们学习下组件的更新机...
前面几节我们学习了解了 react 的渲染机制和生命周期,本节我们正式进入基本面试必考的核心地带 -- diff 算法,了解如何优化和复用 dom 操作的,还有...
我们在之前已经学习过 react 生命周期,但是在 16 版本中 will 类的生命周期进行了废除,虽然依然可以用,但是需要加上 UNSAFE 开头,表示是不安...
上一小节我们学习了 react 中类组件的优化方式,对于 hooks 为主流的函数式编程,react 也提供了优化方式 memo 方法,本小节我们来了解下它的用...
开源不易,感谢你的支持,❤ star me if you like concent ^_^
hel-micro,模块联邦sdk化,免构建、热更新、工具链无关的微模块方案 ,欢迎关注与了解
本文主题围绕concent的setup和react的五把钩子来展开,既然提到了setup就离不开composition api这个关键词,准确的说setup是由...
ReactsetState的执行是异步还是同步官方文档是这么说的setState()doesnotalwaysimmediatelyupdatethecomponent.Itmaybatchordefertheupdateuntillater.Thismakesreadingthis.staterightaftercallingsetState()apotentialpitfall.Instead,usecom