/** * 关键帧点云数据获取 Worker * 功能:异步获取关键帧点云数据(Protobuf 格式) */ /** * 监听主线程消息 */ self.onmessage = function(event) { const { url, index } = event.data console.log(`[KeyframeWorker] 获取点云 ${index}:`, url) // 发送请求获取点云数据 fetch(url, { method: 'GET', headers: { 'Content-Type': 'application/x-protobuf', 'Accept': 'application/x-protobuf' } }) .then(response => { if (!response.ok) { throw new Error(`HTTP ${response.status}: ${response.statusText}`) } return response.arrayBuffer() }) .then(arrayBuffer => { // 返回 Uint8Array 给主线程 // 主线程会使用 Protobuf 解析这个数据 const uint8Array = new Uint8Array(arrayBuffer) console.log(`[KeyframeWorker] 点云 ${index} 获取成功:`, uint8Array.length, 'bytes') self.postMessage({ type: 'success', data: uint8Array, index: index }) }) .catch(error => { console.error(`[KeyframeWorker] 点云 ${index} 获取失败:`, error) self.postMessage({ type: 'error', error: error.message, index: index }) }) } /** * 错误处理 */ self.onerror = function(error) { console.error('Worker error:', error) }