Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

3d-tiles-validator

Package Overview
Dependencies
Maintainers
3
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

3d-tiles-validator

Tools for validating 3D Tiles tilesets.

  • 0.2.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
357
decreased by-42.7%
Maintainers
3
Weekly downloads
 
Created
Source

3D Tiles Validator

A validator for 3D Tiles.

A note about the repository structure

This repository originally contained multiple projects. Now, these projects are maintained in separate repositories:

  • The 3d-tiles-tools can be found in the 3d-tiles-tools repository
  • The 3d-tiles-samples-generator can be found in the 3d-tiles-samples-generator repository

Overview

The 3D Tiles validator can be used to validate 3D Tiles tilesets and their associated tile content data. It supports version 1.0 and version 1.1 of the 3D Tiles specification. The validator can be used as a command line tool, or as a library.

Note: Some of the implementation and interfaces may still change. This refers to the source code as well as details of the command line interface and report format.

Implemented Features

  • Validation of the JSON structure of the tileset.json file
  • Validation of the 3D Tiles Tile Formats
    • The supported tile formats are: Batched 3D Model (b3dm), Instanced 3D Model (i3dm), Point Cloud (pnts), Composite (cmpt)
    • glTF tile content is validated with the glTF Validator
  • Validation of implicit tilesets
  • Validation of 3D Tiles Metadata
    • This includes the validation of the JSON structure of the metadata, as well as the structure and ranges of metadata values, both for the JSON based representation and for the binary metadata that is stored in property tables
  • A basic validation of the 3DTILES_bounding_volume_S2 extension

Command Line Usage

Validate a single tileset file
npx ts-node src/main.ts --tilesetFile specs/data/Samples/TilesetWithFullMetadata/tileset.json
Validate a set of tileset files
npx ts-node src/main.ts --tilesetsDirectory specs/data/Samples/

This will validate all tileset files in the given directory and all its subdirectories. The tileset files are identified by matching the file name against the glob pattern **/*tileset*.json. The pattern can be configured with the tilesetGlobPattern parameter. For example, in order to treat all .json files as tileset files:

npx ts-node src/main.ts --tilesetsDirectory specs/data/Samples/ --tilesetGlobPattern **/*.json

Report Files

By default, validation reports are printed to the console.

When validating a single file, then the reportFile argument can be used to specify the output file for the validation report. For example:

npx ts-node src/main.ts --tilesetFile specs/data/Samples/TilesetWithFullMetadata/tileset.json --reportFile MY_REPORT.json

Alternatively, or when validating multiple files, the writeReports argument can be used to write report files into the same directory as the input files. The name of the report file will be derived from the input file name.

npx ts-node src/main.ts --tilesetsDirectory specs/data/Samples/ --writeReports

Option Files

Options for the validation process can be specified in a file that is given via the --optionsFile argument:

npx ts-node src/main.ts --optionsFile exampleOptions.json

The options represent the properties of the ValidationOptions class. For example, using the following exampleOptions.json file, then the validator will only validate the tileset JSON structure, but no tile content data:

{
  "validateContentData": false,
}

The following options will cause the validator to include B3DM- and GLB files in the validation process, but ignore all other content types:

{
  "includeContentTypes": [ "CONTENT_TYPE_B3DM", "CONTENT_TYPE_GLB" ]
}

The following options will cause the validator to exclude tileset files (i.e. external tilesets) during the validation:

{
  "excludeContentTypes": [ "CONTENT_TYPE_TILESET" ]
}

The options can also be part of a configuration file, as described in the next section.

Configuration Files

The command line arguments for a validator run can be summarized in a configuration file that is given with the --configFile argument. For example, when running the validator with

npx ts-node src/main.ts --configFile exampleConfig.json

using the following exampleConfig.json file

{
  "tilesetsDirectory": "specs/data/tilesets",
  "tilesetGlobPattern": "**/*.json"
}

then the validator will validate all files in the given directory that match the given glob pattern.

The configuration can also contain an options object. This object summarizes the validation options, as described in the Option Files section. For example:

{
  "tilesetsDirectory": "specs/data/tilesets",
  "tilesetGlobPattern": "**/*.json",
  "options": {
    "includeContentTypes": [ "CONTENT_TYPE_B3DM", "CONTENT_TYPE_GLB" ]
  }
}

This will cause the validator to validate all JSON files in the specified directory, but only consider B3DM- and GLB tile content data during the validation.

Library Usage

The basic usage of the validator as a library is shown here:

const { Validators } = require("3d-tiles-validator");

const resultPromise = Validators.validateTilesetFile("example.json");
resultPromise.then((result) => {
  console.log(result.serialize());
});

The Validators.validateTilesetFile receives a file name, and returns a promise to the ValidationResult, which can then be printed to the console. The second (optional) parameter is a ValidationOptions object that summarizes the options for the validation process (also see Option Files).

Validaton Result Filtering

Clients can perform basic filtering operations on a ValidationResult, in order to remove validation issues that are below a certain severity level, or warnings that are anticipated in a certain application context.

For example, a given validation result can be filtered to

  • include validation issues that have the severity ERROR
  • exclude validation issues that have the type EXTENSION_NOT_SUPPORTED

An example of applying such a filter to a given validation result is shown here:

const { Validators, ValidationIssueFilters } = 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());
});

Note: The type strings that are used for describing and categorizing the validation issues are not part of the core API. These strings might change between minor- or patch releases. But changes will be pointed out in the change log.

Implementation Notes

See IMPLEMENTATION.md for implementation notes.

Keywords

FAQs

Package last updated on 13 Dec 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc