2013-01-21 65 views
1

有人知道如何使聚光燈反射在這裏:http://web251.merkur.ibone.ch/webgl/three/看起來像這裏:http://web251.merkur.ibone.ch/webgl?即它會反射到相機?奇怪的是,它不會自動執行。如果你用鼠標在地球上移動,你會注意到。在這個場景中,一切都是靜止的,但相機,並與相機的運動也眼睛E得到四處移動,對吧?所以我所期望的是星球上的spotLight反射一直在重新計算/重新計算,例如,與Blinn的Halfvector一起,導致了E與聚光燈之間的行星反射。three.js聚光燈反射計算錯誤?

幫助非常感謝,我們已經查找了幾個小時,但找不到線索我們的代碼出了什麼問題!

在此先感謝 Doidel

+0

有趣的問題,謝謝你讓我這樣! – randompast

回答

1

我用來玩這個開始碼的第一位是: http://mrdoob.github.com/three.js/examples/webgl_materials_shaders.html

的關鍵是增加了鏡面地圖與specularMap屬性爲(海防)材料。

這樣可以做到如下:

var MySpecularMap = THREE.ImageUtils.loadTexture("MySpecularImage.jpg"); 

var Color = THREE.ImageUtils.loadTexture("MyColorImage.jpg"); 
var mappedTexture = new THREE.MeshPhongMaterial({ color: 0xffffff, map: Color, specular: 0xffffff, specularMap: MymapSpecular}); 

sphere = new THREE.SphereGeometry(600, 32, 32); 
globe = new THREE.Mesh(sphere, mappedTexture); 
scene.add(globe); 

而且,對於這種類型的演示OrbitControls似乎是最好的。

這裏有一個完成的示例與{顏色表,SpecularMap,BumpMap,雲,天虹體育館}: http://randompast.github.io/randomtests/three.js/earth/1/index.html