import { TransformProps } from '../../three_transforms/interfaces'; import { VuerProps } from '../../vuer/interfaces'; import * as THREE from "three"; export interface BakedPointCloudData { positions: Float32Array; colors: Float32Array; depths: Float32Array; pointCount: number; boundingBox: THREE.Box3; } /** * Bake depth + color textures into a point cloud geometry. * This is done once at load time, trading memory for render performance. */ export declare function bakePointCloud(depthData: Float32Array, colorData: Uint8Array, width: number, height: number, options?: { depthUnit?: number; depthOffset?: number; invertDepth?: boolean; depthMin?: number; depthMax?: number; stride?: number; edgeFilter?: boolean; edgeThreshold?: number; /** Principal point X in pixels (default: image center = width/2) */ cx?: number; /** Principal point Y in pixels (default: image center = height/2) */ cy?: number; }): Promise; export interface InPlaceDepthPointCloudProps extends TransformProps, VuerProps { /** * Pre-baked point cloud data (alternative to depth/rgb URLs) * @dial-ignore */ data?: BakedPointCloudData; /** * Depth image URL (16-bit PNG) - alternative to data prop * @dial data * @dial-dtype string */ depth?: string; /** * RGB image URL (optional - uses depth for grayscale if not provided) * @dial data * @dial-dtype string */ rgb?: string; /** * Vertical field of view in degrees (default: 58° for RealSense D435) * @dial config * @dial-dtype number * @dial-min 10 * @dial-max 180 * @dial-step 1 * @dial-default 58 */ fov?: number; /** * Depth scale factor - converts raw depth values to meters (default: 0.001) * @dial config * @dial-dtype number * @dial-min 0.0001 * @dial-max 1 * @dial-step 0.0001 * @dial-default 0.001 */ depthUnit?: number; /** * Point size (default: 2.0) * @dial visualization * @dial-dtype number * @dial-min 0.1 * @dial-max 20 * @dial-step 0.1 * @dial-default 2.0 */ pointSize?: number; /** * Screen-space sizing: true = constant pixel size, false = size scales with distance (default: true) * @dial visualization * @dial-dtype boolean * @dial-default true */ screenSpaceSizing?: boolean; /** * Colormap name: "turbo", "viridis", "inferno", "jet", or undefined for RGB * @dial visualization * @dial-dtype string */ cmap?: string; /** * Color mode for visualization (default: "depth") * @dial visualization * @dial-dtype string * @dial-options ["depth", "camZ", "camDist", "localY", "worldY"] * @dial-default "depth" */ colorMode?: string; /** * Depth min for visualization (default: 0.1) * @dial visualization * @dial-dtype number * @dial-step 0.1 * @dial-default 0.1 */ depthMin?: number; /** * Depth max for visualization (default: 50) * @dial visualization * @dial-dtype number * @dial-step 0.1 * @dial-default 50 */ depthMax?: number; /** * Height min for visualization (default: -2) * @dial visualization * @dial-dtype number * @dial-step 0.1 * @dial-default -2 */ heightMin?: number; /** * Height max for visualization (default: 2) * @dial visualization * @dial-dtype number * @dial-step 0.1 * @dial-default 2 */ heightMax?: number; /** * Minimum world Y for filtering - points below this are discarded (default: -Infinity) * @dial filtering * @dial-dtype number * @dial-step 0.1 */ minY?: number; /** * Maximum world Y for filtering - points above this are discarded (default: Infinity) * @dial filtering * @dial-dtype number * @dial-step 0.1 */ maxY?: number; /** * Principal point X in pixels (default: image center = width/2) * @dial config * @dial-dtype number * @dial-step 1 */ cx?: number; /** * Principal point Y in pixels (default: image center = height/2) * @dial config * @dial-dtype number * @dial-step 1 */ cy?: number; /** Additional props passed to the underlying points element */ [key: string]: unknown; } export declare function InPlaceDepthPointCloud({ data: dataProp, depth, rgb, fov, depthUnit, position, rotation, scale, pointSize, screenSpaceSizing, cmap, colorMode, depthMin, depthMax, heightMin, heightMax, minY, maxY, cx, cy, ...rest }: InPlaceDepthPointCloudProps): import("react/jsx-runtime").JSX.Element;