diff --git a/packages/frontend/assets/room/objects/aquarium/aquarium.blend b/packages/frontend/assets/room/objects/aquarium/aquarium.blend index 1daa50f394..f0592f938b 100644 Binary files a/packages/frontend/assets/room/objects/aquarium/aquarium.blend and b/packages/frontend/assets/room/objects/aquarium/aquarium.blend differ diff --git a/packages/frontend/assets/room/objects/aquarium/aquarium.glb b/packages/frontend/assets/room/objects/aquarium/aquarium.glb index 5f07323d4c..c5dcf8e9fe 100644 Binary files a/packages/frontend/assets/room/objects/aquarium/aquarium.glb and b/packages/frontend/assets/room/objects/aquarium/aquarium.glb differ diff --git a/packages/frontend/assets/room/objects/aquarium/textures/gravel.png b/packages/frontend/assets/room/objects/aquarium/textures/gravel.png new file mode 100644 index 0000000000..962ec8094c Binary files /dev/null and b/packages/frontend/assets/room/objects/aquarium/textures/gravel.png differ diff --git a/packages/frontend/assets/room/objects/bed/bed.blend b/packages/frontend/assets/room/objects/bed/bed.blend index 902588634c..6e0e20757c 100644 Binary files a/packages/frontend/assets/room/objects/bed/bed.blend and b/packages/frontend/assets/room/objects/bed/bed.blend differ diff --git a/packages/frontend/assets/room/objects/bed/bed.glb b/packages/frontend/assets/room/objects/bed/bed.glb index a889ec9370..69198b2af6 100644 Binary files a/packages/frontend/assets/room/objects/bed/bed.glb and b/packages/frontend/assets/room/objects/bed/bed.glb differ diff --git a/packages/frontend/assets/room/objects/bed/textures/blanket.png b/packages/frontend/assets/room/objects/bed/textures/blanket.png new file mode 100644 index 0000000000..b90ef83858 Binary files /dev/null and b/packages/frontend/assets/room/objects/bed/textures/blanket.png differ diff --git a/packages/frontend/assets/room/objects/book/book.af b/packages/frontend/assets/room/objects/book/book.af index d06ac9155d..8bde9a77af 100644 Binary files a/packages/frontend/assets/room/objects/book/book.af and b/packages/frontend/assets/room/objects/book/book.af differ diff --git a/packages/frontend/src/utility/room/engine.ts b/packages/frontend/src/utility/room/engine.ts index d4d4195281..e3a5a8acb8 100644 --- a/packages/frontend/src/utility/room/engine.ts +++ b/packages/frontend/src/utility/room/engine.ts @@ -400,6 +400,7 @@ export class RoomEngine { private envMapOutdoor: BABYLON.CubeTexture; private reflectionProbe: BABYLON.ReflectionProbe; private roomLight: BABYLON.SpotLight; + private enableReflectionProbe = false; constructor(def: RoomDef, options: { canvas: HTMLCanvasElement; @@ -427,13 +428,23 @@ export class RoomEngine { this.envMapOutdoor = BABYLON.CubeTexture.CreateFromPrefilteredData(this.time === 2 ? '/client-assets/room/outdoor-night.env' : '/client-assets/room/outdoor-dayw.env', this.scene); this.envMapOutdoor.level = this.time === 0 ? 0.5 : this.time === 1 ? 0.3 : 0.1; - //this.reflectionProbe = new BABYLON.ReflectionProbe('reflectionProbe', 512, this.scene); - //this.reflectionProbe.refreshRate = 200; + if (this.enableReflectionProbe) { + this.reflectionProbe = new BABYLON.ReflectionProbe('reflectionProbe', 512, this.scene); + this.reflectionProbe.position = new BABYLON.Vector3(0, 100/*cm*/, 0); + this.reflectionProbe.refreshRate = 200; + } + + //const sphere = BABYLON.MeshBuilder.CreateSphere('', { diameter: 50/*cm*/ }, this.scene); + //sphere.position = new BABYLON.Vector3(0, 100/*cm*/, 0); + //const mat = new BABYLON.PBRMaterial('', this.scene); + //mat.metallic = 1; + //mat.roughness = 0; + //mat.reflectionTexture = this.envMapIndoor; + //mat.reflectionTexture = this.reflectionProbe.cubeTexture; + //sphere.material = mat; this.scene.collisionsEnabled = true; - //new MmdOutlineRenderer(this.scene); - this.camera = new BABYLON.UniversalCamera('camera', new BABYLON.Vector3(0, 130/*cm*/, 0/*cm*/), this.scene); this.camera.inputs.removeByType('FreeCameraKeyboardMoveInput'); this.camera.inputs.add(new HorizontalCameraKeyboardMoveInput(this.camera)); @@ -801,6 +812,7 @@ export class RoomEngine { roomObj.meshes[0].scaling = new BABYLON.Vector3(-100, 100, 100); roomObj.meshes[0].bakeCurrentTransformIntoVertices(); for (const mesh of roomObj.meshes) { + console.log('room mesh:', mesh.name); //if (mesh.name === '__root__') continue; if (mesh.name.startsWith('_COLLISION_')) { mesh.receiveShadows = false; @@ -816,10 +828,11 @@ export class RoomEngine { this.shadowGenerator1.addShadowCaster(mesh); this.shadowGenerator2.addShadowCaster(mesh); //if (mesh.material) (mesh.material as BABYLON.PBRMaterial).ambientColor = new BABYLON.Color3(1, 1, 1); - if (mesh.material) (mesh.material as BABYLON.PBRMaterial).reflectionTexture = this.envMapIndoor; - //if (mesh.material) (mesh.material as BABYLON.PBRMaterial).reflectionTexture = this.reflectionProbe.cubeTexture; + if (mesh.material) { + (mesh.material as BABYLON.PBRMaterial).reflectionTexture = this.enableReflectionProbe ? this.reflectionProbe.cubeTexture : this.envMapIndoor; + } - //this.reflectionProbe.renderList!.push(mesh); + if (this.enableReflectionProbe) this.reflectionProbe.renderList!.push(mesh); } } @@ -854,10 +867,9 @@ export class RoomEngine { mesh.outlineWidth = 0.003; mesh.outlineColor = new BABYLON.Color3(1, 0, 0); //if (mesh.material) (mesh.material as BABYLON.PBRMaterial).ambientColor = new BABYLON.Color3(0.2, 0.2, 0.2); - if (mesh.material) (mesh.material as BABYLON.PBRMaterial).reflectionTexture = this.envMapIndoor; - //if (mesh.material) (mesh.material as BABYLON.PBRMaterial).reflectionTexture = this.reflectionProbe.cubeTexture; - - //this.reflectionProbe.renderList!.push(mesh); + if (mesh.material) { + (mesh.material as BABYLON.PBRMaterial).reflectionTexture = this.enableReflectionProbe ? this.reflectionProbe.cubeTexture : this.envMapIndoor; + } } this.objectMeshs.set(o.id, obj.meshes[0]);