四叉树分析

四叉树,分为父节点,当前节点和四个子节点六个节点指针,根节点没有父节点,叶子节点没有子节点。

过程分为初始化,瓦片数据更新,和回收

 

1,初始化,

(1)设定初始位置,并根据给定坐标确定包围盒 ,如果是世界坐标,则转为经纬度,这样可以知道用的哪块瓦片数据(即序号第几行第几列),这个瓦片数据的行列和级别,可以组合成需要的瓦片名称,从而生成该四叉树节点需要的纹理。该节点给予有图像标志和可渲染标志

(2)与监控类指针进行关联,这个监控类同时也是渲染类,在异步渲染和要求节点所需数据时起到作用,同时也是生产者与消费者过程中的消费者部分(生产者为要求的瓦片名称,消费者是根据瓦片名称生成纹理)

(3)从根节点开始到子节点的顺序遍历。首先判断是否是根节点,如果没有父节点,则是根节点,则获取根节点的瓦片数据(通过监控类),

,如果不是根节点,也就是向下走了,则可以先从左上子节点进行遍历,依次获取数据。

(4)对四叉树节点记上标志,是否有数据,是否被剔除,是否可以被渲染,获取纹理的节点是可以被渲染的。

(5)用的是三维纹理,所以每个节点都要有相对于根节点的纹理坐标。根节点UV起始坐标是(0.0,0.0),终止UV坐标是(1.0,1.0);其他节点根据父节点的uv坐标和中心点的UV坐标,计算出该节点的UV坐标。递归

2,数据更新

(1)首先用摄像机六棱锥进行剔除不在可视范围内的节点,减少数据,具体方法就是判断节点的包围盒是否与六棱锥相交

(2)根据摄像机与各个节点的包围盒中心的距离确定级别以及是否可视。如果不可视则回收该节点的子节点。如果可视且没有子节点且有瓦片数据则裂分为4个子节点,否则 ,如果没子节点,则认为是叶子节点,给予该节点可渲染标志,否则递归更新子节点数据

3,瓦片数据的渲染

(1)对于所有的子节点,先通过递归查找带有可渲染标志的,放入可渲染四叉树节点集合中。

(2)通过节点集合查找相应的顶点数组

(3)根据三维纹理数组,进行渲染

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值