You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.1 KiB
72 lines
1.1 KiB
( function () {
|
|
|
|
//
|
|
// VRM is based on glTF 2.0 and VRM extension is defined
|
|
// in top-level json.extensions.VRM
|
|
|
|
class VRMLoader extends THREE.Loader {
|
|
|
|
constructor( manager ) {
|
|
|
|
if ( THREE.GLTFLoader === undefined ) {
|
|
|
|
throw new Error( 'THREE.VRMLoader: Import THREE.GLTFLoader.' );
|
|
|
|
}
|
|
|
|
super( manager );
|
|
this.gltfLoader = new THREE.GLTFLoader( manager );
|
|
|
|
}
|
|
|
|
load( url, onLoad, onProgress, onError ) {
|
|
|
|
const scope = this;
|
|
this.gltfLoader.load( url, function ( gltf ) {
|
|
|
|
try {
|
|
|
|
scope.parse( gltf, onLoad );
|
|
|
|
} catch ( e ) {
|
|
|
|
if ( onError ) {
|
|
|
|
onError( e );
|
|
|
|
} else {
|
|
|
|
console.error( e );
|
|
|
|
}
|
|
|
|
scope.manager.itemError( url );
|
|
|
|
}
|
|
|
|
}, onProgress, onError );
|
|
|
|
}
|
|
|
|
setDRACOLoader( dracoLoader ) {
|
|
|
|
this.gltfLoader.setDRACOLoader( dracoLoader );
|
|
return this;
|
|
|
|
}
|
|
|
|
parse( gltf, onLoad ) {
|
|
|
|
// const gltfParser = gltf.parser;
|
|
// const gltfExtensions = gltf.userData.gltfExtensions || {};
|
|
// const vrmExtension = gltfExtensions.VRM || {};
|
|
// handle VRM Extension here
|
|
onLoad( gltf );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
THREE.VRMLoader = VRMLoader;
|
|
|
|
} )();
|
|
|