转自:http://www.cnblogs.com/21207-iHome/p/7098000.html

八叉树(Octree)是一种用于描述三维空间的树状数据结构。想象一个立方体,我们最少可以切成多少个相同等分的小立方体?答案就是8个。再想象我们有一个房间,房间里某个角落藏着一枚金币,我们想很快的把金币找出来,怎么找最高效?我们可以把房间当成一个立方体,先切成八个小立方体,然后排除掉没有放任何东西的小立方体,再把有可能藏金币的小立方体继续切八等份….如此下去,平均在Log8(房间内的所有物品数)的时间内就可找到金币。因此,八叉树就是用在3D空间中的场景管理,可以很快地知道物体在3D场景中的位置,或侦测与其它物体是否有碰撞以及是否在可视范围内。

VREP软件中可以在场景里创建八叉树(Add→Octree),通常用于简化表达复杂的形体或点云。An octree is an object that represents a spacial partitioning. It is made up by a tree data structure in which each node has exactly eight children. Occupied leaf nodes are represented as voxels. Octrees can be used to offer a simplified representation for shapes or point clouds, or can act as an occupancy grid/space:

Octrees are collidable, measurable and detectable objects. This means that octrees:

  • can be used in collision detections with other collidable objects.
  • can be used in minimum distance calculations with other measurable objects.
  • can be detected by proximity sensors.

函数simInsertVoxelsIntoOctree可以向八叉树中插入Voxels (三维像素),它是一种基于体积概念的像素,通常的普通像素只需要X、Y轴两个坐标来定位它在空间中的方位,而它还需要加进一个额外的Z轴坐标,相当于空间中一个非常小的立方体。

simInsertVoxelsIntoOctree(number octreeHandle,number options,table points,table color=nil,table tag=nil)

下面代码通过Octree创建了一个简单的围墙:

 View Code

其中两轮差速的机器人BubbleRob通过接近传感器来进行简单的避障行走。感知阶段调用simReadProximitySensor来获取接近传感器信息,如果检测到障碍物result返回1,没有检测到障碍物返回0,出错返回-1。同时计算传感器到障碍物的最小距离,结果保存在distance中。注意探测只会在探测区域(Detection Volume)内进行,所以注意设置传感器的属性(探测体形状、探测距离、角度等)。

number result,number distance = simReadProximitySensor(number sensorHandle)

参考:

Octree—Wikipedia

Introduction to Octrees

Quadtrees and Octrees

游戏场景管理的八叉树算法是怎样的?

八叉树(Octree)相关推荐

  1. 线性八叉树_八叉树OcTree

    在描述三维场景的过程中常常用到一种名为八叉树的数据结构.描述三维空间的八叉树和描述二维空间的四叉树有相似之处,二维空间中正方形可以被分为四个相同形状的正方形,而三维空间中正方体可以被分为八个形状相同的 ...

  2. 八叉树 Octree

    http://hi.baidu.com/onlywater/blog/item/905c5e162ed18f4021a4e9c1.html (一)基本原理 用八叉树来表示三维形体,并研究在这种表示下的 ...

  3. 【PCL自学:ocTree】八叉树(octree)的原理及应用案例(点云压缩,搜索,空间变化)

    PCL中八叉树(octree)的原理及应用案例 一.什么是八叉树ocTree? 1.八叉树原理 二.八叉树应用案例 1.点云压缩 2.用八叉树进行空间划分和搜索操作 3.无序点云数据的空间变化检测 一 ...

  4. 八叉树 java_八叉树(Octree)

    转载自:http://www.cnblogs.com/21207-iHome/p/7098000.html 八叉树(Octree)是一种用于描述三维空间的树状数据结构.想象一个立方体,我们最少可以切成 ...

  5. 基于octree的空间划分及搜索操作

    (1)  octree是一种用于管理稀疏3D数据的树形数据结构,每个内部节点都正好有八个子节点,介绍如何用octree在点云数据中进行空间划分及近邻搜索,实现"体素内近邻搜索(Neighbo ...

  6. 线性八叉树_octree八叉树数据结构原理与实现

    通过雷达.激光扫描.立体摄像机等三维测量设备获取的点云数据,具有数据量大.分布不均匀等特点.作为三维领域中一个重要的数据来源,点云数据主要是表征目标表面的海量点集合,并不具备传统网格数据的集合拓扑信息 ...

  7. Open3d之八叉树(Octree)

    简介 八叉树是一种树数据结构,其中每个内部节点都有八个子节点.八叉树通常用于三维点云的空间划分. 八叉树的非空叶节点包含一个或多个属于同一空间细分的点. 八叉树是一个有用的三维空间描述,可以用来快速找 ...

  8. kd-tree和八叉树的概念及相关算法

    点云数据主要是,表征目标表面的海量点集合,并不具备传统实体网格数据的几何拓扑结构. 点云数据处理中最为核心的问题就是,建立离散点间的拓扑关系,实现基于邻域关系的快速查找. 1. K维树(KD-tree ...

  9. PCL点云库调库学习系列——k-d tree与八叉树

    k-d tree与八叉树 1 k-d tree与八叉树 本文并不涉及具体原理的解释,文章着重在k-d树与八叉树在近邻搜索方面的API的使用 1.1 k-d tree k-d tree算法及原理: ht ...

  10. PCL之octree详解

    文章目录 octree octree搜索 octree点云压缩 前情提要:PCL安装与测试 PCL文件读写 kd-tree 斯坦福兔子文件 octree 八叉树(octree)是一种空间中的栅格化方法 ...

最新文章

  1. Ranking relevance in yahoo search (2016)论文阅读
  2. Spring中Bean的生命周期是怎样的
  3. 函数节流与防抖的实现
  4. 快看Sample代码,速学Swift语言(3)-运算符
  5. 给apache安装mod_rewrite模块
  6. 设置Java EE 6开发环境
  7. 方法的重载(overload)和重写(override)的区别
  8. 库克“一语成谶”:又有 30 万台安卓设备被“感染”了!| 文末福利
  9. 盘点多数企业容易犯的五个大数据错误
  10. 波形包络提取与峰值提取_一个简单的波形包络提取算法
  11. android adb 模拟来电,在Android模拟器中模拟GPS、打电话、发短信……
  12. 游戏编程精粹学习 - 使用定点颜色插值模拟实时光照
  13. 从零开始搭建PHP项目
  14. FPS游戏通用自瞄实现
  15. 清理MSOCache文件夹
  16. 首行缩进,文字之间的间距
  17. 将UTC时间格式转换成东八区时间格式
  18. 全排列、全组合 java实现
  19. 050002《马云说》读后感——勇者无畏
  20. 淘宝玉伯引发Web前后端研发模式讨论

热门文章

  1. linux 批量建数字目录,关于linux:Bash技巧可以批量在多个目录名前面加上数字的Shell脚本...
  2. 交叉编译ncurses5.9
  3. 计算机二级有重复的题目吗,计算机二级能重复考吗
  4. 内蒙古商贸职业学院校计算机系,内蒙古商贸职业学院计算机系.doc
  5. 理财投资的几种途径简介
  6. Qt OpenCv Contrib 环境配置
  7. 从神经网络到BP算法(纯理论推导)
  8. 前端H+框架的常规操作
  9. Excel工资表通过宏的录制形成工资条形式
  10. RecurDyn第一次学习笔记