load(url, options) {
        return new Promise(resolve => {
            this.require([
                'DRACOLoader',
                'GLTFLoader'
            ]).then(() => {
                var loader = new THREE.GLTFLoader();

                // DRACOLoader
                let dracoLoader = new THREE.DRACOLoader();
                dracoLoader.setDecoderPath('assets/js/libs/draco/gltf/');
                loader.setDRACOLoader(dracoLoader);

                loader.load(url, result => {
                    var obj3d = result.scene;

                    obj3d._obj = result;
                    obj3d._root = result.scene;

                    if (result.animations && result.animations.length > 0) {
                        Object.assign(obj3d.userData, {
                            animNames: result.animations.map(n => n.name),
                            scripts: [{
                                id: null,
                                name: `${options.Name}${_t('Animation')}`,
                                type: 'javascript',
                                source: this.createScripts(options.Name),
                                uuid: THREE.Math.generateUUID()
                            }]
                        });
                    }
                    resolve(obj3d);
                }, undefined, () => {
                    resolve(null);
                });
            });
        });
    }
GLTFLoader
@author tengge / https://github.com/tengge1