// Задача: създайте град в равнината - постройките // да са вертикални паралелепипеди със случайна // височина var N = 20; // 10x10 брой "карета" в града var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setAnimationLoop( drawFrame ); document.body.appendChild( renderer.domElement ); var scene = new THREE.Scene(); var aspect = window.innerWidth/window.innerHeight; var camera = new THREE.PerspectiveCamera( 30, aspect ); camera.position.set( 6, 7, 20 ); camera.lookAt( new THREE.Vector3() ); function rndSize(min, max) { return min + Math.random() * (max - min) } var buildingMaterial = new THREE.MeshPhongMaterial(); function createBuilding(x, z) { var width = rndSize(0.25, 0.9); var height = rndSize(0.25, width * 3.1); var depth = rndSize(0.25, 0.9); var geometry = new THREE.BoxGeometry( width, height, depth ); var building = new THREE.Mesh(geometry, buildingMaterial); building.position.set(x, height / 2, z); scene.add(building); } for (var x = -N / 2; x < N / 2; x++) { for (var z = -N / 2; z < N / 2; z++) { createBuilding(x, z); } } var light = new THREE.PointLight( ); light.position.set( 3, 7, 9 ); scene.add( light ); light = new THREE.PointLight( ); light.position.set( 3, 7, -9 ); scene.add( light ); function drawFrame() { scene.rotation.y += 0.005; renderer.render( scene, camera ); }