Keyhelm
Pannello Diffusore Urban in Ayous
Altezza variabile dei cubotti: da 20 mm a 70 mm Dimensione totale pannello: 495 x 495 mm (±10 mm) Spessore complessivo variabile: 20–60 mm (±5 mm) Materiale: legno massello di Ayous Colore: legno naturale (non trattato o protetto con finitura) o vernicaito .viewer3d-button { margin: 2rem auto; display: block; padding: 10px 20px; background-color: #333; color: white; border: none; font-size: 16px; cursor: pointer; border-radius: 6px; } .viewer3d-lightbox { display: none; position: fixed; z-index: 9999; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.8); justify-content: center; align-items: center; } .viewer3d-lightbox.active { display: flex; } .viewer3d-container { position: relative; width: 80vw; height: 80vh; max-width: 1000px; background: #eee; box-shadow: 0 0 30px rgba(0, 0, 0, 0.3); } .viewer3d-container canvas { width: 100% !important; height: 100% !important; display: block; } .viewer3d-close { position: absolute; top: 10px; right: 10px; z-index: 1000; background: #fff; border: none; font-size: 18px; cursor: pointer; padding: 5px 10px; border-radius: 4px; } Apri Visualizzatore 3D × import * as THREE from 'https://esm.sh/three@0.155.0'; import { GLTFLoader } from 'https://esm.sh/three@0.155.0/examples/jsm/loaders/GLTFLoader.js'; import { OrbitControls } from 'https://esm.sh/three@0.155.0/examples/jsm/controls/OrbitControls.js'; const openBtn = document.getElementById('openViewer3D'); const lightbox = document.getElementById('lightbox3D'); const closeBtn = document.getElementById('closeViewer3D'); const container = document.getElementById('viewerContainer3D'); let scene, camera, renderer, controls; openBtn.onclick = () => { lightbox.classList.add('active'); if (!renderer) initViewer(); }; closeBtn.onclick = () => { lightbox.classList.remove('active'); }; function initViewer() { scene = new THREE.Scene(); scene.background = new THREE.Color(0xf0f0f0); const aspect = container.clientWidth / container.clientHeight; camera = new THREE.PerspectiveCamera(60, aspect, 0.1, 100); camera.position.set(2, 2, 5); renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setPixelRatio(window.devicePixelRatio); renderer.setSize(container.clientWidth, container.clientHeight); renderer.outputEncoding = THREE.sRGBEncoding; renderer.toneMapping = THREE.ACESFilmicToneMapping; renderer.toneMappingExposure = 1.2; renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFSoftShadowMap; container.appendChild(renderer.domElement); // Luci scene.add(new THREE.AmbientLight(0xffffff, 0.3)); const light1 = new THREE.DirectionalLight(0xffffff, 0.6); light1.position.set(5, 5, 5); light1.castShadow = true; scene.add(light1); const light2 = new THREE.DirectionalLight(0xffffff, 1.2); light2.position.set(-5, 8, 5); light2.castShadow = true; scene.add(light2); const lightBack = new THREE.DirectionalLight(0xffffff, 0.15); lightBack.position.set(0, 5, -5); scene.add(lightBack); // Controlli orbitali controls = new OrbitControls(camera, renderer.domElement); controls.enableDamping = true; controls.dampingFactor = 0.05; // Caricamento texture const textureLoader = new THREE.TextureLoader(); const woodTexture = textureLoader.load('http://www.keyhelmshop.it/cdn/dl_view.php/texture-legno-ayous-00.jpg?documentID=6819f188be7ea07d931f233e'); woodTexture.encoding = THREE.sRGBEncoding; const woodMaterial = new THREE.MeshStandardMaterial({ map: woodTexture, roughness: 0.6, metalness: 0.1 }); // Caricamento modello const loader = new GLTFLoader(); loader.load('http://www.keyhelmshop.it/cdn/dl_view.php/modello-diffusore-urban.glb?documentID=681a11f75fb8e0b732b2e860', function (gltf) { const model = gltf.scene; model.traverse(child => { if (child.isMesh) { child.material = woodMaterial; child.castShadow = true; child.receiveShadow = true; } }); // Centra il modello const bbox = new THREE.Box3().setFromObject(model); const center = bbox.getCenter(new THREE.Vector3()); model.position.sub(center); scene.add(model); // Ricalcola bounding box dopo il posizionamento const finalBox = new THREE.Box3().setFromObject(model); const minY = finalBox.min.y; // Piano d'ombra esattamente sotto il modello const ground = new THREE.Mesh( new THREE.PlaneGeometry(20, 20), new THREE.ShadowMaterial({ opacity: 0.3 }) ); ground.rotation.x = -Math.PI / 2; ground.position.y = minY - 0.01; ground.receiveShadow = true; scene.add(ground); // Inquadramento camera const size = finalBox.getSize(new THREE.Vector3()).length(); const d = size * 0.4; camera.position.set(center.x + d, center.y + d, center.z + d); camera.lookAt(0, 0, 0); controls.target.set(0, 0, 0); controls.update(); }); animate(); } function animate() { requestAnimationFrame(animate); controls?.update(); renderer?.render(scene, camera); }
€ 85,00
Prodotto aggiunto al carrello.
Vai al carrelloQuantità massima acquistabile per il prodotto raggiunta
Vai al carrello
Pannello Diffusore Acustico Skyline in Legno di Ayous
Altezza variabile dei listelli: da 10 mm a 40 mm Dimensione totale pannello: 525 x 525 mm (±10 mm) Spessore complessivo variabile: 60–90 mm (±5 mm) Materiale: legno massello di Ayous Peso: circa 5-6 kg Colore: legno naturale (non trattato o protetto con finitura) o vernicaito .viewer3d-button { margin: 2rem auto; display: block; padding: 10px 20px; background-color: #333; color: white; border: none; font-size: 16px; cursor: pointer; border-radius: 6px; } .viewer3d-lightbox { display: none; position: fixed; z-index: 9999; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.8); justify-content: center; align-items: center; } .viewer3d-lightbox.active { display: flex; } .viewer3d-container { position: relative; width: 80vw; height: 80vh; max-width: 1000px; background: #eee; box-shadow: 0 0 30px rgba(0, 0, 0, 0.3); } .viewer3d-container canvas { width: 100% !important; height: 100% !important; display: block; } .viewer3d-close { position: absolute; top: 10px; right: 10px; z-index: 1000; background: #fff; border: none; font-size: 18px; cursor: pointer; padding: 5px 10px; border-radius: 4px; } Apri Visualizzatore 3D × import * as THREE from 'https://esm.sh/three@0.155.0'; import { GLTFLoader } from 'https://esm.sh/three@0.155.0/examples/jsm/loaders/GLTFLoader.js'; import { OrbitControls } from 'https://esm.sh/three@0.155.0/examples/jsm/controls/OrbitControls.js'; const openBtn = document.getElementById('openViewer3D'); const lightbox = document.getElementById('lightbox3D'); const closeBtn = document.getElementById('closeViewer3D'); const container = document.getElementById('viewerContainer3D'); let scene, camera, renderer, controls; openBtn.onclick = () => { lightbox.classList.add('active'); if (!renderer) initViewer(); }; closeBtn.onclick = () => { lightbox.classList.remove('active'); }; function initViewer() { scene = new THREE.Scene(); scene.background = new THREE.Color(0xf0f0f0); const aspect = container.clientWidth / container.clientHeight; camera = new THREE.PerspectiveCamera(60, aspect, 0.1, 100); camera.position.set(2, 2, 5); renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setPixelRatio(window.devicePixelRatio); renderer.setSize(container.clientWidth, container.clientHeight); renderer.outputEncoding = THREE.sRGBEncoding; renderer.toneMapping = THREE.ACESFilmicToneMapping; renderer.toneMappingExposure = 1.2; renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFSoftShadowMap; container.appendChild(renderer.domElement); // Luci scene.add(new THREE.AmbientLight(0xffffff, 0.3)); const light1 = new THREE.DirectionalLight(0xffffff, 0.6); light1.position.set(5, 5, 5); light1.castShadow = true; scene.add(light1); const light2 = new THREE.DirectionalLight(0xffffff, 1.2); light2.position.set(-5, 8, 5); light2.castShadow = true; scene.add(light2); const lightBack = new THREE.DirectionalLight(0xffffff, 0.15); lightBack.position.set(0, 5, -5); scene.add(lightBack); // Controlli orbitali controls = new OrbitControls(camera, renderer.domElement); controls.enableDamping = true; controls.dampingFactor = 0.05; // Caricamento texture const textureLoader = new THREE.TextureLoader(); const woodTexture = textureLoader.load('http://www.keyhelmshop.it/cdn/dl_view.php/texture-legno-ayous-00.jpg?documentID=6819f188be7ea07d931f233e'); woodTexture.encoding = THREE.sRGBEncoding; const woodMaterial = new THREE.MeshStandardMaterial({ map: woodTexture, roughness: 0.6, metalness: 0.1 }); // Caricamento modello const loader = new GLTFLoader(); loader.load('http://www.keyhelmshop.it/cdn/dl_view.php/modello-diffusore-skyline.glb?documentID=681cc0fabe7ea00a3f5a1f18', function (gltf) { const model = gltf.scene; model.traverse(child => { if (child.isMesh) { child.material = woodMaterial; child.castShadow = true; child.receiveShadow = true; } }); // Centra il modello const bbox = new THREE.Box3().setFromObject(model); const center = bbox.getCenter(new THREE.Vector3()); model.position.sub(center); scene.add(model); // Ricalcola bounding box dopo il posizionamento const finalBox = new THREE.Box3().setFromObject(model); const minY = finalBox.min.y; // Piano d'ombra esattamente sotto il modello const ground = new THREE.Mesh( new THREE.PlaneGeometry(20, 20), new THREE.ShadowMaterial({ opacity: 0.3 }) ); ground.rotation.x = -Math.PI / 2; ground.position.y = minY - 0.01; ground.receiveShadow = true; scene.add(ground); // Inquadramento camera const size = finalBox.getSize(new THREE.Vector3()).length(); const d = size * 0.4; camera.position.set(center.x + d, center.y + d, center.z + d); camera.lookAt(0, 0, 0); controls.target.set(0, 0, 0); controls.update(); }); animate(); } function animate() { requestAnimationFrame(animate); controls?.update(); renderer?.render(scene, camera); }
€ 85,00
Prodotto aggiunto al carrello.
Vai al carrelloQuantità massima acquistabile per il prodotto raggiunta
Vai al carrelloInserisci la partita IVA se non disponi di codice fiscale o se il codice fiscale azienda corrisponde alla partita IVA.