import * as THREE from "three"; /** * Studio floor — shadow-catching ground plane for Studio mode. * * Uses ShadowMaterial which is fully transparent except where shadows * are cast, providing a natural grounding effect without obscuring * the background (like KeyShot's Ground material or Fusion 360's * ground plane). * * The floor is added to the scene via its `group` property. * Shadow plane visibility is toggled via `setShadowsEnabled()`. */ declare class StudioFloor { /** The Group to add to the scene. Contains the shadow plane. */ readonly group: THREE.Group; /** Shadow-receiving plane (ShadowMaterial) */ private _shadowPlane; /** Whether shadows are currently enabled */ private _shadowsEnabled; constructor(); /** * Create or recreate the floor for the given scene bounds. * * Call this when the bounding box changes (new shapes loaded). * * @param zPosition - Z coordinate for the floor (typically bbox.min.z) * @param sceneSize - Approximate scene size (max extent) for sizing the floor */ configure(zPosition: number, sceneSize: number): void; /** * Toggle shadow plane visibility. * * @param enabled - Whether to show the shadow plane */ setShadowsEnabled(enabled: boolean): void; /** * Set the ground shadow opacity (how dark the shadow appears on the floor). * This supplements `light.shadow.intensity` which controls shadow darkness * on lit materials; the ground plane ShadowMaterial needs its own opacity. * * @param intensity - Shadow intensity 0-1 */ setShadowIntensity(intensity: number): void; /** Dispose all GPU resources. */ dispose(): void; /** * Create a shadow-receiving plane at the floor position. */ private _createShadowPlane; /** Remove and dispose the current shadow plane. */ private _clearCurrent; } export { StudioFloor };