必须在场景中直接添加灯光助手吗?

以下方法添加灯光助手工作正常:

var light = new THREE.SpotLight( 0xFFFFFF ); light.position.set(100,100,100); scene.add(light); var helper = new THREE.SpotLightHelper( light ); scene.add(helper); 

但是下面会导致帮手脱位:

 var wrapper = new THREE.Object3D(); wrapper.position.set(100,100,100); var light = new THREE.SpotLight( 0xFFFFFF ); wrapper.add(light); var helper = new THREE.SpotLightHelper( light ); wrapper.add(helper); scene.add(wrapper); 

看起来帮助者的位置是从绝对光线位置到景物,然后从包裹物上被应用,这意味着它实际上被应用两次,从而与光的实际位置不匹配。 在这个例子中,帮助者将出现在(200,200,200)。 PointLight也可能适用于其他灯光types。

是否有可能把帮手与光线包裹在一起,避免位置问题?

示范: http : //jsfiddle.net/wfpxdw37/24/