2014-12-02 118 views
1

我正在嘗試Three.js,我試圖將SpotLight放置在相機的位置。我用下面的代碼(剝離窗口創建):將位置設置爲其他對象的位置在THREE.js中不起作用

$(document).ready(function() { 
    init(); 
}); 

function init() { 
    var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 1, 1000); 
    camera.position.set(50, 10, 0); 
    camera.lookAt(new THREE.Vector3(0, 0, 0)); 
    var spotLight = new THREE.SpotLight(0xffffff); 
    spotLight.position = camera.position; 
    console.log(camera.position); 
    console.log(spotLight.position); 
} 

我得到的輸出camera.position爲50,10,0(如預期),但spotLight.position是0,1,0 - 甚至是艱難的我只需將其設置爲指向相同的值?

回答

1

嘗試

spotLight.position.set(camera.position.x, camera.position.y, camera.position.z) 

位置是隻讀的

+0

但是,如何讓它自動跟着相機呢?我必須在渲染循環中調用它嗎? – user3820008 2014-12-02 13:40:42

+0

當攝像頭位置變化似乎足夠了......我是three.js的新手,所以我不知道是否存在自動執行此操作的情況。 – AllForum 2014-12-02 13:48:19

+1

當相機位置改變時:'spotLight.position.copy(camera.position)'。 – WestLangley 2014-12-02 14:58:57

0

由於Spotlight和相機是對象(Object3D),你可以聚光燈簡單地添加到相機。照相機將移動,旋轉等,而無需進一步進行位置複製。在這種情況下,您必須將光線相對於相機進行定位:

camera.add(spotLight); 
spotLight.position.set(0,0,1); 
spotLight.target = camera; 
相關問題