解决 Kangaroo 安装问题

换了电脑,重新安装 Rhino 和 Grasshopper,把之前用的一些插件也都重新安装了一遍。结果在安装完 Kangaroo 插件后运行 Grasshopper ,提示 Loading Errors,并且在点击 Close 之后,Kangaroo 不完整,工具栏中没有运行器。

上 Google 搜索关键词,找到许多用户都遇到过这样的情况。其中有人解释说:

是因为 Grasshopper 的版本高了,所以导致这个错误发生。

我尝试将 Grasshopper 的版本降低,甚至低于了之前我所安装版本很多,还是没有没有解决。

后来经过多次查找之后,还是发现了问题所在。

由于文件被锁定,所以出现了错误。

找到了问题,开始解决问题。

根据 Loading Errors 的显示,找到在安装 Kangaroo 时的这三个文件。

逐一右键调出属性窗口,选择解除锁定,确定。

重启 Rhino 打开 Grasshopper,就不再会有错误提醒,也能够看到 KangarooPhysics 的运算器了。

我现在所用的版本:

Rhino5(64-bit)

Grasshopper 0.9.0076

Kangaroo Physics 0.099

Kangaroo 2.02

Kangaroo 学习之 Vortex

在 Forces 集合中有一个 Vortex 运算器。

通过 Vortex 运算器可以创建一个绕轴旋转的力。

点逆时针绕轴选择,但是不知道如何控制旋转的速度和公转半径。

所以尝试将在不同限制条件下的结果做了个对比。

仅强度变化时。

此情况下,随着强度增加,公转半径也变大,所需要的迭代次数降低。

仅控制值变化时。

在迭代次数到达某个程度时候,公转半径几乎不再变化。

考虑一个极端的情况,在高强度下变化控制值。

控制值增加,公转半径也增加。控制值在100、500的时候曲线几乎重叠。

暂时没有得出一个明确的结论。

Kangaroo 学习之 SphereCollide

在 Forces 集合中有一个 SphereCollide 运算器。

这个 SphereCollide 运算器可以用来模拟球体碰撞。

想尝试模拟反复碰撞,结果没有成功。只是碰撞之后又回到一个控制距离上。

原本是希望通过 SphereCollide 运算器来模拟粒子的随机运动和碰撞,结果由于 PowerLaw 运算器在实现所有点连接的时候 Kanaroo 运算器无法运行,所以这个想法暂时无法实现。得另外找方法。

Kangaroo 学习之 UnaryForce

在 Forces 集合中有一个 UnaryForce 运算器。

这个 UnaryForce 运算器是用来模拟地心引力。

先用 PowerLaw 赋予两点间引力。当两点间引力大于地心引力时候,球不会掉落。

当两点间引力小于地心引力时候,球会掉落。

其中在 PowerLaw 中的输入项 Cutoff 值为“-25”,是为了保持两点间的距离始终不变,可模拟拉索。不过,应该要可以设置弹性模量就最好。

Kangaroo 学习之 Equalize

在 Forces 集合中有一个 Equalize 运算器。

这个 Equalize 运算器的作用是使线段长度变得均衡。

这里将周围的点锚固,中间的点释放,可以发现点间的连线长度发生了变化,中间点也发生了位置偏移。

这里将中间点锚固,周围的点释放,最终连线长度变成同一个值,而且周围点的是沿着连线的轨迹运动的。

看到结果之后,以为是 PowerLaw 导致,于是在仅适用 PowerLaw 运算器的情况下在运行了一遍,发现结果并不一样。所有还是 Equalize 起作用的。

Kangaroo 学习之 PowerLaw

在 Forces 集合中有一个 PowerLaw 运算器。

使用 PowerLaw 这个运算器,可以让两点之间产生引力或者斥力,并且可以控制两点的距离。其中 Strength 中正值为斥力,负值为引力。

最初两点之间的距离是“50”,通过 Powerlaw 将两点间的力设置为引力大小为“-5”(暂时不知道单位是什么),控制值为“-13”,在运行 Kangaroo 之后,两点间的距离变成了“8.05”。

目前还没有弄明白这个运算器,只是能运行,而且其中的 Exponents 输入项的意义还不明白,只是看到其不同设置带来的效果是运动的速度不同。

Kangaroo 学习之 Bend

在 Forces 集合中有一个 Bend 运算器。

通过 Kangaroo 得出 Bend 的运算结果。

在3点组成的平面上,两个端点均锚固,仅中间一个点自由,结果会让这个点移动位置,移动的程度上随着设定的 BendStrength 的大小而变化的。如果弯曲强度设置得足够大,三个点最终将达到 RestAngle 设置的角度。

这个是在增加了重力作用之后得到的结果。

在重力作用下,中间的点最终没有在原来3点所构成的平面上。理论上,如果 BendStrength 设置足够大,3点的联系将趋近于直线段。

Kangaroo 学习之 Align

Align 运算器是 Forces 集合中的第一个运算器。它的功用是产生一组能够使已知线段平行的力。

通过 Kangaroo 运算器将 Align 的结果计算出来。

Align 运算器生成的一组力的作用示意。

Align 运算器有8个输入参数,1个输出参数。

其中的8个输入参数分别为:

Align1、Align2、Align3、Align4、AlignStrength、Exponent、Cutoff、AngleRange

1个输出参数是:

A

前四个输入参数 Align1~4

分别输入的是两条线段的起终点。

第五个输入参数 AlignStrength

调整力的强度值。

第六个输入参数 Exponent

调整指数。

第七个输入参数 Cutoff

调整力的最大限制值。

第八个输入参数 AngleRange

调整力的角度限制。

输出参数 A

调整力的输出。

目前在尝试使用 Align 运算时,还没有发现 AlignStrength、Exponent、Cutoff、AngleRange 这四个输入参数变化时对结果有影响,估计是没有找对正确的使用方法。或者是理解错误。

Kangaroo 学习之 Kangaroo

Kangaroo 是整个 Kangaroo 插件中最重要的运算器,因为没有它,就不能得到运算结果。

目前使用的版本为:0.099

Kangaroo 运算器中输入参数与输出参数均为5个。

其中5个输入参数分别为:

Force objects、AnchorPoints、Settings、Geometry、SimulationReset。

其中5个输出参数分别为:

Out、Iterations、ParticlesOut、GeometryOut、KE。

第一个输入参数 Force objects

这里所输入的是有关于所有力的内容,其数据,是通过在 Forces 这个运算器集合中的运算器输出得到。比如 Springs、PLaw、Bending 等。

第二个输入参数 AnchorPoints

在此处输入设置锚点。

第三个输入参数 Settings

这里所连接的是 Settings 这个运算器,关于它,以后会提到,一般情况下可以维持默认设置。

第四个输入参数 Geometry

输入需要变换的物体,这里的重点是 Geometry ,也就是任意的几何物体。

第五个输入参数 SimulationReset

模拟实验开关,通过 Boolean Toggle 运算器来选择 True 或 False,从而对结果进行模拟。

第一个输出参数 Out

输出的是运行信息。目前我从 Panel 中看到的结果是10,不知道是什么意思。还是需要更多的实验。

第二个输出参数 Iterations

迭代次数。

第三个输出参数 ParticlesOut

粒子输出。这里的重点是输出内容为 Point。

第四个输出参数 GeometryOut

几何物体输出。与 ParticlesOut 类似,只是输出的内容变成了 Geometry。

第五个输出参数 KE

总动能。

Kangaroo 运算器的作用就是加载各种效应,显示各种结果。