import type { Scene } from "./_helpers"; export const productShowroom: Scene = { name: "Product Showroom", description: "Sleek glass torus knot on a pedestal with studio lighting, reflections, and contact shadows", spec: { root: "scene", elements: { scene: { type: "Group", props: { position: null, rotation: null, scale: null }, children: [ "camera", "env", "backdrop", "ambient", "key-light", "fill-light", "rim-light", "accent-light", "pedestal", "hero-float", "accent1", "accent2", "accent3", "floor", "shadows", "sparkles", "fx", "controls", ], }, camera: { type: "PerspectiveCamera", props: { position: [0, 2, 6], rotation: null, scale: null, fov: 40, near: null, far: null, makeDefault: true, }, children: [], }, env: { type: "Environment", props: { preset: "studio", background: false, blur: 0.5, intensity: 0.8, }, children: [], }, backdrop: { type: "Backdrop", props: { position: [0, -0.5, -3], rotation: null, scale: [25, 10, 8], floor: 0.3, segments: 30, receiveShadow: true, }, children: [], }, ambient: { type: "AmbientLight", props: { color: "#e8e0f0", intensity: 0.25 }, children: [], }, "key-light": { type: "SpotLight", props: { position: [5, 8, 3], rotation: null, scale: null, color: "#ffffff", intensity: 80, distance: 25, decay: null, angle: 0.5, penumbra: 0.8, castShadow: true, }, children: [], }, "fill-light": { type: "SpotLight", props: { position: [-4, 5, 2], rotation: null, scale: null, color: "#aaccff", intensity: 30, distance: 20, decay: null, angle: 0.6, penumbra: 1, castShadow: false, }, children: [], }, "rim-light": { type: "SpotLight", props: { position: [0, 3, -5], rotation: null, scale: null, color: "#ffddcc", intensity: 40, distance: 15, decay: null, angle: 0.4, penumbra: 0.5, castShadow: false, }, children: [], }, "accent-light": { type: "PointLight", props: { position: [0, 0.5, 0], rotation: null, scale: null, color: "#ffffff", intensity: 5, distance: 4, decay: null, castShadow: null, }, children: [], }, pedestal: { type: "Group", props: { position: [0, 0, 0], rotation: null, scale: null }, children: ["ped-base", "ped-column", "ped-top"], }, "ped-base": { type: "Cylinder", props: { position: [0, 0.05, 0], rotation: null, scale: null, radiusTop: 1.2, radiusBottom: 1.3, height: 0.1, radialSegments: 48, castShadow: null, receiveShadow: null, material: { color: "#1a1a1a", metalness: 0.9, roughness: 0.1, }, }, children: [], }, "ped-column": { type: "Cylinder", props: { position: [0, 0.45, 0], rotation: null, scale: null, radiusTop: 0.6, radiusBottom: 0.8, height: 0.7, radialSegments: 48, castShadow: null, receiveShadow: null, material: { color: "#111111", metalness: 0.95, roughness: 0.05, }, }, children: [], }, "ped-top": { type: "Cylinder", props: { position: [0, 0.85, 0], rotation: null, scale: null, radiusTop: 0.9, radiusBottom: 0.7, height: 0.1, radialSegments: 48, castShadow: null, receiveShadow: null, material: { color: "#1a1a1a", metalness: 0.9, roughness: 0.1, }, }, children: [], }, "hero-float": { type: "Float", props: { position: [0, 2.2, 0], rotation: null, scale: null, speed: 1.5, rotationIntensity: 0.3, floatIntensity: 0.4, enabled: true, }, children: ["hero-spin"], }, "hero-spin": { type: "Spin", props: { position: null, rotation: null, scale: null, speed: 0.3, axis: "y", }, children: ["hero-object"], }, "hero-object": { type: "TorusKnot", props: { position: [0, 0, 0], rotation: null, scale: null, castShadow: null, receiveShadow: null, radius: 0.6, tube: 0.22, p: 2, q: 3, tubularSegments: 128, radialSegments: 24, material: { color: "#ffffff", metalness: 1, roughness: 0, }, }, children: [], }, accent1: { type: "Float", props: { position: [-1.5, 1.8, 0.5], rotation: null, scale: null, speed: 2, rotationIntensity: 0.5, floatIntensity: 1.2, enabled: true, }, children: ["accent1-body"], }, "accent1-body": { type: "GlassSphere", props: { position: null, rotation: null, scale: null, castShadow: null, receiveShadow: null, radius: 0.15, widthSegments: null, heightSegments: null, color: "#eeeeff", transmission: 1, thickness: 0.3, roughness: 0, chromaticAberration: 0.06, ior: 1.5, distortion: null, distortionScale: null, temporalDistortion: null, samples: 6, resolution: 128, }, children: [], }, accent2: { type: "Float", props: { position: [1.2, 2.5, -0.8], rotation: null, scale: null, speed: 1.8, rotationIntensity: 0.4, floatIntensity: 1.5, enabled: true, }, children: ["accent2-body"], }, "accent2-body": { type: "GlassSphere", props: { position: null, rotation: null, scale: null, castShadow: null, receiveShadow: null, radius: 0.1, widthSegments: null, heightSegments: null, color: "#ffeeff", transmission: 1, thickness: 0.2, roughness: 0, chromaticAberration: 0.08, ior: 1.6, distortion: null, distortionScale: null, temporalDistortion: null, samples: 6, resolution: 128, }, children: [], }, accent3: { type: "Float", props: { position: [0.8, 1.5, 1.2], rotation: null, scale: null, speed: 2.2, rotationIntensity: 0.6, floatIntensity: 0.8, enabled: true, }, children: ["accent3-body"], }, "accent3-body": { type: "GlassSphere", props: { position: null, rotation: null, scale: null, castShadow: null, receiveShadow: null, radius: 0.12, widthSegments: null, heightSegments: null, color: "#eeffee", transmission: 1, thickness: 0.25, roughness: 0, chromaticAberration: 0.05, ior: 1.4, distortion: null, distortionScale: null, temporalDistortion: null, samples: 6, resolution: 128, }, children: [], }, floor: { type: "ReflectorPlane", props: { position: [0, -0.5, 0], rotation: [-1.5708, 0, 0], scale: null, width: 25, height: 25, color: "#0a0a0a", resolution: 1024, blur: 300, mirror: 0.6, mixBlur: 8, mixStrength: 2, depthScale: 0.2, metalness: 0.8, roughness: 0.3, }, children: [], }, shadows: { type: "ContactShadows", props: { position: [0, -0.49, 0], rotation: null, scale: null, opacity: 0.5, width: 10, height: 10, blur: 2, near: null, far: 5, smooth: true, resolution: 512, frames: null, color: "#000000", }, children: [], }, sparkles: { type: "Sparkles", props: { position: [0, 2, 0], rotation: null, scale: [6, 4, 6], count: 30, speed: 0.05, opacity: 0.15, color: "#ffffff", size: 0.3, noise: 0.5, }, children: [], }, fx: { type: "EffectComposer", props: { enabled: true, multisampling: 8 }, children: ["bloom", "vignette"], }, bloom: { type: "Bloom", props: { intensity: 0.5, luminanceThreshold: 0.3, luminanceSmoothing: 0.4, mipmapBlur: true, }, children: [], }, vignette: { type: "Vignette", props: { offset: 0.3, darkness: 0.5 }, children: [], }, controls: { type: "OrbitControls", props: { enableDamping: true, dampingFactor: null, enableZoom: null, enablePan: null, enableRotate: null, minDistance: 3, maxDistance: 12, minPolarAngle: 0.3, maxPolarAngle: 1.4, autoRotate: true, autoRotateSpeed: 1, target: [0, 1.5, 0], }, children: [], }, }, }, };