三维平面校验器
用于 三维平面。 。 。 .
关于储存库结构的说明
这个存储库最初包含多个项目. 现在,这些项目被保存在单独的储存库中:
- 这个
3d-tiles-tools可见于 页:13d-tiles-tools仓库- 这个
3d-tiles-samples-generator可见于 页:13d-tiles-samples-generator仓库
概览
3D平面可以用来验证3D平面平面及其相联的平面内容数据. 它支持1.0版本和1.1版本的3D平地规格. 校验器可以用作命令行工具,也可以用作库.
说明:一些执行和接口可能仍然会改变. 这指的是源代码以及命令行接口和报告格式的细节.
已执行特征
- 鉴定《公约》的JSON结构
tileset.json文件 - 3D 梯子的验证 平板格式
- 支持的平板格式为: Batched 三维模型(
b3dm),实例三维模型(i3dm),点云(pnts),综合(cmpt(中文(简体) ) - glTF 瓦片内容被验证为 glTF 验证器
- 支持的平板格式为: Batched 三维模型(
- 验证所隐含的瓦片
- 三维梯形元数据验证
- 这包括验证元数据JSON结构,以及基于JSON的表示和存储在属性表中的二进制元数据元数据的结构和范围
- 基本审定
3DTILES_bounding_volume_S2扩展 - 3D 平面包文件( 3TZ 和 3DTILES 文件) 所包含平面板的校验
安装
要将本地验证器安装到目录中, 请运行
npm install 3d-tiles-validator
(如果你想直接与 Git 存储器的克隆工作,请参见 开发者设置(中文(简体) )
命令行使用量
验证单个平板文件
npx 3d-tiles-validator --tilesetFile specs/data/Samples/SparseImplicitQuadtree/tileset.json
输入文件可以是平板JSON文件,也可以是已知平板包文件之一. 已知的包文件格式有3TZ(基于ZIP的包格式)和3DTILES(基于SQLite的包格式). 输入类型由文件扩展名决定,该扩展名可以是 .3tz 或者说 .3dtiles (案件不敏感). 例如,要验证一个 3TZ 文件:
npx 3d-tiles-validator --tilesetFile ./specs/data/tilesets/packages/validTilesetPackage.3tz
验证一组平板文件
npx 3d-tiles-validator --tilesetsDirectory specs/data/Samples/
这将验证给定目录中的所有平板文件及其所有子目录 。 通过将文件名与 glob 模式相匹配来识别平板文件 **/*tileset*.json。可以配置图案 tilesetGlobPattern 参数。 例如,为了将所有.json文件作为平板文件处理:
npx 3d-tiles-validator --tilesetsDirectory specs/data/Samples/ --tilesetGlobPattern **/*.json
验证一个平板内容文件
npx 3d-tiles-validator --tileContentFile specs/data/gltfExtensions/FeatureIdAttributeAndPropertyTableFeatureIdNotInRange.gltf
输入文件可以是任何由验证器支持的内容类型. 这包括B3DM,I3DM,PNTS,CMPT,和glTF/GLB文件. 将确定文件的类型,如果不是已知的类型,则会创建验证警告.
报表文件
默认情况下,验证报告会被打印到控制台.
当验证一个文件时, 然后 reportFile 参数可用于为验证报告指定输出文件。 例如:
npx 3d-tiles-validator --tilesetFile specs/data/Samples/TilesetWithFullMetadata/tileset.json --reportFile MY_REPORT.json
或者,当验证多个文件时 writeReports 参数可用于将报告文件写入与输入文件相同的目录。 报告文件的名称将取自输入文件名.
npx 3d-tiles-validator --tilesetsDirectory specs/data/Samples/ --writeReports
选项文件
校验过程的选项可以在通过 --optionsFile 参数 :
npx 3d-tiles-validator --optionsFile exampleOptions.json
选项代表 ValidationOptions 课。 例如,使用下列方法 exampleOptions.json 文件,然后验证器将只验证平板 JSON 结构,但 没有 平板内容数据 :
{
"validateContentData": false
}
下列选项将会导致验证符 包含 验证过程中的B3DM-和GLB文件,但忽略了所有其他内容类型:
{
"includeContentTypes": [ "CONTENT_TYPE_B3DM", "CONTENT_TYPE_GLB" ]
}
下列选项将会导致验证符 排除 校验期间的平板文件(即外部平板) :
{
"excludeContentTypes": [ "CONTENT_TYPE_TILESET" ]
}
选项也可以是配置文件的一部分,如下一节所描述.
配置文件
校验器运行的命令行参数可以在配置文件中摘要列出 --configFile 参数。 例如,当使用
npx 3d-tiles-validator --configFile exampleConfig.json
使用下列方法 exampleConfig.json 文件
{
"tilesetsDirectory": "specs/data/tilesets",
"tilesetGlobPattern": "**/*.json"
}
然后验证器将验证给定目录中符合给定的 glob 模式的所有文件.
配置也可以包含 options 对象。 此对象概括了验证选项, 如 选项文件 节。 例如:
{
"tilesetsDirectory": "specs/data/tilesets",
"tilesetGlobPattern": "**/*.json",
"options": {
"includeContentTypes": [ "CONTENT_TYPE_B3DM", "CONTENT_TYPE_GLB" ]
}
}
这将让验证器验证指定目录中所有JSON文件,但在验证过程中只考虑B3DM-和GLB平板内容数据.
自定义元数据语义
这个 三维元数据规格 允许定义自定义 语义 用于元数据属性。 内置语义在 3D 元数据语义参考对于其他语义,验证器默认会生成一个 METADATA_SEMANTIC_UNKNOWN 问题.
为了避免这些警告,客户端可以在元数据schema文件中定义自己的语义,以便在验证过程中将其考虑在内. 这一进程的一些细节可能仍然会改变(见A/CONF.96/11) 3d-tiles/issues/643 (供讨论)。 但此处描述了3D平面验证器中元数据语义学验证的支持现状.
元数据语义Schema
"语义学计划"是一个 三维元数据Schema 描述 语义 可能出现在另一个元数据计划中。 在一个语义学计划中,属性名称只是语义学的名称. 例如,当客户端想要定义类类的语义时 ExampleClass,这个语义有这个名字 EXAMPLE_SEMANTIC,那么这个结构可以在语义学 schema文件中被表示如下:
exampleSemanticsSchema.json数字 :
{
"id": "Example-Semantics-0.0.0",
"description": "A metadata schema where each class property has a name that represents one possible semantic of a metadata property, and that is used for validating semantics, by passing it in as one of the 'semanticSchemaFileNames' of the validation options",
"classes": {
"ExampleClassSemantics": {
"description": "A class where each property is a semantic for a property of the 'ExampleClass'",
"properties": {
"EXAMPLE_SEMANTIC": {
"name": "The 'EXAMPLE_SEMANTIC' structure",
"description": "The structure that a property must have so that it can have the 'EXAMPLE_SEMANTIC'",
"type": "SCALAR",
"componentType": "FLOAT32"
}
}
}
}
}
说明:
这个计划文件包含详细的名字和描述. 在技术层面上,这些是可选的。 等效的策略文件是
{ "id": "Example-Semantics-0.0.0", "classes": { "ExampleClassSemantics": { "properties": { "EXAMPLE_SEMANTIC": { "type": "SCALAR", "componentType": "FLOAT32" } } } } }但强烈建议为文献目的增加名字和说明.
元数据语义Schema 注册
为了在验证过程中包含一个"语义学 schema",该 schema 文件的名称可以传递给验证器,作为验证选项的一部分:
exampleOptions.json数字 :
{
"semanticSchemaFileNames": ["exampleSemanticsSchema.json"]
}
注释: semanticSchemaFileNames 矩阵相对于选项文件的目录解决( name--optionsFile(中文(简体) )
此选项文件可以传递给验证器 :
npx 3d-tiles-validator --optionsFile exampleOptions.json -t ./data/exampleTileset.json
校验器随后将验证在tileset JSON中被定义的语义与语义学计划中被定义的结构相对.
开发者设置
当验证器不是作为国家防范机制的软件包安装的,而是应该直接用于被克隆的数据库时,那么命令行的使用如下:
- 将仓库切入当前目录 :
git clone https://github.com/CesiumGS/3d-tiles-validator - 更改为克隆寄存器的目录 :
cd 3d-tiles-validator - 安装验证符及其所有依存 :
npm install
在这之后, ts-node 可用于直接执行验证符,使用上述相同的命令行选项——例如,验证一个单一的平板文件:
npx ts-node src/main.ts --tilesetFile specs/data/Samples/SparseImplicitQuadtree/tileset.json
图书馆的使用
校验器作为库的基本用途如下:
const { Validators } = require("3d-tiles-validator");
const resultPromise = Validators.validateTilesetFile("example.json");
resultPromise.then((result) => {
console.log(result.serialize());
});
这个 Validators.validateTilesetFile 收到文件名,然后返回对 ValidationResult,然后可以打印到控制台。 第二个(可选)参数是a ValidationOptions 对象,可归纳验证进程的选项(另见 选项文件) (中文(简体) ).
校验结果过滤
客户端可以在 ValidationResult,以便去除低于一定严重程度的验证问题,或者在某种应用上预期到的警告.
例如,给定的验证结果可以过滤到
- 包括严重性的验证问题
ERROR - 排除具有该类型的验证问题
EXTENSION_NOT_SUPPORTED
将这种过滤器应用到特定验证结果的例子如下:
const { Validators, ValidationIssueFilters, ValidationIssueSeverity } = require("3d-tiles-validator");
const resultPromise = Validators.validateTilesetFile("example.json");
resultPromise.then((result) => {
const filteredResult = result
.filter(ValidationIssueFilters.byIncludedSeverities(ValidationIssueSeverity.ERROR))
.filter(ValidationIssueFilters.byExcludedTypes("EXTENSION_NOT_SUPPORTED"));
console.log(filteredResult.serialize());
});
说明编号: type 用于描述和分类验证问题的字符串不属于核心API的一部分. 这些字符串可能会在小版本或补丁版本之间发生改变. 但变化日志中会指出变化.
执行情况说明
见 IMPLEMENTATION.md 用于执行说明.