vrm-validator
v2.0.0-dev.3.10
Published
Library for validating VRM (glTF 2.0 + VRM extensions) assets, compiled from Dart to JS.
Downloads
463
Readme
vrm-validator
This is an npm package for the VRM Validator by Fern Solutions compiled from Dart to JS.
Installation
npm install --save vrm-validator
Examples
Basic usage (Node.js)
const fs = require('fs');
const validator = require('vrm-validator');
const asset = fs.readFileSync('./Avatar-1.0.vrm');
validator.validateBytes(new Uint8Array(asset))
.then((report) => console.info('Validation succeeded: ', report))
.catch((error) => console.error('Validation failed: ', error));
Basic usage (Browser)
const validator = require('vrm-validator');
fetch('Avatar-1.0.vrm')
.then((response) => response.arrayBuffer())
.then((asset) => validator.validateBytes(new Uint8Array(asset)))
.then((report) => console.info('Validation succeeded: ', report))
.catch((error) => console.error('Validation failed: ', error));
Full usage
const fs = require("fs");
const path = require("path");
const validator = require('vrm-validator');
const filename = 'Box.gltf';
const fullpath = __dirname + '/' + filename;
const asset = fs.readFileSync(fullpath);
validator.validateBytes(new Uint8Array(asset), {
uri: filename,
format: 'gltf', // skip auto-detection and parse the input as glTF JSON
maxIssues: 10, // limit max number of output issues to 10
ignoredIssues: ['UNSUPPORTED_EXTENSION'], // mute UNSUPPORTED_EXTENSION issue
onlyIssues: ['ACCESSOR_INVALID_FLOAT'], // only consider ACCESSOR_INVALID_FLOAT an issue. Cannot be used along with ignoredIssues.
severityOverrides: { 'ACCESSOR_INDEX_TRIANGLE_DEGENERATE': 0 }, // treat degenerate triangles as errors
externalResourceFunction: (uri) =>
new Promise((resolve, reject) => {
uri = path.resolve(path.dirname(fullpath), decodeURIComponent(uri));
console.info("Loading external file: " + uri);
fs.readFile(uri, (err, data) => {
if (err) {
console.error(err.toString());
reject(err.toString());
return;
}
resolve(data);
});
})
}).then((result) => {
// [result] will contain validation report in object form.
// You can convert it to JSON to see its internal structure.
console.log(JSON.stringify(result, null, ' '));
}, (result) => {
// Promise rejection means that arguments were invalid or validator was unable
// to detect file format (glTF or GLB).
// [result] will contain exception string.
console.error(result);
});
API
Table of Contents
version
Returns a version string.
Returns string
supportedExtensions
Returns an array of supported extensions names.
validateBytes
Validates an asset from bytes.
Parameters
data
Uint8Array Byte array containing glTF or GLB data.options
ValidationOptions Object with validation options.
Returns Promise Promise with validation result in object form.
validateString
Validates an asset from JSON string.
Parameters
json
string String containing glTF JSON.options
ValidationOptions Object with validation options.
Returns Promise Promise with validation result in object form.
ValidationOptions
Type: Object
Properties
uri
string Absolute or relative asset URI that will be copied to validation report.format
string Set toglb
orgltf
to skip auto-detection of the asset format based on the first byte; any other value will be ignored. This option has no effect onvalidateString
.externalResourceFunction
ExternalResourceFunction Function for loading external resources. If omitted, external resources are not validated.writeTimestamp
boolean Set tofalse
to omit timestamp from the validation report. Default istrue
.maxIssues
number Max number of reported issues. Use0
for unlimited output.ignoredIssues
Array<string> Array of ignored issue codes.onlyIssues
Array<string> Array of only issues to consider. Cannot be used along with ignoredIssues.severityOverrides
Object Object with overridden severities for issue codes.
ExternalResourceFunction
Type: Function
Parameters
uri
string Relative URI of the external resource.
Returns Promise Promise with Uint8Array data.