three.js聚光灯反射错误计算?

时间:2013-01-21 08:42:03

标签: three.js webgl spotlight

有人知道如何在这里进行聚光灯反射:http://web251.merkur.ibone.ch/webgl/three/看起来像这里的那个:http://web251.merkur.ibone.ch/webgl?即它被反射到相机?它不会自动地这样做很奇怪。如果你用鼠标在地球上移动你会注意到。在这个场景中,一切都是静态的但是相机,并且随着相机移动,眼睛E也会移动,对吗?所以我所期待的是地球上的光线反射一直在重新渲染/重新计算,例如与Blinn的Halfvector一起,导致E和聚光灯之间的行星反射。

非常感谢帮助,我们搜索了几个小时,但无法找到我们的代码有什么问题的线索!

提前致谢 Doidel

1 个答案:

答案 0 :(得分:1)

我用来玩这个的第一个起始代码是: http://mrdoob.github.com/three.js/examples/webgl_materials_shaders.html

关键是使用(Phong)材质的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似乎是最好的。

这是{ColorMap,SpecularMap,BumpMap,Clouds,SkyDome}的完整示例: http://randompast.github.io/randomtests/three.js/earth/1/index.html