Показать сообщение отдельно
  #1 (permalink)  
Старый 20.04.2014, 11:57
Аспирант
Отправить личное сообщение для SVARAI Посмотреть профиль Найти все сообщения от SVARAI
 
Регистрация: 30.11.2013
Сообщений: 41

Three.js: нет тени
Здравствуйте! Вот, учился управлять источниками света. Все очень просто, надо сделать так, что тень с куба падала на поверхность, но вот не выходит.... cube.receiveShadow = true; cube.castShadow = true; этими методами я по идее заставляю куб отражать свет и отбрасывать тень, вот код:
var scene = new THREE.Scene();
			var camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 0.1, 10000);
			camera.position.z = 400;
			camera.position.y = 10;


			var light = new THREE.SpotLight();
			light.position.set(-1000,300,0);
			light.castShadow = true;
			scene.add(light);

			/*var plane = new THREE.Mesh(new THREE.PlaneGeometry(400,200,100,100), new THREE.MeshLambertMaterial({color: 0x008cf0}));
			plane.position.y = -85;
			plane.receiveShadow = true;
			scene.add(plane);*/

			var geometry = new THREE.PlaneGeometry(400,200,100,100);
			var material = new THREE.MeshLambertMaterial({color: 0x008cf0});
			var plane = new THREE.Mesh(geometry, material);
			plane.position.y = -85;
			plane.rotation.x = -Math.PI/2;
			plane.receiveShadow = true;
			scene.add(plane);


			var geometry1 = new THREE.CubeGeometry(45,45,45);
			var material1 = new THREE.MeshLambertMaterial({color: 0x00ff00});
			var cube = new THREE.Mesh(geometry1, material1);
			cube.position.y = -60;
			cube.receiveShadow = true;
			cube.castShadow = true;
			scene.add(cube);

			var renderer = new THREE.WebGLRenderer();
			renderer.setSize(window.innerWidth, window.innerHeight);
			document.body.appendChild(renderer.domElement);
			renderer.ShadowMapEnabled = true;

			var render = function () {
				requestAnimationFrame(render);
				cube.rotation.y+=0.01;
				renderer.render(scene, camera);
			};

			render();

Никак не могу понять, почему же нет тени???
Ответить с цитированием