问题标签 [boids]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
89 浏览

c++ - 尝试实现 boids 算法规则 2 时的剧烈运动

我对boids 伪代码规则 2的实现正好产生了与所需行为相反的行为(boids 被推开,就好像它们每个都有一个力场一样):

它们将稍微远离彼此,并且在下一个时间步,如果它们仍然彼此靠近,它们将被推得更远。因此,所产生的排斥采取平滑加速的形式。保持确保平稳运动的原则是个好主意。如果两个 boid 非常接近,可能是因为它们飞得很快,考虑到它们之前的运动也受到这条规则的限制。突然把他们拉开,让他们各自的动作都颠倒过来,会显得很不自然,就像是从彼此的无形力场中反弹了一样。[规则 2 下的文字]

至于我不能告诉我的代码应该做与伪代码完全相同的事情

这是我的更新功能,以证明我在这里也做了正确的事情:

PS:如果您愿意,可以在此处检查整个代码(6 个文件)

0 投票
1 回答
463 浏览

java - Boids 中的避免矩形

我正在改编 80 年代 Java 中的经典 Boids 模拟。它工作得很好,但我试图在行为中添加一个新规则,迫使代理避开矩形(墙),我不知道该怎么做。

我看过这个线程:

https://gamedev.stackexchange.com/questions/45381/wall-avoidance-steering

但是我对最终代码中使用的语法(如partsList [j] -> normal)以及如何获得代理和矩形之间的距离以及如何实际驱走代理感到困惑。不过这个公式是有道理的。有人可以向我解释一下吗?非常感谢!

PS 我一直在关注这个伪代码,我也使用了这个Java 源代码作为参考。

编辑:好的,我明白为什么我对语法感到困惑,但是在编写墙壁避免规则时我仍然一无所知。

0 投票
0 回答
66 浏览

java - 2个“区域”之间的碰撞检测

我一直在使用用户 Andrew Thompson 提供的以下示例 ->具有复杂形状的碰撞检测

我试图在我的程序(下面的代码)中的“绘制”方法中实现这一点,但由于某种原因,将正方形颜色更改为“红色”的语句永远不会评估为真,我无法理解为什么;在这一点上,我几乎尝试了所有方法,但缺乏 Andrew 的进一步帮助我似乎无法正确实现此代码,因此当三角形群与正方形接触时,正方形将颜色变为红色。

非常感谢任何和所有帮助(下面的代码):

0 投票
1 回答
74 浏览

netlogo - 如何使用 Netlogo 中的 BOIDS 规则使代理聚集在他们的组中?

这是我想做的事情:

  1. 我需要所有代理使用 BOIDS 规则在一个组中前进

  2. 我希望他们遇到墙后能够转身(我的世界不是包裹,他们无法穿透墙到达世界的另一边)

这是我的代码:

植绒部分:

助手代码

我得到的错误:

我应该怎么办?我需要帮助... .·´¯ (>▂<)´¯·。感谢您的时间。

0 投票
1 回答
73 浏览

netlogo - NetLogo3D:检测两个半径之间的乌龟

我目前正在使用 Netlogo3d 对一些简单的 boid 进行建模,但我遇到了圆锥内和半径内功能的问题。

(我正在重新实现来自 Couzin、Krause、James、Ruxton 和 Franks 的文章“动物群中的集体记忆和空间排序”)

我在我的 boids 周围使用三个不同的区域来定义它的行为:一个用于排斥,一个用于吸引,一个用于定向。那些三个是围绕 boid 的球体 这些区域看起来像这样 我在这些区域检测到海龟,如下所示:

但这三个领域是重叠的,我不希望它们重叠。

有没有办法减少锥内和半径内函数的选择,例如:

如果可能的话,不要在 2 个列表上使用循环,我正在努力让我的 boids 高效谢谢!

(PS:抱歉英文不好)

0 投票
1 回答
150 浏览

python - pygame add object with mouse click

Trying to add more boids by using mouse click ingame.

I get an error msg that there is no object Boids in Boids, however this is the method i am adding boids to the game at start.

And the cfg.boidNum is set to 19 at start, and its adding 19 boids, but not adding more when i push the mousebutton.

If anyone can guide me in the right direction....

0 投票
1 回答
174 浏览

c# - 访问 IEnumerable 时出现 NullReferenceException自定义类的

目标

我正在使用 Unity设计一个boid系统。当它进入对撞机时,我通过在“Swarm”列表中添加一个 boid 来处理感知半径。为了找到每个 boid 的力,我需要循环遍历 swarm 列表,访问“Boid”类,并检索速度和位置。

问题

每个 swarm 实体的 Boid 类被添加到一个新列表中,并传递给物理控制器。但是,在第 96 行抛出了 NullReferenceException,我不明白为什么该变量会为空。据我所知,Enumerable<Boid>使用 foreach 访问填充的应该包含变量。

NullReferenceException:对象引用未设置为对象的实例 Boid.Alignment (System.Collections.Generic.IEnumerable`1[T] boids) (at Assets/Scripts/Boid.cs:96) Boid.Update () (at Assets /Scripts/Boid.cs:42)

经过测试,似乎在访问新 Boid 列表的任何部分时都会抛出它。

为什么我的新列表没有数据?有没有更好的方法来处理 3D 空间中的 boid 的 2D 实现?有没有我可以用来更好地理解 Linq 的资源?

PS 我对使用 Linq 系统很陌生,大部分代码都取自这个视频这个 Unity 项目脚本

代码

Boid_Settings 模块:

背景图片

证明 boid 类有要读取的数据 证明 boid 类有要读取的数据 Unity Enviroment & Boid.cs Attachment Unity Enviroment & Boid.cs 附件 Unity Boid Boid.body 组件 unity Boid Boid.body 组件 每个 Boid 在游戏运行时找到两个 swarm mate Boid 人口证明

0 投票
1 回答
54 浏览

javascript - 如何让机器人在 2d 游戏中追求可移动角色

我想知道用寻路算法让我的一群机器人在自上而下的 2d 游戏中追逐我的角色的最简单方法是什么?


我想我必须首先通过寻路找到通往玩家的路径,获得所需的矢量,然后从速度中减去该矢量以获得转向值。

我在 Craig Reynolds 的网站上找到了“Pursuit and Evasion 转向行为”,但我不确定我是否朝着正确的方向前进。

0 投票
0 回答
72 浏览

simulation - 计算着色器中的 Boid:如何在并行处理每个 Boid 时避免稳定状态?

我想在 2D 中实现简单的、古老的 boid 算法,但作为 HLSL 中的计算着色器(主机程序 VVVV)。现在我的问题是:在我发现的所有 2D 示例应用程序中,boid 一次更新一个。这会导致一些抖动,从而导致典型的“随机”结果。方向变化等

我不确定我的实现是否正确,但如果我单独测试每个规则,我的结果看起来像其他参考。但是,如果我将这些规则一起应用(几乎可以以任何组合方式),我的 boid 很快就会进入稳定状态,它们会形成一个固定的编队并朝某个特定方向飞行。改变视野半径会影响编队的大小和数量,但不会引入任何“混乱”或类似群的东西,只是几秒钟后的静态束。

是否存在实现问题,或者这只是您必须补偿的并行计算的一个属性(不知何故?

相关代码:

}

0 投票
0 回答
121 浏览

collision-detection - 为寻路 LWJGL 实现光线投射

我目前正在从事一个项目,该项目涉及使用 3d Simplex 噪声和行进立方体算法以程序方式生成的水下地形。现在我已经制作了我的角色模型并生成了地形网格。由于该项目以水中为基础,因此我想添加鱼和其他实体以使其更加逼真。我已经阅读了关于boids的基础知识,并且已经为实体创建了在 3d 空间中交互的程序。然而,我一直坚持的问题是实体与障碍物交互。本视频中使用的方法是通过在实体周围的球体中投射光线并检测光线是否与障碍物相交。我的想法是根据沿每条射线的间隔检查每个点,直到检测到与三角形面相交的点。我已经有了检查 3d 点是否在三角形面上的代码,所以我的问题是我是否必须沿着每条射线遍历每个点才能计算它是否与三角形相交或者是否有更好的方法对我来说去做吧?

示例代码

二维图

二维图

这是我希望实体检测的地形:

地形 在此处输入图像描述 我对 3d 引擎和碰撞相当陌生,所以我的代码可能不是最好的。