我正在尝试使用three.js创建一个简单的太阳系,我已经完成了所有操作,现在我想添加一些阴影,但显然它在处理纹理时不起作用。
loader.load("earth.jpg", function ( texture ) {
var geometry = new THREE.SphereGeometry( 100, 20, 20 ),
material = new THREE.MeshLambertMaterial({
map: texture,
overdraw: true,
}),
mesh = new THREE.Mesh( geometry, material );
group.add( mesh );
});
如果我将map: texture
替换为color: 0xffffff
,则效果非常好,但是当我添加纹理时,灯光阴影会消失。
为什么灯光不适用于纹理?
也许我应该为每个星球创造两个球体?一个有纹理,另一个有阴影吗?
答案 0 :(得分:1)
这是CanvasRenderer
的限制。它不支持MeshLambertMaterial
和漫反射组合纹理。
您必须切换到WebGLRenderer.
three.js r.65