我希望聚光燈能與相機一起移動。下面的代碼工作,如果我只是想保持焦點在同一位置的攝像頭在任何時候都:如何在Three.js中將聚光燈相對於相機位置移動?
var pointLight = new THREE.PointLight(0xffffff, 1, 200);
pointLight.position = camera.position;
scene.add(pointLight);
不過,我怎樣才能使它發揮作用,使聚光燈總是在前相機有一定的距離?或者通常,相對於相機的位置總是處於相同的位置?
謝謝!我最初發現,我可以在render()函數內設置點光源的位置,就像這樣'pointlight.position.z = camera.position.z - 10',這樣它可以保持每幀移動,但是你的解決方案更加清晰,更具可讀性。 –
只有當相機沿着負Z軸看時,您的解決方案纔有效。將對象放入層次結構中也是相機旋轉的關鍵。另一種方法是找到相機的前向矢量,以便您可以編寫'pLight.position = camera.position + camForwardVec * distance;'。 –
該解決方案根據攝像機距物體的距離來確定光的視強度。 (但是,好吧,這可能是你真正想要的東西)。我無法通過將PointLight的第三個參數設置爲零來解決此問題。 – Ideogram