【小沐学Unity3d】Unity插件之绳索模拟Obi Rope

1、简介

https://assetstore.unity.com/packages/tools/physics/obi-rope-55579
在这里插入图片描述
Obi 是一款基于粒子的高级物理引擎,可模拟各种可变形材料的行为。

如果有 Burst、Jobs、Collections 和 Mathematics 资源包,它可以兼容所有 Burst 可以编译的平台。如果没有这些资源包,它仍可以运行,但仅限于 Windows、Mac、Linux、iOS 和 Android 平台。

使用 Obi Rope,你可以在几秒内创建绳索和杆子,同时完全控制它们的形状和行为:导向粒子技术可以对杆子使用不同的扭转/扭曲特效。绳索更加轻量化,并且能裁剪/调整尺寸。两者都可以与环境发生碰撞以及相互碰撞,也可以附着在坚硬的身体上。

2、安装

将安装包拖拽到项目面板的assets之后松开,弹出Obi Rope的导入界面。
在这里插入图片描述

3、示例测试

obi rope自带如下7个示例。
在这里插入图片描述
在项目界面中打开Sample Scenes文件夹,鼠标双击某一个示例,即可打开对应的场景进行测试。
在这里插入图片描述

3.1 Chains

编辑界面:
在这里插入图片描述
运行界面:
在这里插入图片描述
对象树:
在这里插入图片描述

3.2 Crane

编辑界面:
在这里插入图片描述

运行界面:
在这里插入图片描述
对象树:
在这里插入图片描述

3.3 ElectricalWires

编辑界面:
在这里插入图片描述

运行界面:
在这里插入图片描述

3.4 FreightLift

编辑界面:
在这里插入图片描述
运行界面:
在这里插入图片描述

3.5 Rocker

编辑界面:
在这里插入图片描述

运行界面:
在这里插入图片描述

3.6 RopeAndJoints

编辑界面:
在这里插入图片描述

运行界面:
在这里插入图片描述

3.7 RopeShowcase

编辑界面:
在这里插入图片描述

运行界面:
在这里插入图片描述

4、简单测试

4.1 新建绳子对象

  • 新建一个工程或场景.
  • 在层级树上添加一个Obi Rope对象,如下:

在这里插入图片描述
绳子的属性如下:
在这里插入图片描述

4.2 修改绳子材质

  • 修改属性Mesh Renderer - Materials
    在这里插入图片描述
    Material改变绳子的材质:
    鼠标点击Element 0后面的按钮,选择一个绳子的材质。

在这里插入图片描述
三维场景中的绳子如下:
在这里插入图片描述

4.3 修改绳子贴图UV

Initialize: 可以生成绳子
thickness scale: 改变绳子的粗细
UV scale: 改变绳子贴图UV
  • 修改属性Obi Rope - UV scale(纹理参数)
    修改Obi Rope属性分页下的参数UV scale中的Y为10.
    在这里插入图片描述

在这里插入图片描述
绳子上的材质效果修改如下:
在这里插入图片描述

4.4 修改绳子粗细

  • 修改属性Obi Rope - Thickness(绳子的粗细)
    在这里插入图片描述
    修改为0.1,然后点击初始化按钮Initialize,如下:
    在这里插入图片描述
    绳子变化如下:
    在这里插入图片描述

4.5 固定绳子上粒子点

绳子的一端一般需要固定到某个物体上或者墙上。
我们点击Obi Rope的Edit particels 按钮。Editor面板中绳子会变成如下所示的一堆蓝色点。这些蓝色点是绳子的信息点,控制这绳子的固定,handle,还有和物体的绑定。还有绳子平滑度的信息。

  • 固定绳子上的一个粒子点
    点击Edit particles 进入绳子的编辑状态,此时绳子上会出现很多蓝色的点。
    点击笔刷工具可以对点进行选取某一个或某些关键点。
    按住Shift可以取消选点,选中的点可以进行。

在这里插入图片描述
点击最上面的编辑点,然后点击编辑栏,点击Inverse selection–点击下方fix selected,此时运行该动画,便可实现柔性随鼠标拖动进行摆动的效果。
在这里插入图片描述
Handle的形式固定的点会对应生成一个Obi Handle。我们程序可以控制handle点,来让绳子运动.
在这里插入图片描述
运行如下:
在这里插入图片描述

4.6 添加绳子控制点

通过Add control point可以增加绳子控制点,来改变绳子的形状。
在这里插入图片描述
(1)取消粒子编辑框。
(2)点击按钮“Add control point”,多了一个控制点如下:
在这里插入图片描述
然后点击绳子生成按钮Initialize,自动生成了一段绳子,如下。
在这里插入图片描述
当然也可以通过移动或旋转绳子控制点,来改变绳子的形状。
在这里插入图片描述

4.7 修改其他属性

绳子的弹性、弯曲度等相关属性的设置
在Obi Rope上找到Obi Solver
Distance Constraint Parameters 可以设置绳子的弹性
Bending Constraint Parameters 可以设置绳子的弯曲度
在这里插入图片描述

  • Obi solver的一般参数:
1、MaxParticles(最大粒子数):为粒子池分配的内存,ObiActor会在需要时借用粒子,如果此时值为5000,每个ObiActor使用1000个粒子,则这个ObiSolver最多可以模拟 5 个角色。
2、改为增加分步骤,场景中碰撞过多的话,可以尝试减少分步骤。但是这个参数是之前旧版本的,在当前版本是没有的。
3、Simulate With Invisible( 隐形时模拟 ): 当所有相机看不见时,这个ObiSolver是否应该保持模拟?
4、Simulate In Local Space(在当地空间模拟):切换局部和世界空间。
5、Simulate Order(模拟选择):选择在哪个函数里更新该物理模拟。
  • Obi solver的Parameters参数:
1、Mode:模型类型(3D,2D)
2、Interpolation:有无差值(没有,有)
3、Gravity:重力(设置XYZ三轴向上的重力值)
4、Damping:阻尼系数(0-1)//控制绳索柔软度
5、Advection Radius:平流半径
6、Sleep Threshold:睡眠阈值//控制绳索的灵活度,后节与前节之间的动作连接幅度强度,值越小绳子越灵活,值越大绳子越硬
  • Obi solver的约束参数:每个约束都有相同的4个参数
1、Enabled: 功能为是否启用,用来判断是否更新和与该约束相关的物理模拟,默认是开启的
2、Evaluation Order: 选择模式,顺序和并行
3、Iterations:迭代,每个子步骤应该执行多少次该物理模拟  值越大物理模拟越精细。
4、SOR Factor:SOR代表连续过度放松。当试图满足约束时,改善收敛的一种方法是“过度放松”约束。也就是说,如果向左移动粒子2个单位将满足现在的约束,为什么不将它移动3个单位呢?这正是这个因素的用途。1是默认值,根本不执行过度放松。2是最大值,允许您在约束条件下执行两倍的松弛。高值可用于帮助加速两种模式(顺序或并行)中的任何一种的收敛,但请记住,模拟稳定性可能会降低。

4.8 添加碰撞物体

有碰撞的物体上需要添加Obi Collider

(1)新建一个立方体对象
在这里插入图片描述
(2)修改立方体的属性如下:
改立方体的位置,大小,材质等。
在这里插入图片描述

(3)给立方体添加一个组件:obi collider
在这里插入图片描述
(4)预览如下:
绳子落在了立方体做的地面上。
在这里插入图片描述

4.8 绑定物体到绳子上

首先创建一个Cube碰撞体,然后添加Obi Collider组件,然后这个Cube就可以和绳子进行碰撞交互了。还可以给Cube添加Rigidobject刚体,让Cube拥有重力。
然后我们通过点击绳子最下部的蓝色信息点,在绳子的Inspector面板找到Obi Pin Constraints组件,点击Add Pin Constraint按钮,然后,我们拖拽Cube到Pinned To参数上即可实现绳子和Cube的绑定。

(1)新建一个立方体对象Cube2,添加Obi Collider组件,如下:
在这里插入图片描述
(2)Obi Rope属性面板中点击Edit particles按钮,显示蓝色的信息点,鼠标选中其中一个点,接着点击按钮Add Pin Constraint,如下:
在这里插入图片描述
(3)在Obi Pin Constrains属性面板中将Pinned to的值设为上面新建的立方体对象Cube2。同时修改Offset的xyz的值为0,如下图所示。
在这里插入图片描述
(4)预览如下:
在这里插入图片描述
(5)给立方体对象Cude2添加刚体组件RigidBody,这样立方体cude2有了重力会往下掉。同时将绳子的其他某一个信息点设为固定点。
在这里插入图片描述
(6)运行如下:
在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

猜你喜欢

转载自blog.csdn.net/hhy321/article/details/129889510