我正在使用THREE.js来渲染我的场景,我遇到了一个棘手的问题 - 如何才能获得几何面上特定点的颜色?
按颜色,我不是指面部或材质颜色,我指的是特定点的实际输出颜色,基于:材料,面部颜色和特定位置的纹理颜色。例如,如果给定点的面上的纹理是红色,并且材料颜色是一半可见(alpha = 0.5),我期望获得的是:(r = 1.0,g = 0.0,b = 0.0,a = 0.5)。
注意:表现很重要。
有什么想法吗? 谢谢!
答案 0 :(得分:1)
一种简单明了的方法是使用<canvas>
。
var canvas = document.createElement( 'canvas' );
canvas.width = renderer.domElement.width;
canvas.height = renderer.domElement.height;
var context = canvas.getContext( '2d' );
context.drawImage( renderer.domElement, 0, 0 );
var imagedata = context.getImageData( 0, 0, canvas.width, canvas.height );
var data = imagedata.data;
var index = ( mousex + ( mousey * canvas.width ) ) * 4;
var red = data[ index ];
var green = data[ index + 1 ];
var blue = data[ index + 2 ];
var hex = red << 16 | green << 8 | blue << 0
答案 1 :(得分:0)
启用实际上你期望获得的不是真的。你不是在考虑灯光。没有灯光,你的物体就会变黑。使用灯光并根据灯光的位置,您将获得不同的结果。即使你使用平面着色,脸部的颜色也取决于它的法线。