123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- var assert = require('assert').strict;
- var simplifier = require('./meshopt_simplifier.js');
- process.on('unhandledRejection', error => {
- console.log('unhandledRejection', error);
- process.exit(1);
- });
- var tests = {
- compactMesh: function() {
- var indices = new Uint32Array([
- 0, 1, 3,
- 3, 1, 5,
- ]);
- var expected = new Uint32Array([
- 0, 1, 2,
- 2, 1, 3,
- ]);
- var missing = 2**32-1;
- var remap = new Uint32Array([
- 0, 1, missing, 2, missing, 3
- ]);
- var res = simplifier.compactMesh(indices);
- assert.deepEqual(indices, expected);
- assert.deepEqual(res[0], remap);
- assert.equal(res[1], 4); // unique
- },
- simplify: function() {
- // 0
- // 1 2
- // 3 4 5
- var indices = new Uint32Array([
- 0, 2, 1,
- 1, 2, 3,
- 3, 2, 4,
- 2, 5, 4,
- ]);
- var positions = new Float32Array([
- 0, 2, 0,
- 0, 1, 0,
- 1, 1, 0,
- 0, 0, 0,
- 1, 0, 0,
- 2, 0, 0,
- ]);
- var res = simplifier.simplify(indices, positions, 3, /* target indices */ 3, /* target error */ 0.01);
- var expected = new Uint32Array([
- 3, 0, 5,
- ]);
- assert.deepEqual(res[0], expected);
- assert.equal(res[1], 0); // error
- },
- simplify16: function() {
- // 0
- // 1 2
- // 3 4 5
- var indices = new Uint16Array([
- 0, 2, 1,
- 1, 2, 3,
- 3, 2, 4,
- 2, 5, 4,
- ]);
- var positions = new Float32Array([
- 0, 2, 0,
- 0, 1, 0,
- 1, 1, 0,
- 0, 0, 0,
- 1, 0, 0,
- 2, 0, 0,
- ]);
- var res = simplifier.simplify(indices, positions, 3, /* target indices */ 3, /* target error */ 0.01);
- var expected = new Uint16Array([
- 3, 0, 5,
- ]);
- assert.deepEqual(res[0], expected);
- assert.equal(res[1], 0); // error
- },
- simplifyLockBorder: function() {
- // 0
- // 1 2
- // 3 4 5
- var indices = new Uint32Array([
- 0, 2, 1,
- 1, 2, 3,
- 3, 2, 4,
- 2, 5, 4,
- ]);
- var positions = new Float32Array([
- 0, 2, 0,
- 0, 1, 0,
- 1, 1, 0,
- 0, 0, 0,
- 1, 0, 0,
- 2, 0, 0,
- ]);
- var res = simplifier.simplify(indices, positions, 3, /* target indices */ 3, /* target error */ 0.01, ["LockBorder"]);
- var expected = new Uint32Array([
- 0, 2, 1,
- 1, 2, 3,
- 3, 2, 4,
- 2, 5, 4,
- ]);
- assert.deepEqual(res[0], expected);
- assert.equal(res[1], 0); // error
- },
- getScale: function() {
- var positions = new Float32Array([
- 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3
- ]);
- assert(simplifier.getScale(positions, 3) == 3.0);
- },
- };
- Promise.all([simplifier.ready]).then(() => {
- var count = 0;
- for (var key in tests) {
- tests[key]();
- count++;
- }
- console.log(count, 'tests passed');
- });
|