本帖最后由 xuelian 于 2017-9-21 09:36 编辑
文章作者:云犀 转载自参数云犀
最近我得到了一些BOID LBRARY插件的资料,自己学习翻译总结了一下,分享出来,如果有翻译不周到的地方,如果尚可达意,那就多请担待啦
电池源文件链接在文章最后 1基本设置
随机向量(BOID图书馆) 在每个x、y和z维度中生成1到1的随机向量。 n(int)=随机向量的个数 U(布尔)=归一化向量(让他们1单元长) s(int)=随机种子
所有运算都在loop环里运算。 代理沿着它们的运动矢量移动。代理的新位置进入下一个loop时间步(迭代)。 在这个基本示例中,代理在每个时间步长(迭代)中以相同的速度移动相同的方向。
loop设置: N =大量重复做几乎和模拟 D0(可以改名)=代理商的初始位置 D1(放大到组件并单击+;可以重命名)=代理的初始运动向量 2显示轨迹 显示轨迹试验 1。右键单击循环结束组件并选择记录数据。 2。压平的D0和D1输入防止不必要的分支。如果你存储代理数据树,用Unflatten代替(从循环开始D0和D1的带结构)。 三.每个迭代输出存储在一个分支 4。简化以确保单分支深度 5。为每个代理创建一个单独的分支。列表项将分别代表每个代理的时间步长。如果将代理存储在数据树中,则使用路径映射器代替。 6。用短线画折线路径 3随机漫步 Random wander (BOID library) 计算每个代理的随机向量。 v(矢量)=当前的运动矢量 d(域)=新的运动矢量角度偏差域(每个代理可以不同) s(int)=随机种子(使用海葵计数器在每个时间步长获得不同的随机值;嵌入双随机性) 输出v(向量)=每个代理的新运动向量;旧向量和新向量之间的夹角将是d域区间内的一个随机值。 *(数字)=输出向量长度乘法器。默认情况下,向量保持原来的长度。最佳值是1。小于0=负效应,0 =不运动,1 =全效应,大于1=加速度。默认值为1
为每个代理计算新的随机运动向量,然后为下一个时间步(迭代)移动并回送新的运动矢量。 4寻找最近目标点
Adhere (BOID library) 在每个代理的搜索距离范围内(d)计算聚集点(C)的自定义向量(c)的平均向量(v)。 P(点)=当前代理的位置 F(点)=聚集点的位置(P将被忽略)。如果要为每个p使用不同的列表,请使用f和p p的数据树。 d(域)=搜索距离域(每个代理可以不同)。如果设为0,搜索extendt无穷。 c(int)=考虑到最近的聚集点数。1 =,= 1 = 0做notging,只有寻找最近点,N =计算平均向量对n最近点群中 5震荡 模拟惯性将使运动平稳,并画出更好的轨迹。
从先前的运动矢量和当前计算的运动矢量创建复合向量。 前一个向量具有较高的优先级,因为在每一个时间步长中,该代理趋向于保持相同的运动,而当前运动矢量仅略微偏离其运动方向和速度。 更多信息参考向量的加法。 减少前一个运动矢量的长度,以防止提高代理速度。乘数比较大的,虽然可以使代理移动更长时间。 6修剪矢量 修剪矢量(BOID图书馆) 修剪,长度延伸的领域限制向量空间指数级爆炸。较短的向量将被延长,较长的向量将被缩短,零长度向量将保持完整。向量的方向不会改变。 v(矢量)=当前代理运动矢量 d(域)=运动向量的长度间隔(对于每个代理可以不同)。最大= - 1 -无上限。 修剪矢量 确保代理商不会放慢速度或加快速度。 集的向量长度域。较短的向量将被延长,较长的向量将被缩短,零长度向量将保持完整。矢量的方向是不会改变的。设置下限高于零并没有多大意义。 7分离 驳返(BOID图书馆) 计算向量(V)离最近的邻居。较近的邻居,较大的载体。仅在搜索领域(D)。搜索域最大值也是群集中两个最邻近代理之间所需的分离距离。 P(点)=当前代理的位置 F(点)=聚集点的位置(P将被忽略)。如果要为每个p使用不同的列表,请使用f和p p的数据树。 d(域)=搜索距离域(每个代理可以不同)。 *(数)=输出向量长度乘法器。0.10左右的最优值。小于0=负效应,0=不运动,1=即时效应,高于1=过度效应。默认值为0.1
驳返 内部流程: 1。在点群中找到最近的目标点 2。计算矢量远离邻居 三.乘以一个小的向量,只移动一个目标距离的一部分时间。 (输出向量乘以离邻居的1个点)。利用向量,将移动代理在一个步骤的目的地或将导致chatoic行为。 因此,使用乘数输入一个小的数字,只移动一小部分的距离在一个单一的时间步长。
从先前的运动矢量和所有当前计算的运动矢量创建复合向量。 前一个向量具有较高的优先级,因为在每一个时间步长中,该代理趋向于保持相同的运动,而当前运动矢量仅略微偏离其运动方向和速度。 更多信息参考向量的加法。 8粘附(8到11在gif动图的几秒里不能表现出差别,所以需要各位亲自己亲自体验哦) 将计数(c)设置为1(默认值)将整个组(f)保持在一起。 (输出向量乘以1点,一直朝着邻居。利用向量乘以1将移动代理在一个步骤的目的地或将导致chatoic行为。 因此,使用乘数输入一个小的数字,只移动一小部分的距离在一个单一的时间步长。
从先前的运动矢量和所有当前计算的运动矢量创建复合向量。 前一个向量具有较高的优先级,因为在每一个时间步长中,该代理趋向于保持相同的运动,而当前运动矢量仅略微偏离其运动方向和速度。 更多信息参考向量的加法。 9同步点群 使移动代理在几乎相同的方向。 对齐(BOID图书馆) 平均计算运动矢量(V)的整群。 V(矢量)=当前代理的运动矢量 FV(向量列表)=整个点群当前运动矢量。 *(数)=输出向量长度乘法器。0.10左右的最优值。小于0=负效应,0=不运动,1=即时效应,高于1=过度效应。默认值是0.1。
对齐 计算整个点群的平均运动矢量。 输出向量乘以1点的整群的平均方向。使用这样的向量会剧烈地改变代理的运动方向和速度,导致混乱的行为。 因此,输入小数值为乘数,只在一个时间步的移动距离的一小部分。 10可见距离 排序这些代理,它们的运动矢量和索引是可见的每个单独的代理在点群中。
只有代理在规定距离范围和可视锥将被选中。输出创建一个数据树——一个可见的点、向量和索引列表,它们分别为每个单独的集群代理分支。 可见性组件也可以用于其他行为。追逐只有可见诱饵(目标点)才有意义。
可见距离(BOID图书馆) 排序那些代理位置(输出p),它们的运动矢量(输出v)和索引(输出i),在每个独立的代理中都可见(输入p,v)在群中(输入F,FV)。可见性是由从代理的当前运动向量(输入V)计算出的代理位置(p)和可视圆锥体(输入A)计算出的距离范围(输入D)确定的。组件很慢! p(点)=当前代理位置 v(矢量)=当前代理运动矢量 f(点列表)=整个点群的当前位置 向量列表=整个点群的当前运动矢量。 d(域)=搜索距离范围(每个代理可以不同) 一个(域弧度)=搜索角度偏差范围从代理当前的运动矢量(可以为每个代理是不同的)-定义搜索锥。
排列 计算每个单独的代理可见的点群部分的平均运动向量。 移动代理当前的运动矢量为每个代理创建一个单独的分支。 插入可见组件的v(可见代理运动矢量)输出。它包含每个代理的单独分支中可见运动向量的列表。 来自对齐组件的输出v与输入v的结构相同——在这种情况下是树中的。结构返回到其原始状态的扁平化是必要的(也许如果点群已经存储在树造成错误)或unflattening的D0或D1海葵回路启动输出结构匹配。 11平坦化 计算整个点群的平均平面并稍微对齐它。结果,羊群看上去很平。
这并没有多大意义本身,但对于更高级的应用是有用的,相的拓扑结构和自组织。 (输出向量乘以1点平均点群平面的方向。使用这样的向量会剧烈地改变代理的运动方向,导致混乱的行为。 因此,在乘法器中输入一个小的数字,只在一个时间步长中移动一小部分的距离。
平坦化(BOID图书馆) 对每个代理(p)分别计算点群(f)和运动矢量(V)的平均平面。 p(点)=当前代理位置 f(点列表)=聚合点位置 *(数字)=输出向量长度乘法器。0.10左右的最优值。小于0=负效应,0=不运动,1=即时效应,高于1=过度效应。默认值是0.1。 12滑动 滑动(BOID图书馆) 在最接近的几何体的表面方向上计算一个向量。 p(点)=当前代理位置 v(矢量)=当前运动矢量的代理 G(几何)=参考几何(平面、曲线、BRep、网) d(域)=搜索距离范围(最大= 0 -无穷大) *(数字)=输出向量长度乘法器。1左右的最优值。小于0为负效应,0 =无运动,低于1 = 1 =常数速度减缓的状态,1以上为快速加速。默认值是1。
滑动到参考几何: 曲线 边界表示法 网格 平面 这里有一些内在化的数据 13旋转 旋转(BOID图书馆) 计算靠近最近几何方向的向量。 P(点)=当前代理的位置 v(矢量)=当前运动矢量的代理 G(几何)=参考几何(曲线、边界、网格) d(域)=搜索距离范围(最大= 0 -无穷大)
滑动到参考几何: 曲线 边界表示法 网格 这里有一些内在化的数据 14反弹 反弹(勇敢的图书馆) 移动代理(p)沿其运动矢量(V),除非有障碍(G)的方式。在这种情况下,它反弹的代理,计算出新的位置和新的运动向量。如果设置了减速,它也会减慢反弹的速度。 P(点)=当前代理的位置 V(矢量)=代理的当前运动矢量 G(几何)=参考几何(曲线、边界、网格、平面) S(数)=减速比反弹后
滑动到参考几何: 曲线 边界表示法 网格 平面 这里有一些内在化的数据 只是在资料的辅助下,学习总结了这些插件的基础用法,如果要在设计上应运的话可能还需要更多的脑洞和实践。 希望可以帮助到大家。
|