2014-09-08 3 views
2

Я новичок в трёх js, я могу сгенерировать тени с помощью света пятна, но также получаю ненужные тени. что мне нужно сделать, чтобы удалить нежелательную тень. Мне нужны тени только для автомобиля и стены, и мне нужно удалить тень, как прямоугольник в земле. enter image description hereтри js направленная светлая тень

мой код выглядит следующим образом

var ambientLight = new THREE.AmbientLight(0xffffff); 
      scene.add(ambientLight); 

      var light1 = new THREE.SpotLight(0xff00000); 
      light1.position.set(200, 1200, 0); 
      light1.target.position.set(0,0,0);  
      light1.shadowCameraVisible = true; 
      light1.castShadow = true; 
      light1.shadowDarkness = 0.8; 
      light1.shadowCameraNear = 400; 
      light1.shadowCameraFar = 1600; 
      //light1.shadowCameraFov = 30; 

      light1.shadowCameraLeft = -750; 
      light1.shadowCameraBottom = -500; 
      light1.shadowCameraRight = 1000; 
      light1.shadowCameraTop = 600; 


      var firstLight = new THREE.Object3D(); 
      firstLight.add(light1); 
      scene.add(firstLight); 

Заранее спасибо

ответ

0

Я вижу это, вы хотите селективное тень объекта для настройки производительности. Лучшее, что вы можете сделать, это модель автомобиля, у вас есть либо .obj, .dae, либо который когда-либо форматировал загрузчик, вы можете загрузить объект в сцену через THREE.Object3D, у которого есть свойство «castShadow». Попробуйте это:

var obj3D = new THREE.Object3D(); 
obj3D.add(/*content from loader*/); 
obj3D.castShadow = true; 
or 
var mesh = new THREE.Mesh(); 
mesh.castShadow =true; 

Включить или отключить свойство castShadow с помощью Mesh.

Я думаю, что это решит вашу проблему

Смежные вопросы