113 lines
3.1 KiB
JavaScript
113 lines
3.1 KiB
JavaScript
var path = require ('path');
|
|
var fs = require ('fs');
|
|
var testUtils = require ('./testutils.js')
|
|
|
|
module.exports =
|
|
{
|
|
GetTextFileContent : function (folder, fileName)
|
|
{
|
|
var testFilePath = path.join ('testfiles', folder, fileName);
|
|
return fs.readFileSync (testFilePath).toString ();
|
|
},
|
|
|
|
GetArrayBufferFileContent : function (folder, fileName)
|
|
{
|
|
var testFilePath = path.join ('testfiles', folder, fileName);
|
|
var buffer = fs.readFileSync (testFilePath);
|
|
var arrayBuffer = new ArrayBuffer (buffer.length);
|
|
var uint8Array = new Uint8Array (arrayBuffer);
|
|
var i;
|
|
for (i = 0; i < buffer.length; ++i) {
|
|
uint8Array[i] = buffer[i];
|
|
}
|
|
return arrayBuffer
|
|
},
|
|
|
|
ImportObjFile : function (fileName)
|
|
{
|
|
var importer = new OV.ImporterObj ();
|
|
return this.ImportFile (importer, OV.FileFormat.Text, 'obj', fileName);
|
|
},
|
|
|
|
ImportStlFile : function (fileName)
|
|
{
|
|
var importer = new OV.ImporterStl ();
|
|
return this.ImportFile (importer, OV.FileFormat.Binary, 'stl', fileName);
|
|
},
|
|
|
|
ImportOffFile : function (fileName)
|
|
{
|
|
var importer = new OV.ImporterOff ();
|
|
return this.ImportFile (importer, OV.FileFormat.Text, 'off', fileName);
|
|
},
|
|
|
|
ImportPlyFile : function (fileName)
|
|
{
|
|
var importer = new OV.ImporterPly ();
|
|
return this.ImportFile (importer, OV.FileFormat.Binary, 'ply', fileName);
|
|
},
|
|
|
|
Import3dsFile : function (fileName)
|
|
{
|
|
var importer = new OV.Importer3ds ();
|
|
return this.ImportFile (importer, OV.FileFormat.Binary, '3ds', fileName);
|
|
},
|
|
|
|
ImportGltfFile : function (folderName, fileName)
|
|
{
|
|
let extension = OV.GetFileExtension (fileName);
|
|
let format = OV.FileFormat.Text;
|
|
if (extension == 'glb') {
|
|
format = OV.FileFormat.Binary;
|
|
}
|
|
var importer = new OV.ImporterGltf ();
|
|
return this.ImportFile (importer, format, 'gltf/' + folderName, fileName);
|
|
},
|
|
|
|
ImportFile : function (importer, format, folder, fileName)
|
|
{
|
|
function GetFileBuffer (filePath, importer, obj)
|
|
{
|
|
let extension = OV.GetFileExtension (filePath);
|
|
let knownFormats = importer.GetKnownFileFormats ();
|
|
let format = OV.FileFormat.Binary;
|
|
if (knownFormats[extension] !== undefined) {
|
|
format = knownFormats[extension];
|
|
}
|
|
let fileContent = null;
|
|
if (format == OV.FileFormat.Text) {
|
|
fileContent = obj.GetTextFileContent (folder, filePath);
|
|
} else if (format == OV.FileFormat.Binary) {
|
|
fileContent = obj.GetArrayBufferFileContent (folder, filePath);
|
|
}
|
|
return {
|
|
url : null,
|
|
buffer : fileContent
|
|
};
|
|
}
|
|
|
|
var obj = this;
|
|
var content = null;
|
|
if (format == OV.FileFormat.Text) {
|
|
content = this.GetTextFileContent (folder, fileName);
|
|
} else if (format == OV.FileFormat.Binary) {
|
|
content = this.GetArrayBufferFileContent (folder, fileName);
|
|
}
|
|
var extension = OV.GetFileExtension (fileName);
|
|
importer.Import (content, extension, {
|
|
getDefaultMaterial : function () {
|
|
var material = new OV.Material ();
|
|
return material;
|
|
},
|
|
getFileBuffer : function (filePath) {
|
|
return GetFileBuffer (filePath, importer, obj);
|
|
},
|
|
getTextureBuffer : function (filePath) {
|
|
return GetFileBuffer (filePath, importer, obj);
|
|
}
|
|
});
|
|
let model = importer.GetModel ();
|
|
return model;
|
|
}
|
|
}
|