发射光源不会影响其他对象的阴影Three.js

时间:2019-04-12 10:39:51

标签: javascript three.js

我正在从事一个太阳系项目,该项目涉及行星和绕太阳运行的火箭飞船。当前有一个主光源,其代码如下

// add subtle ambient lighting
var ambientLight = new THREE.AmbientLight(0x0c0c0c);
scene.add(ambientLight);

// add spotlight for the shadows
var spotLight = new THREE.PointLight(0xffffff);
spotLight.position.set(-200, 50, 150);
spotLight.castShadow = true;
scene.add(spotLight);

我创建了一个太阳对象,并尝试赋予它一个发射性,以便它也可以在其他行星上发光。尽管它看上去可以使行星发光,但它更多的是使物体发光而不产生阴影,而不是实际上成为光源。太阳对象的代码如下

 function createSunMesh(geom) {
     var loader = new THREE.TextureLoader();
     var planetSunTexture = loader.load("../assets/textures/planets/sun.jpg");
     //var normalSunTexture = loader.load("../assets/textures/planets/moonbump.jpg");

     var planetSunMaterial = new THREE.MeshLambertMaterial({map: planetSunTexture, emissive: 0xac3d25});
     //bumpMap: normalMoonTexture

     // create a multimaterial
     var planetSunMesh = THREE.SceneUtils.createMultiMaterialObject(geom, [planetSunMaterial]);
     planetSunMesh.visible = false;

     return planetSunMesh;
 }

所以我的问题是,有没有办法使光的发射特性更强/更强以影响其他物体?我曾尝试使用Lambert / Phong两种材料,但它们似乎具有相同的效果。

1 个答案:

答案 0 :(得分:0)

我最终重新定位了主要聚光灯,使其位于我的太阳对象内,从而获得了与我所寻找的效果相同的效果。另外,我增加了强度,减少了衰减,使光线更逼真