فهرست منبع

Add image bitmap loading

Garrett Johnson 5 سال پیش
والد
کامیت
16a26934ff
4فایلهای تغییر یافته به همراه44 افزوده شده و 11 حذف شده
  1. 3 3
      package-lock.json
  2. 4 4
      package.json
  3. 9 1
      src/three/B3DMLoader.js
  4. 28 3
      src/three/TilesRenderer.js

+ 3 - 3
package-lock.json

@@ -9783,9 +9783,9 @@
       "dev": true
     },
     "three": {
-      "version": "0.109.0",
-      "resolved": "https://registry.npmjs.org/three/-/three-0.109.0.tgz",
-      "integrity": "sha512-XT99T3Hvgh2CEvwPdHYEunNE+clLK6KiT1U8En7YOgIqTUw4MrLeIc8zxQAJ6wbP8hhJaY5+Cff3jwBPpBa0gA==",
+      "version": "0.115.0",
+      "resolved": "https://registry.npmjs.org/three/-/three-0.115.0.tgz",
+      "integrity": "sha512-mAV2Ky3RdcbdSbR9capI+tKLvRldWYxd4151PZTT/o7+U2jh9Is3a4KmnYwzyUAhB2ZA3pXSgCd2DOY4Tj5kow==",
       "dev": true
     },
     "throat": {

+ 4 - 4
package.json

@@ -12,8 +12,8 @@
     "geometry",
     "terrain",
     "cesium"
-	],
-	"type": "module",
+  ],
+  "type": "module",
   "main": "src/index.js",
   "scripts": {
     "start": "parcel watch example/index.html --out-dir ./example/bundle/ --public-url . --no-cache",
@@ -39,9 +39,9 @@
     "jest": "^24.9.0",
     "jest-cli": "^24.9.0",
     "parcel-bundler": "^1.12.4",
-    "three": ">=0.108.0"
+    "three": ">=0.114.0"
   },
   "peerDependencies": {
-    "three": ">=0.108.0"
+    "three": ">=0.114.0"
   }
 }

+ 9 - 1
src/three/B3DMLoader.js

@@ -3,13 +3,21 @@ import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
 
 export class B3DMLoader extends B3DMLoaderBase {
 
+	constructor( manager ) {
+
+		super();
+		this.manager = manager;
+
+	}
+
 	parse( buffer ) {
 
 		const b3dm = super.parse( buffer );
 		const gltfBuffer = b3dm.glbBytes.slice().buffer;
 		return new Promise( ( resolve, reject ) => {
 
-			new GLTFLoader().parse( gltfBuffer, null, resolve, reject );
+			const manager = this.manager;
+			new GLTFLoader( manager ).parse( gltfBuffer, null, resolve, reject );
 
 		} );
 

+ 28 - 3
src/three/TilesRenderer.js

@@ -9,7 +9,10 @@ import {
 	Vector2,
 	Math as MathUtils,
 	Quaternion,
-	Frustum
+	Frustum,
+	CanvasTexture,
+	LoadingManager,
+	ImageBitmapLoader,
 } from 'three';
 import { raycastTraverse, raycastTraverseFirstHit } from './raycastTraverse.js';
 
@@ -154,7 +157,7 @@ export class TilesRenderer extends TilesRendererBase {
 			tempMat.copy( group.matrixWorld );
 			tempMat.premultiply( camera.matrixWorldInverse );
 			tempMat.premultiply( camera.projectionMatrix );
-			frustum.setFromMatrix( tempMat );
+			frustum.setFromProjectionMatrix( tempMat );
 
 		}
 
@@ -272,7 +275,29 @@ export class TilesRenderer extends TilesRendererBase {
 		tile._loadIndex ++;
 
 		const loadIndex = tile._loadIndex;
-		return new B3DMLoader().parse( buffer ).then( res => {
+
+		const manager = new LoadingManager();
+
+		if ( typeof createImageBitmap !== 'undefined' ) {
+
+			manager.addHandler(/(^blob:)|(\.png$)|(\.jpg$)|(\.jpeg$)/g, {
+
+				load( url, onComplete ) {
+
+					const loader = new ImageBitmapLoader();
+					loader.load( url, res => {
+
+						onComplete( new CanvasTexture( res ) );
+
+					} );
+
+				}
+
+			});
+
+		}
+
+		return new B3DMLoader( manager ).parse( buffer ).then( res => {
 
 			if ( tile._loadIndex !== loadIndex ) {