@luxonis/visualizer-protobuf 2.12.0 → 2.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/WorkerImageDecoder.worker-DCoSYoLL.js +31 -0
- package/dist/{decodeImage-BBqnjJjE.js → decodeImage-NYPkamnK.js} +29 -363
- package/dist/{index-Bm-sfjxA.js → index-BHzFgL5N.js} +1 -1
- package/dist/{index-DBIBZoxL.js → index-BJofTpil.js} +1 -1
- package/dist/{index-BQ-DVAKf.js → index-BPWE58mB.js} +85 -56
- package/dist/{index-DlZBtd34.js → index-BTNGGXoa.js} +1 -1
- package/dist/{index-BPvLkg91.js → index-BwoyZPjj.js} +1 -1
- package/dist/{index-Wtqlsb8j.js → index-C1eH0RCy.js} +1 -1
- package/dist/{index-CnJXVxDI.js → index-CIfIw1LQ.js} +1 -1
- package/dist/{index-DeuAC1JS.js → index-Cq7so9Q9.js} +1 -1
- package/dist/{index-qgG8SIsl.js → index-D7jNrXVP.js} +1 -1
- package/dist/{index-Daz5hiMP.js → index-D8jKQuGu.js} +388 -73
- package/dist/{index-CzaJSWor.js → index-D9d5kqGf.js} +1 -1
- package/dist/{index-BND59L-_.js → index-DAXpEznJ.js} +3 -3
- package/dist/{index-DXqNhUgR.js → index-DCh-Eobo.js} +1 -1
- package/dist/{index-DZWFfAzL.js → index-DI5QHg2x.js} +1 -1
- package/dist/{index-WQ5HqEqM.js → index-DM9oCkXH.js} +1 -1
- package/dist/{index-DujAeBia.js → index-DY6zQP_F.js} +1 -1
- package/dist/{index-IH42B4Mg.js → index-Di_-JfGf.js} +1 -1
- package/dist/{index-BNgQTecN.js → index-Zivk6fee.js} +1 -1
- package/dist/{index-DQBNcZG9.js → index-d8vRrHr4.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/src/components/PanelToolbar.d.ts.map +1 -1
- package/dist/lib/src/components/PanelToolbar.js +1 -1
- package/dist/lib/src/components/PanelToolbar.js.map +1 -1
- package/dist/lib/src/connection/foxglove-connection.d.ts +1 -0
- package/dist/lib/src/connection/foxglove-connection.d.ts.map +1 -1
- package/dist/lib/src/connection/foxglove-connection.js +15 -0
- package/dist/lib/src/connection/foxglove-connection.js.map +1 -1
- package/dist/lib/src/connection/webrtc/bridge.d.ts +1 -1
- package/dist/lib/src/connection/webrtc/bridge.d.ts.map +1 -1
- package/dist/lib/src/connection/webrtc/bridge.js +1 -1
- package/dist/lib/src/connection/webrtc/bridge.js.map +1 -1
- package/dist/lib/src/connection/webrtc/comms-proxy.d.ts.map +1 -1
- package/dist/lib/src/connection/webrtc/comms-proxy.js +4 -1
- package/dist/lib/src/connection/webrtc/comms-proxy.js.map +1 -1
- package/dist/lib/src/messaging/deserialization/pointcloud/utils.d.ts +19 -0
- package/dist/lib/src/messaging/deserialization/pointcloud/utils.d.ts.map +1 -0
- package/dist/lib/src/messaging/deserialization/pointcloud/utils.js +97 -0
- package/dist/lib/src/messaging/deserialization/pointcloud/utils.js.map +1 -0
- package/dist/lib/src/messaging/deserialization/video/depth.d.ts +6 -1
- package/dist/lib/src/messaging/deserialization/video/depth.d.ts.map +1 -1
- package/dist/lib/src/messaging/deserialization/video/depth.js +185 -7
- package/dist/lib/src/messaging/deserialization/video/depth.js.map +1 -1
- package/dist/lib/src/messaging/deserialization.js +1 -1
- package/dist/lib/src/messaging/deserialization.js.map +1 -1
- package/dist/lib/src/messaging/message-handler.d.ts.map +1 -1
- package/dist/lib/src/messaging/message-handler.js.map +1 -1
- package/dist/lib/src/panels/PointCloudPanel.js +2 -2
- package/dist/lib/src/panels/PointCloudPanel.js.map +1 -1
- package/dist/lib/src/protobuf.generated/IMUData.d.ts +122 -0
- package/dist/lib/src/protobuf.generated/IMUData.d.ts.map +1 -0
- package/dist/lib/src/protobuf.generated/IMUData.js +691 -0
- package/dist/lib/src/protobuf.generated/IMUData.js.map +1 -0
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/Renderer.d.ts +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/Renderer.d.ts.map +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/Renderer.js +6 -7
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/Renderer.js.map +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/ThreeDeeRender.d.ts.map +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/ThreeDeeRender.js +2 -3
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/ThreeDeeRender.js.map +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/ImageMode.d.ts.map +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/ImageMode.js.map +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/ImageRenderable.d.ts +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/ImageRenderable.d.ts.map +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/ImageRenderable.js +8 -3
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/ImageRenderable.js.map +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/WorkerImageDecoder.d.ts +10 -2
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/WorkerImageDecoder.d.ts.map +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/WorkerImageDecoder.js +69 -10
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/WorkerImageDecoder.js.map +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/decodeImage.d.ts +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/decodeImage.d.ts.map +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/decodeImage.js +29 -21
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/decodeImage.js.map +1 -1
- package/package.json +4 -1
- package/dist/WorkerImageDecoder.worker-DjK2q36W.js +0 -18
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/WorkerImageDecoder.worker.d.ts +0 -9
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/WorkerImageDecoder.worker.d.ts.map +0 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/WorkerImageDecoder.worker.js +0 -15
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/Images/WorkerImageDecoder.worker.js.map +0 -1
|
@@ -1048,6 +1048,69 @@ function estimateObjectSize(obj) {
|
|
|
1048
1048
|
return SMALL_INTEGER_SIZE;
|
|
1049
1049
|
}
|
|
1050
1050
|
|
|
1051
|
+
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
1052
|
+
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
1053
|
+
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
1054
|
+
/// <reference types="@webgpu/types" />
|
|
1055
|
+
|
|
1056
|
+
function uint8ArrayToUint16Array(uint8Array) {
|
|
1057
|
+
if (uint8Array.length % 2 !== 0) {
|
|
1058
|
+
throw new Error("Uint8Array length must be a multiple of 2 for conversion to Uint16Array");
|
|
1059
|
+
}
|
|
1060
|
+
const uint16Array = new Uint16Array(uint8Array.length / 2);
|
|
1061
|
+
for (let i = 0; i < uint16Array.length; i++) {
|
|
1062
|
+
const lowByte = uint8Array[i * 2];
|
|
1063
|
+
const highByte = uint8Array[i * 2 + 1];
|
|
1064
|
+
|
|
1065
|
+
// eslint-disable-next-line @foxglove/strict-equality
|
|
1066
|
+
if (highByte === undefined || lowByte === undefined) {
|
|
1067
|
+
throw new Error("Invalid data in uint8Array");
|
|
1068
|
+
}
|
|
1069
|
+
uint16Array[i] = highByte << 8 | lowByte;
|
|
1070
|
+
}
|
|
1071
|
+
return uint16Array;
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1074
|
+
/* H264 (i420) to RGBA */
|
|
1075
|
+
function i420ToRgbaToPointcloud(i420Data, i420Width, i420Height, depthWidth, depthHeight, data) {
|
|
1076
|
+
const frameSize = i420Width * i420Height;
|
|
1077
|
+
const uOffset = frameSize;
|
|
1078
|
+
const vOffset = frameSize + frameSize / 4;
|
|
1079
|
+
const pointCount = data.byteLength / 16;
|
|
1080
|
+
const buffer = new ArrayBuffer(data.byteLength);
|
|
1081
|
+
const view = new DataView(buffer);
|
|
1082
|
+
const dataView = new DataView(data.buffer);
|
|
1083
|
+
for (let i = 0; i < pointCount; i++) {
|
|
1084
|
+
const depthX = i % depthWidth;
|
|
1085
|
+
const depthY = Math.floor(i / depthWidth);
|
|
1086
|
+
const i420X = Math.round(depthX * (i420Width / depthWidth));
|
|
1087
|
+
const i420Y = Math.round(depthY * (i420Height / depthHeight));
|
|
1088
|
+
if (i420X >= i420Width || i420Y >= i420Height) {
|
|
1089
|
+
continue;
|
|
1090
|
+
}
|
|
1091
|
+
const index = i420Y * i420Width + i420X;
|
|
1092
|
+
const uvIndex = Math.floor(i420Y / 2) * (i420Width / 2) + Math.floor(i420X / 2);
|
|
1093
|
+
const Y = i420Data[index] ?? 0;
|
|
1094
|
+
const U = (i420Data[uOffset + uvIndex] ?? 128) - 128;
|
|
1095
|
+
const V = (i420Data[vOffset + uvIndex] ?? 128) - 128;
|
|
1096
|
+
let R = Y + 1.402 * V;
|
|
1097
|
+
let G = Y - 0.344136 * U - 0.714136 * V;
|
|
1098
|
+
let B = Y + 1.772 * U;
|
|
1099
|
+
R = Math.min(255, Math.max(0, R));
|
|
1100
|
+
G = Math.min(255, Math.max(0, G));
|
|
1101
|
+
B = Math.min(255, Math.max(0, B));
|
|
1102
|
+
const offset = i * 16;
|
|
1103
|
+
view.setFloat32(offset, dataView.getFloat32(offset, true), true); // x
|
|
1104
|
+
view.setFloat32(offset + 4, dataView.getFloat32(offset + 4, true), true); // y
|
|
1105
|
+
view.setFloat32(offset + 8, dataView.getFloat32(offset + 8, true), true); // z
|
|
1106
|
+
view.setUint8(offset + 12, R); // Red
|
|
1107
|
+
view.setUint8(offset + 13, G); // Green
|
|
1108
|
+
view.setUint8(offset + 14, B); // Blue
|
|
1109
|
+
view.setUint8(offset + 15, 255); // Alpha (fully opaque)
|
|
1110
|
+
}
|
|
1111
|
+
return new Uint8Array(buffer);
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1051
1114
|
var typescript$1 = {};
|
|
1052
1115
|
|
|
1053
1116
|
/******************************************************************************
|
|
@@ -11357,34 +11420,270 @@ function deserializeColorFrame({
|
|
|
11357
11420
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
11358
11421
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
11359
11422
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
11360
|
-
|
|
11361
|
-
|
|
11423
|
+
/* eslint-disable no-underscore-dangle */
|
|
11424
|
+
|
|
11425
|
+
const shader = `
|
|
11426
|
+
@group(0) @binding(0) var<storage, read> depthBuffer: array<u32>; // Uint16 stored as u32
|
|
11427
|
+
@group(0) @binding(1) var<storage, read> intrinsicsBuffer: array<f32>;
|
|
11428
|
+
@group(0) @binding(2) var<storage, read_write> xyzColorBuffer: array<u32>; // Stores XYZ + RGBA
|
|
11429
|
+
|
|
11430
|
+
@compute @workgroup_size(256, 1, 1)
|
|
11431
|
+
fn main(@builtin(global_invocation_id) global_id: vec3<u32>) {
|
|
11432
|
+
let i = global_id.x;
|
|
11433
|
+
let fx = intrinsicsBuffer[0];
|
|
11434
|
+
let fy = intrinsicsBuffer[1];
|
|
11435
|
+
let cx = intrinsicsBuffer[2];
|
|
11436
|
+
let cy = intrinsicsBuffer[3];
|
|
11437
|
+
let scale = intrinsicsBuffer[4];
|
|
11438
|
+
let width = intrinsicsBuffer[5];
|
|
11439
|
+
let height = intrinsicsBuffer[6];
|
|
11440
|
+
|
|
11441
|
+
if (i >= u32(width * height)) { return; }
|
|
11442
|
+
|
|
11443
|
+
let u = i % u32(width);
|
|
11444
|
+
let v = i / u32(width);
|
|
11445
|
+
|
|
11446
|
+
// Convert uint16 depth value to float (stored as u32, so we bitwise mask)
|
|
11447
|
+
let rawDepth = depthBuffer[i] & 0xFFFFu;
|
|
11448
|
+
let z = f32(rawDepth) * scale;
|
|
11449
|
+
|
|
11450
|
+
let x = (cx - f32(u)) * z / fx;
|
|
11451
|
+
let y = (cy - f32(v)) * z / fy;
|
|
11452
|
+
|
|
11453
|
+
let base = i * 4u; // 4 values per point (X, Y, Z, Color)
|
|
11454
|
+
|
|
11455
|
+
// Convert floats to u32 representation for storage
|
|
11456
|
+
xyzColorBuffer[base] = bitcast<u32>(x);
|
|
11457
|
+
xyzColorBuffer[base + 1u] = bitcast<u32>(y);
|
|
11458
|
+
xyzColorBuffer[base + 2u] = bitcast<u32>(z);
|
|
11459
|
+
|
|
11460
|
+
// Example: RGB set based on depth, Alpha is fixed at 255
|
|
11461
|
+
let r = u32(clamp(z * 255.0, 0.0, 255.0));
|
|
11462
|
+
let g = u32(clamp(y * 255.0, 0.0, 255.0));
|
|
11463
|
+
let b = u32(clamp(x * 255.0, 0.0, 255.0));
|
|
11464
|
+
xyzColorBuffer[base + 3u] = (r & 0xFFu) | ((g & 0xFFu) << 8) | ((b & 0xFFu) << 16) | (255u << 24);
|
|
11465
|
+
}
|
|
11466
|
+
`;
|
|
11467
|
+
async function depthToPointcloudGPU(depthArray, width, height, fx, fy, cx, cy) {
|
|
11468
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
11469
|
+
if (!navigator.gpu) {
|
|
11470
|
+
console.warn("WebGPU not supported.");
|
|
11471
|
+
return depthToPointCloudBuffer(depthArray, width, height, fx, fy, cx, cy);
|
|
11472
|
+
}
|
|
11473
|
+
const adapter = await navigator.gpu.requestAdapter();
|
|
11474
|
+
if (!adapter) {
|
|
11475
|
+
console.warn("Couldn't request WebGPU adapter.");
|
|
11476
|
+
return depthToPointCloudBuffer(depthArray, width, height, fx, fy, cx, cy);
|
|
11477
|
+
}
|
|
11478
|
+
const device = await adapter.requestDevice();
|
|
11479
|
+
const queue = device.queue;
|
|
11480
|
+
const scale = 1.0;
|
|
11481
|
+
const numPixels = width * height;
|
|
11482
|
+
const outputSize = numPixels * 16;
|
|
11483
|
+
const depthData32 = new Uint32Array(depthArray);
|
|
11484
|
+
const intrinsics = new Float32Array([fx, fy, cx, cy, scale, width, height]);
|
|
11485
|
+
const depthBuffer = device.createBuffer({
|
|
11486
|
+
size: depthData32.byteLength,
|
|
11487
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST
|
|
11488
|
+
});
|
|
11489
|
+
const intrinsicsBuffer = device.createBuffer({
|
|
11490
|
+
size: intrinsics.byteLength,
|
|
11491
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST
|
|
11492
|
+
});
|
|
11493
|
+
const xyzColorBuffer = device.createBuffer({
|
|
11494
|
+
size: outputSize,
|
|
11495
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC
|
|
11496
|
+
});
|
|
11497
|
+
queue.writeBuffer(depthBuffer, 0, depthData32);
|
|
11498
|
+
queue.writeBuffer(intrinsicsBuffer, 0, intrinsics);
|
|
11499
|
+
const bindGroupLayout = device.createBindGroupLayout({
|
|
11500
|
+
entries: [{
|
|
11501
|
+
binding: 0,
|
|
11502
|
+
visibility: GPUShaderStage.COMPUTE,
|
|
11503
|
+
buffer: {
|
|
11504
|
+
type: "read-only-storage"
|
|
11505
|
+
}
|
|
11506
|
+
}, {
|
|
11507
|
+
binding: 1,
|
|
11508
|
+
visibility: GPUShaderStage.COMPUTE,
|
|
11509
|
+
buffer: {
|
|
11510
|
+
type: "read-only-storage"
|
|
11511
|
+
}
|
|
11512
|
+
}, {
|
|
11513
|
+
binding: 2,
|
|
11514
|
+
visibility: GPUShaderStage.COMPUTE,
|
|
11515
|
+
buffer: {
|
|
11516
|
+
type: "storage"
|
|
11517
|
+
}
|
|
11518
|
+
}]
|
|
11519
|
+
});
|
|
11520
|
+
const bindGroup = device.createBindGroup({
|
|
11521
|
+
layout: bindGroupLayout,
|
|
11522
|
+
entries: [{
|
|
11523
|
+
binding: 0,
|
|
11524
|
+
resource: {
|
|
11525
|
+
buffer: depthBuffer
|
|
11526
|
+
}
|
|
11527
|
+
}, {
|
|
11528
|
+
binding: 1,
|
|
11529
|
+
resource: {
|
|
11530
|
+
buffer: intrinsicsBuffer
|
|
11531
|
+
}
|
|
11532
|
+
}, {
|
|
11533
|
+
binding: 2,
|
|
11534
|
+
resource: {
|
|
11535
|
+
buffer: xyzColorBuffer
|
|
11536
|
+
}
|
|
11537
|
+
}]
|
|
11538
|
+
});
|
|
11539
|
+
const shaderModule = device.createShaderModule({
|
|
11540
|
+
code: shader
|
|
11541
|
+
});
|
|
11542
|
+
const pipeline = device.createComputePipeline({
|
|
11543
|
+
layout: device.createPipelineLayout({
|
|
11544
|
+
bindGroupLayouts: [bindGroupLayout]
|
|
11545
|
+
}),
|
|
11546
|
+
compute: {
|
|
11547
|
+
module: shaderModule,
|
|
11548
|
+
entryPoint: "main"
|
|
11549
|
+
}
|
|
11550
|
+
});
|
|
11551
|
+
const commandEncoder = device.createCommandEncoder();
|
|
11552
|
+
const passEncoder = commandEncoder.beginComputePass();
|
|
11553
|
+
passEncoder.setPipeline(pipeline);
|
|
11554
|
+
passEncoder.setBindGroup(0, bindGroup);
|
|
11555
|
+
passEncoder.dispatchWorkgroups(Math.ceil(numPixels / 256));
|
|
11556
|
+
passEncoder.end();
|
|
11557
|
+
device.queue.submit([commandEncoder.finish()]);
|
|
11558
|
+
const outputBuffer = device.createBuffer({
|
|
11559
|
+
size: xyzColorBuffer.size,
|
|
11560
|
+
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ
|
|
11561
|
+
});
|
|
11562
|
+
const copyEncoder = device.createCommandEncoder();
|
|
11563
|
+
copyEncoder.copyBufferToBuffer(xyzColorBuffer, 0, outputBuffer, 0, xyzColorBuffer.size);
|
|
11564
|
+
device.queue.submit([copyEncoder.finish()]);
|
|
11565
|
+
|
|
11566
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
11567
|
+
await outputBuffer.mapAsync(GPUMapMode.READ);
|
|
11568
|
+
const mappedRange = outputBuffer.getMappedRange();
|
|
11569
|
+
const result = new Uint8Array(mappedRange.byteLength);
|
|
11570
|
+
result.set(new Uint8Array(mappedRange));
|
|
11571
|
+
outputBuffer.unmap();
|
|
11572
|
+
return result;
|
|
11573
|
+
}
|
|
11574
|
+
function depthToPointCloudBuffer(uint16Array, width, height, fx, fy, cx, cy) {
|
|
11575
|
+
const depthData = Array.from({
|
|
11576
|
+
length: height
|
|
11577
|
+
}, () => new Array(width));
|
|
11578
|
+
for (let v = 0; v < height; v++) {
|
|
11579
|
+
depthData[v] = depthData[v] ?? [];
|
|
11580
|
+
for (let u = 0; u < width; u++) {
|
|
11581
|
+
const d = uint16Array[v * width + u] ?? -1;
|
|
11582
|
+
depthData[v][u] = d > 0 ? d : -1;
|
|
11583
|
+
}
|
|
11584
|
+
}
|
|
11585
|
+
const points = [];
|
|
11586
|
+
// Accumulate the x, y, z values for each pixel.
|
|
11587
|
+
for (let v = 0; v < height; v++) {
|
|
11588
|
+
const row = depthData[v];
|
|
11589
|
+
if (!row) {
|
|
11590
|
+
continue;
|
|
11591
|
+
}
|
|
11592
|
+
for (let u = 0; u < width; u++) {
|
|
11593
|
+
const z = row[u] ?? 0;
|
|
11594
|
+
const x = (cx - u) * z / fx;
|
|
11595
|
+
const y = (cy - v) * z / fy;
|
|
11596
|
+
points.push(x, y, z);
|
|
11597
|
+
}
|
|
11598
|
+
}
|
|
11599
|
+
const pointCount = points.length / 3;
|
|
11600
|
+
const buffer = new ArrayBuffer(pointCount * 16);
|
|
11601
|
+
const view = new DataView(buffer);
|
|
11602
|
+
for (let i = 0; i < pointCount; i++) {
|
|
11603
|
+
const offset = i * 16;
|
|
11604
|
+
view.setFloat32(offset, points[i * 3] ?? 0, true); //X
|
|
11605
|
+
view.setFloat32(offset + 4, points[i * 3 + 1] ?? 0, true); //Y
|
|
11606
|
+
view.setFloat32(offset + 8, points[i * 3 + 2] ?? 0, true); //Z
|
|
11607
|
+
view.setUint8(offset + 12, 0); // R
|
|
11608
|
+
view.setUint8(offset + 13, 0); // G
|
|
11609
|
+
view.setUint8(offset + 14, 0); // B
|
|
11610
|
+
view.setUint8(offset + 15, 255); // A
|
|
11611
|
+
}
|
|
11612
|
+
return new Uint8Array(buffer);
|
|
11613
|
+
}
|
|
11614
|
+
async function deserializeDepthFrame({
|
|
11362
11615
|
topic,
|
|
11363
11616
|
message,
|
|
11364
11617
|
callback
|
|
11365
11618
|
}) {
|
|
11366
11619
|
const {
|
|
11367
11620
|
receiveTime,
|
|
11368
|
-
encoding,
|
|
11369
|
-
step,
|
|
11370
11621
|
width,
|
|
11371
11622
|
height
|
|
11372
11623
|
} = parseMessage(message);
|
|
11624
|
+
const neuralCameraIntrinsics = JSON.parse(localStorage.getItem("neuralCameraIntrinsics") ?? "{}");
|
|
11625
|
+
const uint16Array = uint8ArrayToUint16Array(message.data);
|
|
11626
|
+
const fx = neuralCameraIntrinsics.right.focalLenght.x;
|
|
11627
|
+
const fy = neuralCameraIntrinsics.right.focalLenght.y;
|
|
11628
|
+
const cx = neuralCameraIntrinsics.right.principalPoint.x;
|
|
11629
|
+
const cy = neuralCameraIntrinsics.right.principalPoint.y;
|
|
11630
|
+
const pointCloudBufferGPU = depthToPointcloudGPU(uint16Array, width, height, fx, fy, cx, cy);
|
|
11373
11631
|
const foxgloveMessage = {
|
|
11374
11632
|
timestamp: receiveTime,
|
|
11375
|
-
frame_id: `
|
|
11633
|
+
frame_id: `pointcloud-${topic}-frame`,
|
|
11634
|
+
point_stride: 16,
|
|
11635
|
+
pose: {
|
|
11636
|
+
position: {
|
|
11637
|
+
x: 0,
|
|
11638
|
+
y: 0,
|
|
11639
|
+
z: 0
|
|
11640
|
+
},
|
|
11641
|
+
orientation: {
|
|
11642
|
+
x: 0,
|
|
11643
|
+
y: 0,
|
|
11644
|
+
z: 1,
|
|
11645
|
+
w: 0
|
|
11646
|
+
}
|
|
11647
|
+
},
|
|
11376
11648
|
width,
|
|
11377
11649
|
height,
|
|
11378
|
-
|
|
11379
|
-
|
|
11380
|
-
|
|
11650
|
+
fields: [{
|
|
11651
|
+
name: "x",
|
|
11652
|
+
offset: 0,
|
|
11653
|
+
type: typescript$1.NumericType.FLOAT32
|
|
11654
|
+
}, {
|
|
11655
|
+
name: "y",
|
|
11656
|
+
offset: 4,
|
|
11657
|
+
type: typescript$1.NumericType.FLOAT32
|
|
11658
|
+
}, {
|
|
11659
|
+
name: "z",
|
|
11660
|
+
offset: 8,
|
|
11661
|
+
type: typescript$1.NumericType.FLOAT32
|
|
11662
|
+
}, {
|
|
11663
|
+
name: "red",
|
|
11664
|
+
offset: 12,
|
|
11665
|
+
type: typescript$1.NumericType.UINT8
|
|
11666
|
+
}, {
|
|
11667
|
+
name: "green",
|
|
11668
|
+
offset: 13,
|
|
11669
|
+
type: typescript$1.NumericType.UINT8
|
|
11670
|
+
}, {
|
|
11671
|
+
name: "blue",
|
|
11672
|
+
offset: 14,
|
|
11673
|
+
type: typescript$1.NumericType.UINT8
|
|
11674
|
+
}, {
|
|
11675
|
+
name: "alpha",
|
|
11676
|
+
offset: 15,
|
|
11677
|
+
type: typescript$1.NumericType.UINT8
|
|
11678
|
+
}],
|
|
11679
|
+
data: await pointCloudBufferGPU
|
|
11381
11680
|
};
|
|
11382
11681
|
callback({
|
|
11383
11682
|
topic,
|
|
11384
11683
|
receiveTime,
|
|
11385
11684
|
message: foxgloveMessage,
|
|
11386
11685
|
sizeInBytes: estimateObjectSize(foxgloveMessage),
|
|
11387
|
-
schemaName: "foxglove.
|
|
11686
|
+
schemaName: "foxglove.PointCloud"
|
|
11388
11687
|
});
|
|
11389
11688
|
}
|
|
11390
11689
|
|
|
@@ -11599,7 +11898,7 @@ async function deserializeDepthAiMessage(args) {
|
|
|
11599
11898
|
}
|
|
11600
11899
|
case Type$1.RAW16:
|
|
11601
11900
|
{
|
|
11602
|
-
deserializeDepthFrame({
|
|
11901
|
+
await deserializeDepthFrame({
|
|
11603
11902
|
topic,
|
|
11604
11903
|
message,
|
|
11605
11904
|
callback
|
|
@@ -11788,6 +12087,18 @@ class FoxgloveConnection {
|
|
|
11788
12087
|
}
|
|
11789
12088
|
handleParsedMessage(event) {
|
|
11790
12089
|
this.decodeMetrics.registerEvent(event.topic);
|
|
12090
|
+
if (event.topic === "H.264 Stream") {
|
|
12091
|
+
this.lastEncodedFrame = event;
|
|
12092
|
+
}
|
|
12093
|
+
if (event.topic === "Point Cloud") {
|
|
12094
|
+
if (!this.lastEncodedFrame) {
|
|
12095
|
+
console.warn("didnt find H.264 Stream");
|
|
12096
|
+
} else {
|
|
12097
|
+
// @ts-expect-error - ITS unknow
|
|
12098
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
12099
|
+
event.message.data = i420ToRgbaToPointcloud(this.lastEncodedFrame.message.data, this.lastEncodedFrame.message.width, this.lastEncodedFrame.message.height, event.message.width, event.message.height, event.message.data);
|
|
12100
|
+
}
|
|
12101
|
+
}
|
|
11791
12102
|
const messageSize = estimateObjectSize(event.message);
|
|
11792
12103
|
event.sizeInBytes = messageSize;
|
|
11793
12104
|
this.messageEvents.push(event);
|
|
@@ -12329,44 +12640,6 @@ class WebRtcClient {
|
|
|
12329
12640
|
on = this.events.on.bind(this.events);
|
|
12330
12641
|
}
|
|
12331
12642
|
|
|
12332
|
-
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
12333
|
-
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
12334
|
-
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
12335
|
-
|
|
12336
|
-
class ArtificialWorker extends EventTarget {
|
|
12337
|
-
#selfTarget = new EventTarget();
|
|
12338
|
-
|
|
12339
|
-
// Post message from main to worker
|
|
12340
|
-
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
12341
|
-
postMessage(data, _transferable) {
|
|
12342
|
-
const event = new MessageEvent('message', {
|
|
12343
|
-
data
|
|
12344
|
-
});
|
|
12345
|
-
this.#selfTarget.dispatchEvent(event);
|
|
12346
|
-
}
|
|
12347
|
-
|
|
12348
|
-
// Listen for worker-to-main messages
|
|
12349
|
-
// @ts-expect-error Make it typed
|
|
12350
|
-
addEventListener(type, callback) {
|
|
12351
|
-
super.addEventListener(type, callback);
|
|
12352
|
-
}
|
|
12353
|
-
|
|
12354
|
-
// Post message from worker to main
|
|
12355
|
-
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
12356
|
-
postMessageToMain(data, _transferable) {
|
|
12357
|
-
const event = new MessageEvent('message', {
|
|
12358
|
-
data
|
|
12359
|
-
});
|
|
12360
|
-
super.dispatchEvent(event);
|
|
12361
|
-
}
|
|
12362
|
-
|
|
12363
|
-
// Listen for main-to-worker messages
|
|
12364
|
-
// @ts-expect-error Make it typed
|
|
12365
|
-
addEventListenerFromMain(type, callback) {
|
|
12366
|
-
this.#selfTarget.addEventListener(type, callback);
|
|
12367
|
-
}
|
|
12368
|
-
}
|
|
12369
|
-
|
|
12370
12643
|
var safeStableStringify = {exports: {}};
|
|
12371
12644
|
|
|
12372
12645
|
(function (module, exports) {
|
|
@@ -29852,6 +30125,10 @@ const uuidv7 = () => uuidv7obj().toString();
|
|
|
29852
30125
|
/** Generates a UUIDv7 object. */
|
|
29853
30126
|
const uuidv7obj = () => (defaultGenerator$1 || (defaultGenerator$1 = new V7Generator())).generate();
|
|
29854
30127
|
|
|
30128
|
+
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
30129
|
+
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
30130
|
+
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
30131
|
+
|
|
29855
30132
|
const GET_APP_CONNECTION = () => ({
|
|
29856
30133
|
GetAppConnection: {}
|
|
29857
30134
|
});
|
|
@@ -29905,7 +30182,7 @@ class WebRtcCommsProxy {
|
|
|
29905
30182
|
}
|
|
29906
30183
|
}
|
|
29907
30184
|
#isAppConnectionResponse(message) {
|
|
29908
|
-
return message.data.Ok
|
|
30185
|
+
return message.data.Ok.GetAppConnection !== undefined;
|
|
29909
30186
|
}
|
|
29910
30187
|
#startRefreshInterval() {
|
|
29911
30188
|
this.#refreshIntervalId = setInterval(() => {
|
|
@@ -29918,6 +30195,44 @@ class WebRtcCommsProxy {
|
|
|
29918
30195
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
29919
30196
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
29920
30197
|
|
|
30198
|
+
class ArtificialWorker extends EventTarget {
|
|
30199
|
+
#selfTarget = new EventTarget();
|
|
30200
|
+
|
|
30201
|
+
// Post message from main to worker
|
|
30202
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
30203
|
+
postMessage(data, _transferable) {
|
|
30204
|
+
const event = new MessageEvent('message', {
|
|
30205
|
+
data
|
|
30206
|
+
});
|
|
30207
|
+
this.#selfTarget.dispatchEvent(event);
|
|
30208
|
+
}
|
|
30209
|
+
|
|
30210
|
+
// Listen for worker-to-main messages
|
|
30211
|
+
// @ts-expect-error Make it typed
|
|
30212
|
+
addEventListener(type, callback) {
|
|
30213
|
+
super.addEventListener(type, callback);
|
|
30214
|
+
}
|
|
30215
|
+
|
|
30216
|
+
// Post message from worker to main
|
|
30217
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
30218
|
+
postMessageToMain(data, _transferable) {
|
|
30219
|
+
const event = new MessageEvent('message', {
|
|
30220
|
+
data
|
|
30221
|
+
});
|
|
30222
|
+
super.dispatchEvent(event);
|
|
30223
|
+
}
|
|
30224
|
+
|
|
30225
|
+
// Listen for main-to-worker messages
|
|
30226
|
+
// @ts-expect-error Make it typed
|
|
30227
|
+
addEventListenerFromMain(type, callback) {
|
|
30228
|
+
this.#selfTarget.addEventListener(type, callback);
|
|
30229
|
+
}
|
|
30230
|
+
}
|
|
30231
|
+
|
|
30232
|
+
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
30233
|
+
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
30234
|
+
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
30235
|
+
|
|
29921
30236
|
const MESSAGE_CHANNEL_NAME = "message";
|
|
29922
30237
|
const SYSTEM_CHANNEL_NAME = "system";
|
|
29923
30238
|
const COMMS_CHANNEL_NAME = "comms";
|
|
@@ -90253,7 +90568,7 @@ function legacy(parser) {
|
|
|
90253
90568
|
return new LanguageSupport(StreamLanguage.define(parser));
|
|
90254
90569
|
}
|
|
90255
90570
|
function sql$1(dialectName) {
|
|
90256
|
-
return import('./index-
|
|
90571
|
+
return import('./index-Cq7so9Q9.js').then(m => m.sql({ dialect: m[dialectName] }));
|
|
90257
90572
|
}
|
|
90258
90573
|
/**
|
|
90259
90574
|
An array of language descriptions for known language packages.
|
|
@@ -90264,7 +90579,7 @@ const languages = [
|
|
|
90264
90579
|
name: "C",
|
|
90265
90580
|
extensions: ["c", "h", "ino"],
|
|
90266
90581
|
load() {
|
|
90267
|
-
return import('./index-
|
|
90582
|
+
return import('./index-DI5QHg2x.js').then(m => m.cpp());
|
|
90268
90583
|
}
|
|
90269
90584
|
}),
|
|
90270
90585
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -90272,7 +90587,7 @@ const languages = [
|
|
|
90272
90587
|
alias: ["cpp"],
|
|
90273
90588
|
extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
|
|
90274
90589
|
load() {
|
|
90275
|
-
return import('./index-
|
|
90590
|
+
return import('./index-DI5QHg2x.js').then(m => m.cpp());
|
|
90276
90591
|
}
|
|
90277
90592
|
}),
|
|
90278
90593
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -90292,7 +90607,7 @@ const languages = [
|
|
|
90292
90607
|
name: "Go",
|
|
90293
90608
|
extensions: ["go"],
|
|
90294
90609
|
load() {
|
|
90295
|
-
return import('./index-
|
|
90610
|
+
return import('./index-DM9oCkXH.js').then(m => m.go());
|
|
90296
90611
|
}
|
|
90297
90612
|
}),
|
|
90298
90613
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -90307,7 +90622,7 @@ const languages = [
|
|
|
90307
90622
|
name: "Java",
|
|
90308
90623
|
extensions: ["java"],
|
|
90309
90624
|
load() {
|
|
90310
|
-
return import('./index-
|
|
90625
|
+
return import('./index-CIfIw1LQ.js').then(m => m.java());
|
|
90311
90626
|
}
|
|
90312
90627
|
}),
|
|
90313
90628
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -90323,7 +90638,7 @@ const languages = [
|
|
|
90323
90638
|
alias: ["json5"],
|
|
90324
90639
|
extensions: ["json", "map"],
|
|
90325
90640
|
load() {
|
|
90326
|
-
return import('./index-
|
|
90641
|
+
return import('./index-D7jNrXVP.js').then(m => m.json());
|
|
90327
90642
|
}
|
|
90328
90643
|
}),
|
|
90329
90644
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -90337,14 +90652,14 @@ const languages = [
|
|
|
90337
90652
|
name: "LESS",
|
|
90338
90653
|
extensions: ["less"],
|
|
90339
90654
|
load() {
|
|
90340
|
-
return import('./index-
|
|
90655
|
+
return import('./index-d8vRrHr4.js').then(m => m.less());
|
|
90341
90656
|
}
|
|
90342
90657
|
}),
|
|
90343
90658
|
/*@__PURE__*/LanguageDescription.of({
|
|
90344
90659
|
name: "Liquid",
|
|
90345
90660
|
extensions: ["liquid"],
|
|
90346
90661
|
load() {
|
|
90347
|
-
return import('./index-
|
|
90662
|
+
return import('./index-DCh-Eobo.js').then(m => m.liquid());
|
|
90348
90663
|
}
|
|
90349
90664
|
}),
|
|
90350
90665
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -90370,7 +90685,7 @@ const languages = [
|
|
|
90370
90685
|
name: "PHP",
|
|
90371
90686
|
extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
|
|
90372
90687
|
load() {
|
|
90373
|
-
return import('./index-
|
|
90688
|
+
return import('./index-BJofTpil.js').then(m => m.php());
|
|
90374
90689
|
}
|
|
90375
90690
|
}),
|
|
90376
90691
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -90387,28 +90702,28 @@ const languages = [
|
|
|
90387
90702
|
extensions: ["BUILD", "bzl", "py", "pyw"],
|
|
90388
90703
|
filename: /^(BUCK|BUILD)$/,
|
|
90389
90704
|
load() {
|
|
90390
|
-
return import('./index-
|
|
90705
|
+
return import('./index-Zivk6fee.js').then(m => m.python());
|
|
90391
90706
|
}
|
|
90392
90707
|
}),
|
|
90393
90708
|
/*@__PURE__*/LanguageDescription.of({
|
|
90394
90709
|
name: "Rust",
|
|
90395
90710
|
extensions: ["rs"],
|
|
90396
90711
|
load() {
|
|
90397
|
-
return import('./index-
|
|
90712
|
+
return import('./index-BwoyZPjj.js').then(m => m.rust());
|
|
90398
90713
|
}
|
|
90399
90714
|
}),
|
|
90400
90715
|
/*@__PURE__*/LanguageDescription.of({
|
|
90401
90716
|
name: "Sass",
|
|
90402
90717
|
extensions: ["sass"],
|
|
90403
90718
|
load() {
|
|
90404
|
-
return import('./index-
|
|
90719
|
+
return import('./index-Di_-JfGf.js').then(m => m.sass({ indented: true }));
|
|
90405
90720
|
}
|
|
90406
90721
|
}),
|
|
90407
90722
|
/*@__PURE__*/LanguageDescription.of({
|
|
90408
90723
|
name: "SCSS",
|
|
90409
90724
|
extensions: ["scss"],
|
|
90410
90725
|
load() {
|
|
90411
|
-
return import('./index-
|
|
90726
|
+
return import('./index-Di_-JfGf.js').then(m => m.sass());
|
|
90412
90727
|
}
|
|
90413
90728
|
}),
|
|
90414
90729
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -90439,7 +90754,7 @@ const languages = [
|
|
|
90439
90754
|
name: "WebAssembly",
|
|
90440
90755
|
extensions: ["wat", "wast"],
|
|
90441
90756
|
load() {
|
|
90442
|
-
return import('./index-
|
|
90757
|
+
return import('./index-BHzFgL5N.js').then(m => m.wast());
|
|
90443
90758
|
}
|
|
90444
90759
|
}),
|
|
90445
90760
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -90447,7 +90762,7 @@ const languages = [
|
|
|
90447
90762
|
alias: ["rss", "wsdl", "xsd"],
|
|
90448
90763
|
extensions: ["xml", "xsl", "xsd", "svg"],
|
|
90449
90764
|
load() {
|
|
90450
|
-
return import('./index-
|
|
90765
|
+
return import('./index-C1eH0RCy.js').then(m => m.xml());
|
|
90451
90766
|
}
|
|
90452
90767
|
}),
|
|
90453
90768
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -90455,7 +90770,7 @@ const languages = [
|
|
|
90455
90770
|
alias: ["yml"],
|
|
90456
90771
|
extensions: ["yaml", "yml"],
|
|
90457
90772
|
load() {
|
|
90458
|
-
return import('./index-
|
|
90773
|
+
return import('./index-DY6zQP_F.js').then(m => m.yaml());
|
|
90459
90774
|
}
|
|
90460
90775
|
}),
|
|
90461
90776
|
// Legacy modes ported from CodeMirror 5
|
|
@@ -91251,13 +91566,13 @@ const languages = [
|
|
|
91251
91566
|
name: "Vue",
|
|
91252
91567
|
extensions: ["vue"],
|
|
91253
91568
|
load() {
|
|
91254
|
-
return import('./index-
|
|
91569
|
+
return import('./index-BTNGGXoa.js').then(m => m.vue());
|
|
91255
91570
|
}
|
|
91256
91571
|
}),
|
|
91257
91572
|
/*@__PURE__*/LanguageDescription.of({
|
|
91258
91573
|
name: "Angular Template",
|
|
91259
91574
|
load() {
|
|
91260
|
-
return import('./index-
|
|
91575
|
+
return import('./index-D9d5kqGf.js').then(m => m.angular());
|
|
91261
91576
|
}
|
|
91262
91577
|
})
|
|
91263
91578
|
];
|
|
@@ -162184,13 +162499,13 @@ const PanelToolbar = ({
|
|
|
162184
162499
|
align: "start",
|
|
162185
162500
|
justify: "start"
|
|
162186
162501
|
}, /*#__PURE__*/React__default.createElement(Label$3, {
|
|
162502
|
+
text: `Camera: ${targetFps ? `${targetFps} FPS` : "-"}`
|
|
162503
|
+
}), /*#__PURE__*/React__default.createElement(Label$3, {
|
|
162187
162504
|
text: `Network: ${metrics?.incomingMessagesFps ? `${metrics.incomingMessagesFps} FPS` : "-"}`
|
|
162188
162505
|
}), /*#__PURE__*/React__default.createElement(Label$3, {
|
|
162189
162506
|
text: `Decoding: ${metrics?.decodedMessagesFps ? `${metrics.decodedMessagesFps} FPS` : "-"}`
|
|
162190
162507
|
}), /*#__PURE__*/React__default.createElement(Label$3, {
|
|
162191
162508
|
text: `Rendering: ${renderedFps ? `${Math.round(renderedFps / 2)} FPS` : "-"}`
|
|
162192
|
-
}), /*#__PURE__*/React__default.createElement(Label$3, {
|
|
162193
|
-
text: `Camera: ${targetFps ? `${targetFps} FPS` : "-"}`
|
|
162194
162509
|
}), /*#__PURE__*/React__default.createElement(Label$3, {
|
|
162195
162510
|
text: `Frontend Delay: ${eventLoopDelay ? `${Math.ceil(eventLoopDelay)} ms` : "-"}`
|
|
162196
162511
|
}))), !disableAnnotations && kind === "image" && /*#__PURE__*/React__default.createElement(DropdownMenu, {
|
|
@@ -162329,7 +162644,7 @@ function createRenderDelaySampler() {
|
|
|
162329
162644
|
};
|
|
162330
162645
|
}
|
|
162331
162646
|
|
|
162332
|
-
const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-
|
|
162647
|
+
const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-DAXpEznJ.js'));
|
|
162333
162648
|
const ImagePanelBody = ({
|
|
162334
162649
|
topic,
|
|
162335
162650
|
frameRenderedEvent
|
|
@@ -162395,7 +162710,7 @@ const ImagePanel = /*#__PURE__*/React__default.memo(function ImagePanel(props) {
|
|
|
162395
162710
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
162396
162711
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
162397
162712
|
|
|
162398
|
-
const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-
|
|
162713
|
+
const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-BPWE58mB.js'));
|
|
162399
162714
|
const PointCloudPanelBody = ({
|
|
162400
162715
|
topic
|
|
162401
162716
|
}) => {
|
|
@@ -162413,8 +162728,8 @@ const PointCloudPanelBody = ({
|
|
|
162413
162728
|
distance: -2000,
|
|
162414
162729
|
perspective: true,
|
|
162415
162730
|
phi: 0,
|
|
162416
|
-
target: [
|
|
162417
|
-
targetOffset: [
|
|
162731
|
+
target: [-2000, 0, 0],
|
|
162732
|
+
targetOffset: [-500, -500, 0],
|
|
162418
162733
|
targetOrientation: [0, 0, 0, 1],
|
|
162419
162734
|
thetaOffset: 0,
|
|
162420
162735
|
fovy: 45,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { aq as styleTags, ar as tags, aN as javascriptLanguage, as as LRLanguage, at as LanguageSupport, av as LRParser, aK as html, aL as parseMixed, au as ExternalTokenizer } from './index-
|
|
1
|
+
import { aq as styleTags, ar as tags, aN as javascriptLanguage, as as LRLanguage, at as LanguageSupport, av as LRParser, aK as html, aL as parseMixed, au as ExternalTokenizer } from './index-D8jKQuGu.js';
|
|
2
2
|
import './FoxgloveServer-DiLI7KZU.js';
|
|
3
3
|
import 'protobufjs/minimal';
|
|
4
4
|
import 'ms';
|