3DTiles使用记录


包围体的空间一致性(Bounding volume spatial coherence)

1. 要点

  • 1.1 包围体的类型
    • sphere(Center(x,y,z),radius) 在WGS椭球对应的地心笛卡尔坐标系下
    • box(Center(x,y,z), X-axis(x,y,z), Y-axis(x,y,z), Z-axis(x,y,z)) 在WGS椭球对应的地心笛卡尔坐标系下
    • region(west, south, east, north, minHeight, maxHeight) 在WGS椭球椭球下对应的经纬度坐标系 单位采用弧度
  • 1.2 一个瓦片的包围体肯定会将所有孩子的内容包围住。但是,一个瓦片的包围体不一定会将孩子的包围体包围住,如例子1所示

例子1:

图1 一个地形瓦片的外包围球
在这里插入图片描述

图2 该地形瓦片的四个孩子瓦片的包围球。四个孩子瓦片的内容是完全在父节点瓦片的包围体中,但是四个孩子瓦片的包围体是不完全在父节点瓦片的包围体中的
在这里插入图片描述

  • 1.3 瓦片节点空间一致性测试步骤
    • 利用一个对象和瓦片节点的包围体做相交测试,如果不相交,说明该对象和该瓦片的内容以及该瓦片的孩子瓦片的所有内容都不想交;
    • 当该对象和该瓦片节点的包围体相交,则判断孩子瓦片的包围体与该对象的相交测试;
    • 依次递推到子孙瓦片;

2.参考
1. 3DTiles 规范
2. 3DTiles reference-card

关于tile的transform属性

1. Tile transforms

例子:假设某个表示city的tileset包含某个表示建筑物的tileset,这个表示建筑物的tileset内部包含一个表示某个部件点云的tileset

有了Tile transforms 属性,就可以实现表示建筑物的tileset可以定义自己的局部坐标系的效果,也可以实现表示某个部件点云的tileset也可以定义自己的局部坐标系的效果。

3d tiles 文件中tile元素包含transform属性,来定义当前tile坐标系和父tile坐标系的变换矩阵。

transform属性是一个 4x4的仿射变换矩阵,以列主序存储。transform属性可以应用到以下内容

  • tile.content
  • feature’s position
  • feature’s normal(transform 属性的左上角3x3矩阵的转置矩阵的逆矩阵纠正计算法向量异常)
  • content.boundingVolume(但是content.boundingVolume.region属性不能应用transform 属性,content.boundingVolume.region是完全定义在 EPSG:4979坐标系下,且经纬度以弧度表示)
  • tile.boundingVolume(但是tile.boundingVolume.region属性不能应用transform 属性,tile.boundingVolume.region是完全定义在 EPSG:4979坐标系下,且经纬度以弧度表示)
  • tile.viewerRequestVolume(但是tile.viewerRequestVolume.region属性不能应用transform 属性,tile.viewerRequestVolume.region是完全定义在 EPSG:4979坐标系下,且经纬度以弧度表示)

transform属性不能应用到以下内容:

  • geometricError

如果在tileset中未定义transform属性,默认值就是4x4的单位矩阵。

tileset中从每个tile的局部坐标系到tileset的全局坐标系变换的计算顺序:

  • 从顶向下遍历tileset的场景树,后乘孩子的transform属性(按照opengl的矩阵运算原则,比如,MVP* v表示v先进行M运算,最后进行P运算),即表示“先进行顶层的transform变换,再来完成子孙的transform变换”
  • tileset中的mesh信息以glTF的格式组织,gltf中矩阵变换是前乘模式(按照opengl的矩阵运算原则),即先计算子孙的矩阵变换,再往父节点计算矩阵变换
  • 计算整体的变换矩阵顺序:先计算glTF对应的矩阵变换结果,再计算tileset中的transform变换结果,对底层渲染内容的变换就是,先变换gltf的,再变换tileset中的transform

2.参考
1. 3DTiles 规范

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值