我为我的场景增加了光线如下:
var spotLight = new THREE.SpotLight( 0xFFF1E0 ,1,200,Math.PI/4);
spotLight.position.set( -wallWidth/2,wallHeight/2,100);
spotLight.castShadow = true;
spotLight.shadowCameraNear = camera.near;
spotLight.shadowCameraFar = camera.far;
spotLight.shadowDarkness = 0.4;
spotLight.shadowCameraVisible = true;
spotLight.shadowMapWidth = 4096;
spotLight.shadowMapHeight = 4096;
spotLight.name = 'Light';
scene.add( spotLight );
我的场景包含一个立方体。现在,我想找出场景中任何一点光线强度的值。有没有办法可以在任何一点找到光的强度,比方说,如果我点击?
答案 0 :(得分:0)
屏幕中任何像素的光强度都是该像素的值;减去颜色。
因此,您需要做的是将preserveDrawingBuffer: true
传递给渲染器,以便能够获取其图像数据。
renderer = new THREE.WebGLRenderer({ preserveDrawingBuffer: true });
然后在render()
函数中,您将获得renderer.domElement
的数据,并且您已设置好了。 (某些数学需要转到特定的像素)
function render()
{
renderer.render(scene, camera);
imgData = renderer.domElement.toDataURL();
}
答案 1 :(得分:0)
只是测量像素值会给你一个非常随意的数字,它不是'光强度'还是我过度思考这个?
在任何情况下,如果你想从帧缓冲区读取像素值:
var myRenderer = new THREE.WebGLRenderer();
var myGLcontext = myRenderer.getContext();
var myResult = myGLcontext.readPixels( x , y , width , height , myGLcontext.RGBA , myGLcontext.UNSIGNED_BYTE );