我有一个白色的飞机,材料是#FFFFFF,纯白色。当我进行光线投射时,它返回的值是RGBA(0.804、0.804、0.804、0.804),而不是我期望的RGBA(1.000、1.000、1.000、1.000)。
起初,我认为这是一个照明问题,现在仍然可能。我已经尝试过改变照明的所有想法。全局照明,场景中定向光的强度,甚至将平面更改为未照明的纹理。
这是使飞机准备好更改tex2dGrid = new Texture2D(10, 10, TextureFormat.ARGB32, true);
上的像素的代码
这就是我采样像素颜色的方式
if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.down), out hit, Mathf.Infinity))
{
Texture2D tex2d = (Texture2D)hit.transform.GetComponent<Renderer>().material.mainTexture;
// get the pixel coords
var pixelUV = hit.textureCoord;
// convert to hitpoint coordins to texture coordins
pixelUV.x *= tex2d.width;
pixelUV.y *= tex2d.height;
// get the color of the pixel
Color colPixel = tex2d.GetPixel((int)pixelUV.x, (int)pixelUV.y);
}
colPixel is returning RGBA(1.000, 1.000, 1.000, 1.000) for white
colPixel is returning RGBA(0.000, 0.000, 0.000, 1.000) for black
RGBA(0.750, 0.750, 0.750, 1.000) is RGBA(0.749, 0.749, 0.749, 1.000)
RGBA(0.500, 0.500, 0.500, 1.000) is RGBA(0.502, 0.502, 0.502, 1.000)
RGBA(0.250, 0.250, 0.250, 1.000) is RGBA(0.251, 0.251, 0.251, 1.000)
我认为它适用于黑色,因为也许我的照明灯位于较暗的一侧?
我需要能够对像素进行完全准确的采样,并且平面应该返回完全白色。
答案 0 :(得分:0)
使用color32而不只是color。 Color32 colPixel = tex2d.GetPixel((int)pixelUV.x, (int)pixelUV.y); }
这样,您将不会使用浮点,而只会使用整数,因此不会有任何浮点错误。对飞机我不确定,对不起。