3DTile中的geometricError和boundingVolume

一、前言

上一篇文章中说geometricError 类似一个对象外包球的直径,那boundingVolume 外包范围就能计算外包球的直径,这两个值应该是一样,若这样理解就给大家带来很多误解(那真是罪过啊,误人子弟o(∩_∩)o )。今天就从这两个值的关系来理解3DTile的树结构组织。

首先我们知道3DTile 是一个树的数据结构(分析Replace模式)。

  1. 父子的boundingVolume的都是一样的,但是geometricError的值不一样。
  2. 父子的boundingVolume的不一样的,且geometricError的值不一样。

二、 父子的boundingVolume的都是一样

先看一个段数据

	"root": {
		"boundingVolume": {
			"box": [
				-0.14458248518394613,
				0.19650212276906132,
				-0.55261315359229,
				1875.0316531509962,
				0.0,
				0.0,
				0.0,
				1875.3490874752823,
				0.0,
				0.0,
				0.0,
				276.3399779427031
			]
		},
		"children": [
			{
				"boundingVolume": {
					"box": [
						-0.14458248518394613,
						0.19650212276906132,
						-0.55261315359229,
						1875.0316531509962,
						0.0,
						0.0,
						0.0,
						1875.3490874752823,
						0.0,
						0.0,
						0.0,
						276.3399779427031
					]
				},
				"children": [
					{
						"boundingVolume": {
							"box": [
								-0.14458248518394613,
								0.19650212276906132,
								-0.55261315359229,
								1875.0316531509962,
								0.0,
								0.0,
								0.0,
								1875.3490874752823,
								0.0,
								0.0,
								0.0,
								276.3399779427031
							]
						},
						"children": [
							],
						"content": {
							"uri": "./12_770_3347.pnts"
						},
						"geometricError": 610.8496533793162,
						"refine": "REPLACE"
					}
				],
				"content": {
					"uri": "./11_385_1673.pnts"
				},
				"geometricError": 1221.6993067586325,
				"refine": "REPLACE"
			}
		],
		"content": {
			"uri": "./10_192_836.pnts"
		},
		"geometricError": 2443.398613517265,
		"refine": "REPLACE"
	}

如下图:

在这里插入图片描述

简单分析:
root、children1和children2 的boundingVolume 大小都一样的,这也是表示content中模型都是同一个范围大小。也是表示同一个区域有不同精细程度的模型显示。

节点geometricErrorcontent含义
root2443.398613517265./10_192_836.pnts最粗级别的显示
children11221.6993067586325./11_385_1673.pnts稍微精细的显示
children2610.8496533793162./12_770_3347.pnts最精细基本的显示

三、父子的boundingVolume的不一样

再看示例数据,下面是children2 和children2的4个子节点。

{
	"boundingVolume": {
		"box": [
			-0.14458248518394613,
			0.19650212276906132,
			-0.55261315359229,
			1875.0316531509962,
			0.0,
			0.0,
			0.0,
			1875.3490874752823,
			0.0,
			0.0,
			0.0,
			276.3399779427031
		]
	},
	"children": [
		{
			"boundingVolume": {
				"box": [
					-0.03427998898069973,
					0.050359473046114548,
					-0.1388141771560356,
					875.0125471503252,
					0.0,
					0.0,
					0.0,
					1000.1143360638881,
					0.0,
					0.0,
					0.0,
					159.95138723351423
				]
			},
			"children": [],
			"content": {
				"uri": "./13_1540_6694.pnts"
			},
			"geometricError": 305.4248266896581,
			"refine": "REPLACE"
		},
		{
			"boundingVolume": {
				"box": [
					-0.029988789936908235,
					0.0461619164840954,
					-0.12271740886197336,
					1000.0604137950561,
					0.0,
					0.0,
					0.0,
					750.2189040240137,
					0.0,
					0.0,
					0.0,
					116.12710293512848
				]
			},
			"children": [],
			"content": {
				"uri": "./13_1540_6695.pnts"
			},
			"geometricError": 305.4248266896581,
			"refine": "REPLACE"
		},
		{
			"boundingVolume": {
				"box": [
					-0.0007599997864602415,
					0.003043501422567374,
					-0.00614958219984274,
					125.05203600201517,
					0.0,
					0.0,
					0.0,
					249.97252560917924,
					0.0,
					0.0,
					0.0,
					63.62691302749434
				]
			},
			"children": [],
			"content": {
				"uri": "./13_1541_6694.pnts"
			},
			"geometricError": 305.4248266896581,
			"refine": "REPLACE"
		},
		{
			"boundingVolume": {
				"box": [
					-0.014034166235433077,
					0.0696143076038993,
					-0.13873502640339553,
					1000.1713563037824,
					0.0,
					0.0,
					0.0,
					875.160720297898,
					0.0,
					0.0,
					0.0,
					268.88671045802087
				]
			},
			"children": [],
			"content": {
				"uri": "./13_1541_6695.pnts"
			},
			"geometricError": 305.4248266896581,
			"refine": "REPLACE"
		}
	],
	"content": {
		"uri": "./12_770_3347.pnts"
	},
	"geometricError": 610.8496533793162,
	"refine": "REPLACE"
}

关系如下图:

在这里插入图片描述

简单分析:

  • children2的子节点进行了4叉树切分。就是说children2 的更精细显示用了4个子节点的模型显示。

四、总结

  1. 通过上面两种方式可以看出geometricError的LOD含义的表达。
  2. 一个结构完整的3DTile的数据,既有同一个瓦片区域不同LOD的数据,还有瓦片切分的金字塔数据结构表达。
  3. 大部分3DTile数据中父子geometricError都是2倍,理论上也可以不是2倍。
  4. 在父子geometricError都是2倍的,有些节点的“content”可以是空的。

PS: 文中若有不正之处欢迎指出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值