2012-07-31 40 views
1

在我的項目中,我添加了幾個模型和其他幾何對象,並且我可以移動相機以在場景中進行掃描,但是當我添加如下所示的光源時,模型未顯示爲原樣。我應該如何添加合適的燈光以適應場景中的模型。如何在場景中添加適當的光線?

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

// add directional light source 
var directionalLight = new THREE.DirectionalLight(0xffffff,2); 
directionalLight.position.set(1, 1, 1).normalize(); 
scene.add(directionalLight); 

var directionalLight1 = new THREE.DirectionalLight(0xffffff); 
directionalLight1.position.set(-1, -1, -1).normalize(); 
scene.add(directionalLight1); 
+2

也許這將是更適當發佈這堆棧溢出gamedev分支:http://gamedev.stackexchange.com – 2012-07-31 08:53:09

回答

1

這將是一些非常黑暗的環境光線。我會建議一個更高的值,更接近0x555555或更多。此外,您將定向燈添加到場景中,但是您將定向燈的位置設置得非常接近場景的原點。

您看到directionalLight.position是一個THREE.Vector3對象,您正在調用矢量對象的.set()方法,然後簡單地標準化結果。你的對象比一個單位大嗎?它是在起源?如果是這樣,我打賭你的方向燈在你的物體內。只有環境照明才能使3D模型看起來不錯。相反,我會建議你做這樣的事情:

 var originVector = new THREE.Vector3(0,0,0); 
     var ambLight = new THREE.AmbientLight(0x555555); 
     scene.add(ambLight); 

     var dirLight = new THREE.DirectionalLight(0xFFFFFF); 
     dirLight.position.x = -200; 
     dirLight.position.y = 200; 
     dirLight.position.z = 150; 
     dirLight.lookAt(originVector); 
     scene.add(dirLight); 

如果你需要的陰影我是指你這個問題我以前回答了有關Enabling Shadows in Three.JS。這裏是我做了一段時間的演示,它會顯示上述照明代碼的結果:Lighting Cube Acceleration Demo

+0

嗨,我找不到任何關於這個文檔像我知道directionLight但你在哪裏得到位置,nomralize()方法(其他地方我看到它)...我希望我能找到jQuery風格的文檔。 – 2013-11-22 19:48:14

+0

位置是一個THREE.Vector3對象,normalize()屬於該類(或Vector2,Vector4)。有大量的文檔,只需要尋找它。 http://threejs.org/docs/ – Hobbes 2014-11-25 22:14:52