B树,r树,k-d树,bvh(bound volumn heuristic)树, octtree ,quadtree(待更)

引入b树是为了方便理解r树;
kd树,oct树,bvh树,oct树,quad树都是用于空间或区域(region)的管理。下面讲述按我的理解的大概的划分


b树,一种特殊的多叉树,善于描述一维的数据
r树是b树向多维的一种拓展,也是属于多叉树的一种。

多叉树相对于二叉树有一个问题就是查找时间过长,在每个中间节点上需要消耗较多的时间。所以有对b树和r树的改进方式是尽量减少树的阶数,通常取最小阶数为3,因为内部节点可以有2到3个子节点,所以3阶b树又称为2-3b树

quadtree和oct树,四叉树和八叉树是类似的,前者适用于2d,后者适用于3d,对场景从整体到细的均匀拆分,查找效率可能会不高,但是增删操作很快

k-d树,(介绍2),本质是一种二叉树,因为是基于spatial subdivision,适合划分无交叉或重叠的场景,因为构造过程时间比较长,每次切分一个维度后,就可能需要对所有切分后数据的继续做一个排序操作,为了保持查找的高效性,k-d树更适合对静态场景进行划分和查找(主要原因是切分的轴向在生成树的时候就被固定了)。k-d树在构建时需要尽可能让左右子树平衡,以方便后面的查询操作。增删操作比较耗时。最好的应用就是用于划分空间中的点集,和光线追踪中对静态的单个物体切分用于光线求交。

bvh树(如果连接不可访问点击这里,也是一种二叉树,可以用于动态物体的添加(中文版的bvh树,链接中介绍的SPLIT_MIDDLE和SPLIT_EQUAL_COUNT因为是基于空间来划分的,只能算是启发式的kd树,划分是需要涉及到图元的拆分;而SPLIT_SAH才算是真正意义上的bvh树,因为SPLIT_SAH才算是真正意义上与空间(维度,spatial subdivision)不相关的,而是与场景中对象相关(object subdivision)),增删操作比较耗时,能很好应对交叉的情况。也可以用于对场景中静态或动态的物体的管理。

oct树和k-d树对比,两者都适用于点集管理,相对于oct树。k-d树是二叉树,octtree是八叉树,kd树相对oct树更显精简,平均查找相对来说会更高些。


r树和k-d树对比
r树相对于k-d树,r树涉及到压缩和分裂等操作,相对会操作复杂点,r树是一种平衡树,查询可能比较快,但是当阶数比较高时,查询就会效率降低,适合从整体中快速定位查找到需要的满足要求的一个范围内的东西,。
k-d树是非平衡树(不能强制转换成平衡二叉树),但是非常适合与确定物体相邻的最近的东西的查询,因为构造过程比较费时,所以相对来说适合静态的查询,并且因为无法调节平衡性,所以针对不同场景查询效率相对于其他的可能不是最优的,但是在查询已知节点的临近节点的情况时,效率是最高的,另外k-d树应对交叠的状况时效率也会变得低下。

r树和bvh树对比 1111
r树和bvh树主要用于二维或三维甚至多维的图元的管理。
r树是多叉平衡树,当为2阶时其实就是bvh树,bvh树可以是平衡二叉树。构建过程都可以是从整体到细节划分,或从细节到整体划分,或者递增的方式组装。

bvh和k-d树对比,两者适合的场景不同,前者适合图元(可以有交叉或重叠,可以是动态或静态)管理;后者适合点集管理或静态图元查找。如果将kd树应用于图元,就会涉及到繁杂的图元的拆分。bvh可以是平衡二叉树,而kd树只能是普通二叉树。另外一点就是bvh相对于kd树是灵活的,因为没有固定的轴向的切分,所以相对来说对动态物体进行管理更有优势。kd树相对于bvh树,临近查询相对来说更友好,因为bvh中的相邻的物体在子节点中可能会更分散些(与bvh构造的方法关系也很大)。
(网上查看到pbrt中用了kb树来对场景划分进行光线追踪求交

数据结构都是死的,可能不一定适合你当前的应用环境,主要还是了解这些后构造更适合当前环境和应用以及目的的数据结构。

另外一篇类似的介绍

一种对R树的高效应用

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用软件工具进行BVH格式到BIP格式的转换。例如使用Autodesk Maya软件中的"Import BVH"功能导入BVH文件,然后使用"Export Selected"功能导出为BIP格式。也可以使用其他专业的骨骼动画转换软件如Houdini, MotionBuilder等。 ### 回答2: BVH是一种常用的动作捕捉数据格式,而BIP是一种专门用于3D动画软件的骨骼动画格式。因此,要将BVH格式转换为BIP格式,需要进行以下步骤: 1.准备工作:首先需要准备一个3D动画软件,例如Autodesk 3ds Max或者MotionBuilder。这些软件都支持BIP格式的导入和导出。 2.导入BVH文件:使用所选的3D动画软件,导入BVH格式的文件。在导入过程中,软件会将BVH文件中的层次结构和动作数据转换为相应的骨骼和动画轨迹。 3.调整骨骼:确认BVH文件成功导入后,可能需要对骨骼进行调整,以适应目标BIP格式。这可能涉及到对骨骼名称、层级结构或者骨骼的旋转角度进行修改。 4.调整关键帧:由于BVH和BIP格式之间的差异,需要对动画数据进行调整,使其适应BIP格式的要求。这包括消除非法动作或关键帧,并确保动作流畅地在BIP格式的骨骼上播放。 5.导出BIP文件:完成上述调整后,通过选择导出选项,将骨骼以BIP格式导出为新的文件。在导出过程中,选择适当的选项来确保输出文件符合BIP格式规范。 总结起来,将BVH格式转换为BIP格式需要导入BVH文件、调整骨骼和关键帧,并最终将其导出为BIP格式的文件。这样可以使BVH格式的动作数据能够在BIP格式的骨骼动画软件中使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值