B3DMLoader.js 877 B

1234567891011121314151617181920212223242526272829303132333435363738
  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. model.scene.batchTable = b3dm.batchTable;
  19. model.scene.featureTable = b3dm.featureTable;
  20. resolve( model );
  21. }, reject );
  22. } );
  23. }
  24. }