B3DMLoader.js 779 B

12345678910111213141516171819202122232425262728293031323334
  1. import { B3DMLoaderBase } from '../base/B3DMLoaderBase.js';
  2. import { DefaultLoadingManager } from 'three';
  3. import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
  4. export class B3DMLoader extends B3DMLoaderBase {
  5. constructor( manager = DefaultLoadingManager ) {
  6. super();
  7. this.manager = manager;
  8. }
  9. parse( buffer ) {
  10. const b3dm = super.parse( buffer );
  11. const gltfBuffer = b3dm.glbBytes.slice().buffer;
  12. return new Promise( ( resolve, reject ) => {
  13. const manager = this.manager;
  14. const loader = manager.getHandler( 'path.gltf' ) || new GLTFLoader( manager );
  15. loader.parse( gltfBuffer, null, model => {
  16. model.batchTable = b3dm.batchTable;
  17. model.featureTable = b3dm.featureTable;
  18. resolve( model );
  19. }, reject );
  20. } );
  21. }
  22. }