提交 a1ad7e3e 编写于 作者: D Don McCurdy

Clean up tests on BufferGeometryUtils and GLTFExporter.

上级 76d16bd8
......@@ -6,7 +6,7 @@
import { GLTFExporter } from '../../../../examples/jsm/exporters/GLTFExporter';
import { AnimationClip } from '../../../../src/animation/AnimationClip';
import { BoxGeometry } from '../../../../src/geometries/BoxGeometry';
import { BoxBufferGeometry } from '../../../../src/geometries/BoxGeometry';
import { BufferAttribute } from '../../../../src/core/BufferAttribute';
import { BufferGeometry } from '../../../../src/core/BufferGeometry';
import { Mesh } from '../../../../src/objects/Mesh';
......@@ -59,7 +59,7 @@ export default QUnit.module( 'Exporters', () => {
var done = assert.async();
var box = new Mesh(
new BoxGeometry( 1, 1, 1 ),
new BoxBufferGeometry( 1, 1, 1 ),
new MeshStandardMaterial( { color: 0xFF0000 } )
);
......
......@@ -9,164 +9,168 @@ import { BufferAttribute } from '../../../../src/core/BufferAttribute';
import { BufferGeometry } from '../../../../src/core/BufferGeometry';
import { TriangleStripDrawMode, TriangleFanDrawMode } from '../../../../src/constants';
export default QUnit.module( 'BufferGeometryUtils', () => {
export default QUnit.module( 'Utils', () => {
QUnit.test( 'mergeBufferAttributes - basic', ( assert ) => {
QUnit.module( 'BufferGeometryUtils', () => {
var array1 = new Float32Array( [ 1, 2, 3, 4 ] );
var attr1 = new BufferAttribute( array1, 2, false );
QUnit.test( 'mergeBufferAttributes - basic', ( assert ) => {
var array2 = new Float32Array( [ 5, 6, 7, 8 ] );
var attr2 = new BufferAttribute( array2, 2, false );
var array1 = new Float32Array( [ 1, 2, 3, 4 ] );
var attr1 = new BufferAttribute( array1, 2, false );
var mergedAttr = BufferGeometryUtils.mergeBufferAttributes( [ attr1, attr2 ] );
var array2 = new Float32Array( [ 5, 6, 7, 8 ] );
var attr2 = new BufferAttribute( array2, 2, false );
assert.smartEqual( Array.from( mergedAttr.array ), [ 1, 2, 3, 4, 5, 6, 7, 8 ], 'merges elements' );
assert.equal( mergedAttr.itemSize, 2, 'retains .itemSize' );
assert.equal( mergedAttr.normalized, false, 'retains .normalized' );
var mergedAttr = BufferGeometryUtils.mergeBufferAttributes( [ attr1, attr2 ] );
} );
assert.smartEqual( Array.from( mergedAttr.array ), [ 1, 2, 3, 4, 5, 6, 7, 8 ], 'merges elements' );
assert.equal( mergedAttr.itemSize, 2, 'retains .itemSize' );
assert.equal( mergedAttr.normalized, false, 'retains .normalized' );
QUnit.test( 'mergeBufferAttributes - invalid', ( assert ) => {
} );
var array1 = new Float32Array( [ 1, 2, 3, 4 ] );
var attr1 = new BufferAttribute( array1, 2, false );
QUnit.test( 'mergeBufferAttributes - invalid', ( assert ) => {
var array2 = new Float32Array( [ 5, 6, 7, 8 ] );
var attr2 = new BufferAttribute( array2, 4, false );
var array1 = new Float32Array( [ 1, 2, 3, 4 ] );
var attr1 = new BufferAttribute( array1, 2, false );
assert.notOk( BufferGeometryUtils.mergeBufferAttributes( [ attr1, attr2 ] ) );
var array2 = new Float32Array( [ 5, 6, 7, 8 ] );
var attr2 = new BufferAttribute( array2, 4, false );
attr2.itemSize = 2;
attr2.normalized = true;
assert.notOk( BufferGeometryUtils.mergeBufferAttributes( [ attr1, attr2 ] ) );
assert.notOk( BufferGeometryUtils.mergeBufferAttributes( [ attr1, attr2 ] ) );
attr2.itemSize = 2;
attr2.normalized = true;
attr2.normalized = false;
assert.notOk( BufferGeometryUtils.mergeBufferAttributes( [ attr1, attr2 ] ) );
assert.ok( BufferGeometryUtils.mergeBufferAttributes( [ attr1, attr2 ] ) );
attr2.normalized = false;
} );
assert.ok( BufferGeometryUtils.mergeBufferAttributes( [ attr1, attr2 ] ) );
QUnit.test( 'mergeBufferGeometries - basic', ( assert ) => {
} );
var geometry1 = new BufferGeometry();
geometry1.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 1, 2, 3 ] ), 1, false ) );
QUnit.test( 'mergeBufferGeometries - basic', ( assert ) => {
var geometry2 = new BufferGeometry();
geometry2.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 4, 5, 6 ] ), 1, false ) );
var geometry1 = new BufferGeometry();
geometry1.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 1, 2, 3 ] ), 1, false ) );
var mergedGeometry = BufferGeometryUtils.mergeBufferGeometries( [ geometry1, geometry2 ] );
var geometry2 = new BufferGeometry();
geometry2.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 4, 5, 6 ] ), 1, false ) );
assert.ok( mergedGeometry, 'merge succeeds' );
assert.smartEqual( Array.from( mergedGeometry.attributes.position.array ), [ 1, 2, 3, 4, 5, 6 ], 'merges elements' );
assert.equal( mergedGeometry.attributes.position.itemSize, 1, 'retains .itemSize' );
var mergedGeometry = BufferGeometryUtils.mergeBufferGeometries( [ geometry1, geometry2 ] );
} );
assert.ok( mergedGeometry, 'merge succeeds' );
assert.smartEqual( Array.from( mergedGeometry.attributes.position.array ), [ 1, 2, 3, 4, 5, 6 ], 'merges elements' );
assert.equal( mergedGeometry.attributes.position.itemSize, 1, 'retains .itemSize' );
QUnit.test( 'mergeBufferGeometries - indexed', ( assert ) => {
} );
var geometry1 = new BufferGeometry();
geometry1.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 1, 2, 3 ] ), 1, false ) );
geometry1.setIndex( new BufferAttribute( new Uint16Array( [ 0, 1, 2, 2, 1, 0 ] ), 1, false ) );
QUnit.test( 'mergeBufferGeometries - indexed', ( assert ) => {
var geometry2 = new BufferGeometry();
geometry2.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 4, 5, 6 ] ), 1, false ) );
geometry2.setIndex( new BufferAttribute( new Uint16Array( [ 0, 1, 2 ] ), 1, false ) );
var geometry1 = new BufferGeometry();
geometry1.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 1, 2, 3 ] ), 1, false ) );
geometry1.setIndex( new BufferAttribute( new Uint16Array( [ 0, 1, 2, 2, 1, 0 ] ), 1, false ) );
var mergedGeometry = BufferGeometryUtils.mergeBufferGeometries( [ geometry1, geometry2 ] );
var geometry2 = new BufferGeometry();
geometry2.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 4, 5, 6 ] ), 1, false ) );
geometry2.setIndex( new BufferAttribute( new Uint16Array( [ 0, 1, 2 ] ), 1, false ) );
assert.ok( mergedGeometry, 'merge succeeds' );
assert.smartEqual( Array.from( mergedGeometry.attributes.position.array ), [ 1, 2, 3, 4, 5, 6 ], 'merges elements' );
assert.smartEqual( Array.from( mergedGeometry.index.array ), [ 0, 1, 2, 2, 1, 0, 3, 4, 5 ], 'merges indices' );
assert.equal( mergedGeometry.attributes.position.itemSize, 1, 'retains .itemSize' );
var mergedGeometry = BufferGeometryUtils.mergeBufferGeometries( [ geometry1, geometry2 ] );
} );
assert.ok( mergedGeometry, 'merge succeeds' );
assert.smartEqual( Array.from( mergedGeometry.attributes.position.array ), [ 1, 2, 3, 4, 5, 6 ], 'merges elements' );
assert.smartEqual( Array.from( mergedGeometry.index.array ), [ 0, 1, 2, 2, 1, 0, 3, 4, 5 ], 'merges indices' );
assert.equal( mergedGeometry.attributes.position.itemSize, 1, 'retains .itemSize' );
QUnit.test( 'mergeBufferGeometries - morph targets', ( assert ) => {
} );
var geometry1 = new BufferGeometry();
geometry1.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 1, 2, 3 ] ), 1, false ) );
geometry1.morphAttributes.position = [
new BufferAttribute( new Float32Array( [ 10, 20, 30 ] ), 1, false ),
new BufferAttribute( new Float32Array( [ 100, 200, 300 ] ), 1, false )
];
QUnit.test( 'mergeBufferGeometries - morph targets', ( assert ) => {
var geometry2 = new BufferGeometry();
geometry2.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 4, 5, 6 ] ), 1, false ) );
geometry2.morphAttributes.position = [
new BufferAttribute( new Float32Array( [ 40, 50, 60 ] ), 1, false ),
new BufferAttribute( new Float32Array( [ 400, 500, 600 ] ), 1, false )
];
var geometry1 = new BufferGeometry();
geometry1.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 1, 2, 3 ] ), 1, false ) );
geometry1.morphAttributes.position = [
new BufferAttribute( new Float32Array( [ 10, 20, 30 ] ), 1, false ),
new BufferAttribute( new Float32Array( [ 100, 200, 300 ] ), 1, false )
];
var mergedGeometry = BufferGeometryUtils.mergeBufferGeometries( [ geometry1, geometry2 ] );
var geometry2 = new BufferGeometry();
geometry2.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 4, 5, 6 ] ), 1, false ) );
geometry2.morphAttributes.position = [
new BufferAttribute( new Float32Array( [ 40, 50, 60 ] ), 1, false ),
new BufferAttribute( new Float32Array( [ 400, 500, 600 ] ), 1, false )
];
assert.ok( mergedGeometry, 'merge succeeds' );
assert.smartEqual( Array.from( mergedGeometry.attributes.position.array ), [ 1, 2, 3, 4, 5, 6 ], 'merges elements' );
assert.smartEqual( Array.from( mergedGeometry.morphAttributes.position[ 0 ].array ), [ 10, 20, 30, 40, 50, 60 ], 'merges morph targets' );
assert.smartEqual( Array.from( mergedGeometry.morphAttributes.position[ 1 ].array ), [ 100, 200, 300, 400, 500, 600 ], 'merges morph targets' );
assert.equal( mergedGeometry.attributes.position.itemSize, 1, 'retains .itemSize' );
var mergedGeometry = BufferGeometryUtils.mergeBufferGeometries( [ geometry1, geometry2 ] );
} );
assert.ok( mergedGeometry, 'merge succeeds' );
assert.smartEqual( Array.from( mergedGeometry.attributes.position.array ), [ 1, 2, 3, 4, 5, 6 ], 'merges elements' );
assert.smartEqual( Array.from( mergedGeometry.morphAttributes.position[ 0 ].array ), [ 10, 20, 30, 40, 50, 60 ], 'merges morph targets' );
assert.smartEqual( Array.from( mergedGeometry.morphAttributes.position[ 1 ].array ), [ 100, 200, 300, 400, 500, 600 ], 'merges morph targets' );
assert.equal( mergedGeometry.attributes.position.itemSize, 1, 'retains .itemSize' );
QUnit.test( 'mergeBufferGeometries - invalid', ( assert ) => {
} );
var geometry1 = new BufferGeometry();
geometry1.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 1, 2, 3 ] ), 1, false ) );
geometry1.setIndex( new BufferAttribute( new Uint16Array( [ 0, 1, 2 ] ), 1, false ) );
QUnit.test( 'mergeBufferGeometries - invalid', ( assert ) => {
var geometry2 = new BufferGeometry();
geometry2.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 4, 5, 6 ] ), 1, false ) );
var geometry1 = new BufferGeometry();
geometry1.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 1, 2, 3 ] ), 1, false ) );
geometry1.setIndex( new BufferAttribute( new Uint16Array( [ 0, 1, 2 ] ), 1, false ) );
assert.notOk( BufferGeometryUtils.mergeBufferGeometries( [ geometry1, geometry2 ] ) );
var geometry2 = new BufferGeometry();
geometry2.setAttribute( 'position', new BufferAttribute( new Float32Array( [ 4, 5, 6 ] ), 1, false ) );
geometry2.setIndex( new BufferAttribute( new Uint16Array( [ 0, 1, 2 ] ), 1, false ) );
assert.notOk( BufferGeometryUtils.mergeBufferGeometries( [ geometry1, geometry2 ] ) );
assert.ok( BufferGeometryUtils.mergeBufferGeometries( [ geometry1, geometry2 ] ) );
geometry2.setIndex( new BufferAttribute( new Uint16Array( [ 0, 1, 2 ] ), 1, false ) );
geometry2.setAttribute( 'foo', new BufferAttribute( new Float32Array( [ 1, 2, 3 ] ), 1, false ) );
assert.ok( BufferGeometryUtils.mergeBufferGeometries( [ geometry1, geometry2 ] ) );
assert.notOk( BufferGeometryUtils.mergeBufferGeometries( [ geometry1, geometry2 ] ) );
geometry2.setAttribute( 'foo', new BufferAttribute( new Float32Array( [ 1, 2, 3 ] ), 1, false ) );
} );
assert.notOk( BufferGeometryUtils.mergeBufferGeometries( [ geometry1, geometry2 ] ) );
} );
QUnit.test( 'toTrianglesDrawMode()', ( assert ) => {
QUnit.test( 'toTrianglesDrawMode()', ( assert ) => {
// TRIANGLE_STRIP
// TRIANGLE_STRIP
const vertices1 = [];
const vertices1 = [];
vertices1.push( 0, 0, 0 ); // v0
vertices1.push( 1, 0, 0 ); // v1
vertices1.push( 0, 1, 0 ); // v2
vertices1.push( 2, 0, 0 ); // v3
vertices1.push( 2, 1, 0 ); // v4
vertices1.push( 3, 0, 0 ); // v5
vertices1.push( 0, 0, 0 ); // v0
vertices1.push( 1, 0, 0 ); // v1
vertices1.push( 0, 1, 0 ); // v2
vertices1.push( 2, 0, 0 ); // v3
vertices1.push( 2, 1, 0 ); // v4
vertices1.push( 3, 0, 0 ); // v5
var geometry1 = new BufferGeometry();
var geometry1 = new BufferGeometry();
geometry1.setAttribute( 'position', new BufferAttribute( new Float32Array( vertices1 ), 3 ) );
geometry1 = BufferGeometryUtils.toTrianglesDrawMode( geometry1, TriangleStripDrawMode );
geometry1.setAttribute( 'position', new BufferAttribute( new Float32Array( vertices1 ), 3 ) );
geometry1 = BufferGeometryUtils.toTrianglesDrawMode( geometry1, TriangleStripDrawMode );
assert.deepEqual( geometry1.index.array, new Uint16Array( [ 0, 1, 2, 3, 2, 1, 2, 3, 4, 5, 4, 3 ] ), 'correct triangle indices from triangle strip' );
assert.deepEqual( geometry1.index.array, new Uint16Array( [ 0, 1, 2, 3, 2, 1, 2, 3, 4, 5, 4, 3 ] ), 'correct triangle indices from triangle strip' );
// TRIANGLE_FAN
// TRIANGLE_FAN
const vertices2 = [];
const vertices2 = [];
vertices2.push( 0, 0, 0 ); // v0
vertices2.push( 1, 0, 0 ); // v1
vertices2.push( 1, 1, 0 ); // v2
vertices2.push( 0, 1, 0 ); // v3
vertices2.push( - 1, 1, 0 ); // v4
vertices2.push( - 1, 0, 0 ); // v5
vertices2.push( 0, 0, 0 ); // v0
vertices2.push( 1, 0, 0 ); // v1
vertices2.push( 1, 1, 0 ); // v2
vertices2.push( 0, 1, 0 ); // v3
vertices2.push( - 1, 1, 0 ); // v4
vertices2.push( - 1, 0, 0 ); // v5
var geometry2 = new BufferGeometry();
var geometry2 = new BufferGeometry();
geometry2.setAttribute( 'position', new BufferAttribute( new Float32Array( vertices2 ), 3 ) );
geometry2 = BufferGeometryUtils.toTrianglesDrawMode( geometry2, TriangleFanDrawMode );
geometry2.setAttribute( 'position', new BufferAttribute( new Float32Array( vertices2 ), 3 ) );
geometry2 = BufferGeometryUtils.toTrianglesDrawMode( geometry2, TriangleFanDrawMode );
assert.deepEqual( geometry2.index.array, new Uint16Array( [ 0, 1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 5 ] ), 'correct triangle indices from triangle fan' );
assert.deepEqual( geometry2.index.array, new Uint16Array( [ 0, 1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 5 ] ), 'correct triangle indices from triangle fan' );
} );
} );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册