我想在多线程中使用threeJS的dracoLoader,然后我选择了Webworker和IndexedDB.我在webworker中获得了正确的Geometry,但是,当我使用IndexedDB将数据传递给主线程时,几何体将更改为普通的JS对象而不是ThreeJS Geometry.几何失去了它的功能和一些信息.
webworker.js
self.saveDrcToIndexedDB = function (drcfinal) {
var db;
var request = indexedDB.open("drcDB");
drcfinal.indexName = self.randomStr();
request.onupgradeneeded = function(event) {
console.log('successfully upgraded db');
db = event.target.result;
var objectStore = db.createObjectStore("drcfinal", { keyPath: "indexName"});
};
request.onsuccess = function(event) {
console.log('successfully opened db');
db = event.target.result;
var transaction = db.transaction(["drcfinal"], "readwrite");
var objectStore = transaction.objectStore("drcfinal");
objectStore.add(drcfinal).onsuccess = function(event) {
self.postMessage(drcfinal.indexName);
};
}
}
Run Code Online (Sandbox Code Playgroud)
main.js
var worker = new Worker('webworker.js');
worker.addEventListener('message', function(e) {
indexedDB.open("drcDB").onsuccess = function(event) {
let db = event.target.result;
let …
Run Code Online (Sandbox Code Playgroud)