@blockv/threejs-to-v3d
Version:
Converts any format supported by ThreeJS to V3D.
89 lines (66 loc) • 2.67 kB
JavaScript
/** Download an ArrayBuffer */
function getArrayBuffer(url) {
return new Promise(function (onSuccess, onFail) {
// Send XHR
var xhr = new XMLHttpRequest();
xhr.responseType = 'arraybuffer';
xhr.open("GET", url);
xhr.send();
// Add handlers
xhr.onerror = onFail;
xhr.onload = function() {
onSuccess(xhr.response);
}
});
}
QUnit.module("Main");
QUnit.test("Convert .fbx to .v3d", function(assert) {
var done = assert.async();
// Make sure class exists
assert.ok(typeof ThreeJSConverter != "undefined", "ThreeJSConverter class exists");
// Download files
var files = [];
var conv = null;
getArrayBuffer("https://ydangleapps.s3.amazonaws.com/vatomic/fbx-converter-test/converse.fbx").then(function(bfr) {
assert.ok(bfr instanceof ArrayBuffer, "Download converse.fbx");
files.push(new File([bfr], "converse.fbx"));
})
.then(getArrayBuffer.bind(null, "https://ydangleapps.s3.amazonaws.com/vatomic/fbx-converter-test/converse.jpg")).then(function(bfr) {
assert.ok(bfr instanceof ArrayBuffer, "Download converse.jpg");
files.push(new File([bfr], "converse.jpg"));
})
.then(getArrayBuffer.bind(null, "https://ydangleapps.s3.amazonaws.com/vatomic/fbx-converter-test/converse_bump.jpg")).then(function(bfr) {
assert.ok(bfr instanceof ArrayBuffer, "Download converse_bump.jpg");
files.push(new File([bfr], "converse_bump.jpg"));
})
.then(getArrayBuffer.bind(null, "https://ydangleapps.s3.amazonaws.com/vatomic/fbx-converter-test/laces.jpg")).then(function(bfr) {
assert.ok(bfr instanceof ArrayBuffer, "Download laces.jpg");
files.push(new File([bfr], "laces.jpg"));
})
// Do conversion
.then(function() {
assert.ok(files.length == 4, "Loaded 4 files");
conv = new ThreeJSConverter(files);
return conv.convert();
})
// Check output
.then(function(v3dData) {
// Check data
assert.ok(v3dData instanceof ArrayBuffer, "V3D data generated");
assert.ok(v3dData.byteLength > 1024, "V3D data is bigger than 1KB, output is " + (v3dData.byteLength / 1024).toFixed(0) + "KB");
// Save it
saveAs(new File([v3dData], "test.v3d"));
})
// Catch errors
.catch(function(err) {
assert.ok(false, "Error: " + err.message)
})
// Done! Output warnings
.then(function() {
// Output warnings
for (var i = 0 ; i < conv.issues.length ; i++)
assert.ok(false, conv.issues[i].description);
// Done
done();
})
});