From 270b98b574c5bfd201087099914319a8adfaa588 Mon Sep 17 00:00:00 2001 From: "Diego F. Goberna" Date: Mon, 26 May 2025 23:53:49 +0200 Subject: [PATCH] Set fireplace as background in the environment example --- examples/envmap/index.html | 59 +++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/examples/envmap/index.html b/examples/envmap/index.html index 75a8e7d..a83e9af 100644 --- a/examples/envmap/index.html +++ b/examples/envmap/index.html @@ -4,19 +4,24 @@ Forge • Environment Mapping @@ -40,36 +45,39 @@ const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); - + camera.position.y = 0.5; const renderer = new THREE.WebGLRenderer(); - renderer.setClearColor(new THREE.Color(0x3b5272), 1.0); + renderer.setClearColor(new THREE.Color(0x1b2037), 1.0); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement) // Explicitly create a ForgeRenderer to render environment maps const forge = new ForgeRenderer({ renderer }); - const background = new SplatMesh({ url: "https://d28zzqy0iyovbz.cloudfront.net/a58b478d/scene.compressed.ply" }); - - background.position.set(5, -10, -10); + const splatURL = await getAssetFileURL("fireplace.spz"); + const background = new SplatMesh({ url: splatURL }); background.quaternion.set(1, 0, 0, 0); + background.position.set(0.5, 0, -1); + background.scale.setScalar(0.5); scene.add(background); + + const background2 = new SplatMesh({ url: splatURL }); + background2.quaternion.set(1, 0, 0, 0); + background2.rotation.y = Math.PI; + background2.position.set(-0.5, 0, 0.0); + background2.scale.setScalar(0.5); + scene.add(background2); + // Make sure background is loaded before rendering env map await background.initialized; - - // Add light to make the duck pop out a bit more - const rectLight = new THREE.RectAreaLight(0xffffff, 3, 2, 2); - rectLight.position.set(0, 1, 1); - rectLight.lookAt(0, 0, 0); - scene.add(rectLight) + await background2.initialized; // Add rubber duck const gltfLoader = new GLTFLoader(); const modelURL = await getAssetFileURL('rubberduck.glb'); const gltf = await gltfLoader.loadAsync(modelURL); const duck = gltf.scene; - duck.position.set(0, -0.2, -1); - duck.scale.set(3, 3, 3); + duck.position.set(0, 0.45, -0.4); scene.add(duck); let renderedEnvMap = false; @@ -88,7 +96,7 @@ scene, // World center to render from worldCenter: duck.position, - // Hide the donut so we don't obscure the environment + // Hide the duck so we don't obscure the environment hideObjects: [duck], // Not needed in normal use, guards against "first render" issues update: true, @@ -98,8 +106,8 @@ // Set some reflectivity in the materials of the duck obj.material.envMap = envMap; obj.material.original_color = obj.material.color.clone(); - obj.material.metalness = 0.2; - obj.material.roughness = 0.1; + obj.material.metalness = 0.0; + obj.material.roughness = 0.2; } }); } @@ -109,12 +117,11 @@ window.toggleMetal = function toggleMetal(el) { const metal = el.checked; for (let obj of duck.children) { - obj.material.color.set(metal ? 0xAAAAAA : obj.material.original_color); - obj.material.metalness = metal ? 1.0 : 0.2; - obj.material.roughness = metal ? 0.02 : 0.1; + obj.material.metalness = metal ? 1.0 : 0.0; + obj.material.roughness = metal ? 0.02 : 0.2; } } - \ No newline at end of file +