RGBA (0.500, 0.500, 0.500, 1.000) возвращает RGBA (0.502, 0.502, 0.502, 1.000) при выборке цвета в Raycast - PullRequest
0 голосов
/ 30 июня 2019

У меня белая плоскость, материал #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);* 1006.*

и вот как я выбираю цвет пикселей

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)

Я думаю, что это работает для черного, потому что, возможно, мое освещение находится на темной стороне?

Мне нужно иметь возможность выбирать пиксели с полной точностью, и плоскость должна возвращать полный белый цвет.

1 Ответ

0 голосов
/ 01 июля 2019

Используйте color32 вместо просто цвета.Color32 colPixel = tex2d.GetPixel((int)pixelUV.x, (int)pixelUV.y); } Таким образом, вы не будете использовать число с плавающей запятой и будете использовать только целые числа, таким образом, не будет никакой погрешности с плавающей запятой.Я не уверен насчет самолета, извини.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...