house map
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

56 lines
1.4 KiB

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
const home = new THREE.Group();
scene.add(home)
const renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
const light = new THREE.AmbientLight(0xFFAAAA, 1)
light.position.z = 100
scene.add(light)
// back the camera up
camera.position.z = 25
// transform the home to be a reasonable orientation
home.rotation.x = Math.PI * 2/3
function animate() {
requestAnimationFrame( animate );
home.rotation.z += 0.005;
renderer.render( scene, camera );
};
animate();
function configureScene(data) {
// Add geometry for the rooms
for (var room of data.rooms) {
let roomGeo = new THREE.BoxGeometry(room.w, room.h, room.d)
let roomColor = new THREE.Color(room.color)
let roomMaterial = new THREE.MeshPhysicalMaterial({ color: roomColor })
let roomMesh = new THREE.Mesh(roomGeo, roomMaterial)
roomMesh.position.x = room.x
roomMesh.position.y = room.y
roomMesh.userData = room.name
home.add(roomMesh)
}
}
async function doLoad() {
let request = new Request('data.json');
fetch(request)
.then(response => {
return response.json()
})
.then(json => {
configureScene(json)
})
}
doLoad();