123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- var fs = require( 'fs' );
- var path = require( 'path' );
- if ( process.argv.length <= 2 ) {
- console.log( `Usage: ${path.basename( __filename )} model.fbx` );
- process.exit( - 1 );
- }
- //
- var PRECISION = 6;
- function parseNumber( key, value ) {
- return typeof value === 'number' ? parseFloat( value.toFixed( PRECISION ) ) : value;
- }
- THREE = require( '../../build/three.js' );
- require( '../../examples/js/curves/NURBSCurve.js' );
- require( '../../examples/js/curves/NURBSUtils.js' );
- require( '../../examples/js/loaders/FBXLoader.js' );
- global.Zlib = require( '../../examples/js/libs/inflate.min.js' ).Zlib;
- global.window = {
- innerWidth: 1024,
- innerHeight: 768,
- URL: {
- createObjectURL: function () {
- throw new Error( 'fbx2three: Images in binary format not yet supported.' );
- }
- }
- };
- // HTML Images are not available, so use a Buffer instead.
- THREE.ImageLoader.prototype.load = function ( url, onLoad ) {
- if ( this.path !== undefined ) url = this.path + url;
- // If image isn't found, try to ignore it.
- if ( ! fs.existsSync( url ) ) {
- onLoad( new Buffer( '' ) );
- return;
- }
- onLoad( fs.readFileSync( url ) );
- };
- // Convert image buffer to data URL.
- THREE.ImageUtils.getDataURL = function ( image ) {
- if ( ! ( image instanceof Buffer ) ) {
- throw new Error( 'fbx2three: Image should be loaded as Buffer.' );
- }
- var dataURL = 'data:';
- dataURL += this.format === THREE.RGBAFormat ? 'image/png' : 'image/jpeg';
- dataURL += ';base64,';
- dataURL += image.toString( 'base64' );
- return dataURL;
- };
- //
- var file = process.argv[ 2 ];
- var resourceDirectory = THREE.LoaderUtils.extractUrlBase( file );
- var loader = new THREE.FBXLoader();
- var arraybuffer = fs.readFileSync( file ).buffer;
- var object = loader.parse( arraybuffer, resourceDirectory );
- var content = JSON.stringify( object.toJSON(), parseNumber );
- fs.writeFileSync( path.basename( file, '.fbx' ) + '.json', content, 'utf8' );
|