百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
U

UnityOctree

> 编程语言
开源

使用 C# 编写的动态、松散的 Unity octree 实现

1.0K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

使用 C# 编写的动态、松散的 Unity octree 实现

请注意:此仓库不再维护。 UnityOctree ============ 这是一款用 C# 编写的动态八叉树实现,最初是为我的游戏 Scraps 编写的,但其目的是用于通用场景。 这里有两种八叉树实现: BoundsOctree 可存储任何类型的对象,对象边界定义为轴对齐的包围盒。它是一个动态八叉树,也可以是一个松散八叉树。 PointOctree 采用相同的基本实现,但将对象存储为空间中的一个点,而不是边界。这可以简化代码。它也是一个动态八叉树。

Octree: Octree 是一种树状数据结构,将 3D 空间分成更小的分区(节点),并将对象放入相应的节点。这样可以快速访问感兴趣区域中的对象,而无需检查每个对象。

松散: 八叉树的节点可以比其父节点的长度和宽度大 1/2,因此它们在一定程度上会重叠。这可以缓解非常小的物体如果靠近边界而最终出现在大节点中的问题。松散度为 1.0 将使其成为一个"正常"的八叉树。

使用 BoundsOctree,您可以传入边界,并获得是否与任何物体发生碰撞的真/假答案(IsColliding),或者获得与之发生碰撞的所有物体的列表(GetColliding)。使用 PointOctree,您可以投射一条光线,并获得距离该光线 x 个单位的所有物体的列表(GetNearby)。此外,您还可以获得距离指定原点 x 个单位的物体的列表。如果需要,实现其他函数应该不太困难。例如,PointOctree 可以检查是否有点位于给定的边界内。

树搜索是递归的,因此在非常大的树上,理论上存在栈溢出的可能性。minNodeSize 参数限制了节点大小。

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C#c-sharpdynamicloose-octreesoctree

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言