我正在从事一个太阳系项目,该项目涉及行星和围绕太阳运行的火箭飞船。目前有一个主光源,代码如下
// 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材料,但它们似乎具有相同的效果。
我最终重新定位了主聚光灯,使其位于我的太阳对象内,这给了它与我一直在寻找的相同的效果。此外,我增加了强度并减少了衰减,以使光线具有更逼真的效果。