【问题标题】:three.js SpotLight orientation (direction) issue三.js SpotLight 方向(方向)问题
【发布时间】:2015-11-19 03:30:18
【问题描述】:

嗯,问题来了,

实际上,我尝试实现的是在一个基本的three.js 示例中在某些地方放置一些聚光灯。

这是我尝试设置聚光灯目标位置的方式:

var light = new THREE.SpotLight(0xFFFFFF);
light.position.set(0,130,0);
light.target.position.set(200,-130,400);
scene.add(light);

即使当我 console.log the target.position.(x,y,z) 它给了我正确的值时,聚光灯(光)仍然照亮点 (0,0,0)...

这是我对完整示例所做的快速操作。

http://jsfiddle.net/1xfno37y/7/

【问题讨论】:

标签: javascript 3d three.js


【解决方案1】:

您必须在更改(例如设置位置)后更新您的light.target

light.target.updateMatrixWorld();

或者只是将您的light.target 添加到场景中:

scene.add( light.target );

Three.js r.71

http://jsfiddle.net/1xfno37y/19/

延伸阅读: Critical bug with spotLight.target.position #5555

【讨论】:

  • 谢谢,我明白了!但是你能告诉我为什么“light.target.position.set(x,y,z);”不管用?它只是改变了光目标的位置,对吗?它应该做的工作......
  • 是什么让您认为light.target.position.set(x,y,z); 不起作用?你看过更新的小提琴吗?
  • 是的,它正在工作,我只是说如果没有“将目标添加到场景”,它就无法工作。但是,光有一个默认目标,对吧?如果场景已经存在,为什么只需要在场景中添加一些东西......(如果我清楚与否......)
  • 因为spotlight.target是灯光的一个属性,但它不是场景图的一部分。因此target.matrixtarget.matrixWorld 不会被更新。我在答案中添加了更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2013-03-14
  • 2012-12-30
  • 2011-10-24
  • 2011-05-14
相关资源
最近更新 更多