我正在从事一个太阳系项目,该项目涉及行星和绕太阳运行的火箭飞船。当前有一个主光源,其代码如下
// 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两种材料,但它们似乎具有相同的效果。
答案 0 :(得分:0)
我最终重新定位了主要聚光灯,使其位于我的太阳对象内,从而获得了与我所寻找的效果相同的效果。另外,我增加了强度,减少了衰减,使光线更逼真