Задать вопрос
@DarCKoder

Почему не работает освещение на three.js?

Начал изучать three.js, и появились первые проблемы.
Вот что получается в браузере:
956d314d20fe4691a62c343cf048a395.JPG

И сам код:
$(function () {
  var scene = new THREE.Scene();
  var camera = new THREE.PerspectiveCamera(45,
    window.innerWidth / window.innerHeight,
    0.1, 1000);
  var renderer = new THREE.WebGLRenderer();
  renderer.setClearColor(0xEEEEEE, 1)
  renderer.setSize(window.innerWidth, window.innerHeight);

  // Добавляем Оси 
  var axes = new THREE.AxisHelper( 20 );
  scene.add(axes);

  // Создаём, настраиваем и добавляем плоскость
  var planeGeometry = new THREE.PlaneGeometry(60,20);
  var planeMaterial = new THREE.MeshLambertMaterial(
    {color: 0xffffff});
  var plane = new THREE.Mesh(planeGeometry, planeMaterial);
  plane.rotation.x = -0.5*Math.PI;
  plane.position.x = 15;
  plane.position.y = 0;
  plane.position.z = 0;
  scene.add(plane);

  // Создаём, настраиваем и добавляем куб и сферу
  var cubeGeometry = new THREE.CubeGeometry(4,4,4);
  var cubeMaterial = new THREE.MeshLambertMaterial(
    {color: 0xff0000});
  var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
  cube.position.x = -4;
  cube.position.y = 3;
  cube.position.z = 0;
  scene.add(cube);

  var sphereGeometry = new THREE.SphereGeometry(4,20,20);
  var sphereMaterial =new THREE.MeshLambertMaterial(
    {color: 0x7777ff, wireframe: true});
  var sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
  sphere.position.x = 20;
  sphere.position.y = 4;
  sphere.position.z = 2;
  scene.add(sphere);

  // Позиция камеры и рендеринг
  camera.position.x = -30;
  camera.position.y = 40;
  camera.position.z = 30;
  camera.lookAt(scene.position);
  $('#WebGL-output').append(renderer.domElement);
  renderer.render(scene, camera);

  // Добовляем освещение
  var spotLight = new THREE.SpotLight( 0xffffff );
  spotLight.position.set(-40, 60, -10);
  scene.add(spotLight);
});
  • Вопрос задан
  • 531 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
mudrenokanton
@mudrenokanton
frontend dev
Вроде как 2 варианта:
1) вы сцену запульнули(в смысле отрендерили и отобразили) до того как свет добавили, потому его и нет
2) ваш spotLight не попадает по сцене и надо играться с координатами
Запилите демку на codepen, можно будет поиграться посмотреть
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 13:47
2000 руб./в час
18 дек. 2024, в 13:22
30000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект