Three.js-如何防止灯光照射到物体上
有没有办法防止平行光照亮特定物体?我想这也适用于聚光灯。这样做的原因是我想使用两个平行光,但其中一个灯光照射在一个对象上,使其具有“自阴影”,并且不希望该灯光干扰另一个对象 目前,我有一个单一的平行光,声明如下:Three.js-如何防止灯光照射到物体上,three.js,Three.js,有没有办法防止平行光照亮特定物体?我想这也适用于聚光灯。这样做的原因是我想使用两个平行光,但其中一个灯光照射在一个对象上,使其具有“自阴影”,并且不希望该灯光干扰另一个对象 目前,我有一个单一的平行光,声明如下: function addpointlight() { var SHADOW_MAP_WIDTH = 4096, SHADOW_MAP_HEIGHT = 2048; //Enabling this this light just creates serious arti
function addpointlight()
{
var SHADOW_MAP_WIDTH = 4096, SHADOW_MAP_HEIGHT = 2048;
//Enabling this this light just creates serious artifacts on the obj I am trying to shadow.
//var newlight=new THREE.DirectionalLight(0xeeeeee,0.7);
//newlight.position.set( 0, 100, 300 );
//newlight.castShadow=false;
//scene.add(newlight);
// create a directional light
pointLight = new THREE.DirectionalLight(0xeeeeee,0.80);
//pointLight.onlyShadow=true;
pointLight.position.set( 0, 100, 300 );
pointLight.shadowCameraVisible=true;
pointLight.shadowCameraNear = 10;
pointLight.shadowCameraFar = 1500;
pointLight.shadowCameraFov = 90;
pointLight.castShadow=true;
var d = 4;
pointLight.shadowCameraLeft = -d;
pointLight.shadowCameraRight = d;
pointLight.shadowCameraTop = -d;
pointLight.shadowCameraBottom = d;
pointLight.shadowBias = 0.00;
pointLight.shadowDarkness = 0.7;
pointLight.shadowMapWidth = SHADOW_MAP_WIDTH;
pointLight.shadowMapHeight = SHADOW_MAP_HEIGHT;
// add to the scene
scene.add(pointLight);
}
这盏灯很好地环绕着我想要自阴影的对象,消除了阴影瑕疵。它与正在创建阴影的移动对象一起移动,使用以下方法:-
pointLight.position.set(obj.position.x+40,obj.position.y+5,obj.position.z+300);
pointLight.target=obj;
所以我想创建第二个平行光,它只影响其他物体,而不是这个,这个光不能影响其他物体。
我想制作一把小提琴,但我正在测试的模型和纹理使得它在带宽方面相当大
r70中的three.js版本。您希望限制灯光影响的对象。在three.js支持“层”(其中灯光只会影响其自身层中的对象)之前,您可以通过解决方案实现所需的功能:两个单独的场景和两个渲染过程
renderer.autoClear = false;
...
renderer.clear();
renderer.render( scene1, camera );
renderer.render( scene2, camera );
如果有透明对象,则它们必须位于第二个场景中。此外,一个对象只能在一个场景中,因此如果希望在两个场景中都复制灯光,则必须复制灯光
three.js r.70您希望限制灯光影响的对象。在three.js支持“层”(其中灯光只会影响其自身层中的对象)之前,您可以通过解决方案实现所需的功能:两个单独的场景和两个渲染过程
renderer.autoClear = false;
...
renderer.clear();
renderer.render( scene1, camera );
renderer.render( scene2, camera );
如果有透明对象,则它们必须位于第二个场景中。此外,一个对象只能在一个场景中,因此如果希望在两个场景中都复制灯光,则必须复制灯光
three.js r.70是的,我认为这是唯一的答案。因为我已经按照这些思路进行了思考。我有一种感觉,可以使用着色器来完成。不管怎样,都不理想。我希望我在搜索中遗漏了一些简单的东西。我的临时解决方案只是构建一个场景,其中第二个对象不会进入灯光摄影机的平锥。我想说你的答案一开始就是正确的,但它引出了新的问题,比如如何添加第三个可以在两个场景对象上投射阴影的对象。谢谢你的提示,非常感谢。这使得场景图的使用不直观。还有其他解决方案吗?是的,我认为这是唯一的答案。因为我已经按照这些思路进行了思考。我有一种感觉,这可以通过着色器来完成。不管怎样,都不理想。我希望我在搜索中遗漏了一些简单的东西。我的临时解决方案只是构建一个场景,其中第二个对象不会进入灯光摄影机的平锥。我想说你的答案一开始就是正确的,但它引出了新的问题,比如如何添加第三个可以在两个场景对象上投射阴影的对象。谢谢你的提示,非常感谢。这使得场景图的使用不直观。还有别的解决办法吗?