Unity Пытается получить оттенок от полученного пикселя, используя Color.RBGtoHSV, но H всегда возвращает 0 - PullRequest
1 голос
/ 31 марта 2020

Я создал игровой объект Unity и добавил скрипт

public Texture2D TheTexture;

void Awake()
{

    float H, S, V;
    Color c = TheTexture.GetPixel(4, 4);
    Color.RGBToHSV(c, out H, out S, out V);
    Debug.Log("H: " + H + " S: " + S + " V: " + V);
    Debug.Log(c);
}

Текстура размером 10x10 bmp, где все изображение представляет собой solid синюю поверхность RGB 0,0,255

Когда Я запускаю это, H поднимается до 0. C появляется точно, поэтому я правильно читаю на картинке, я считаю.

Любая идея, что я делаю неправильно. В конечном итоге я просто пытаюсь получить оттенок цвета из растрового изображения

1 Ответ

2 голосов
/ 31 марта 2020

Ну, в коде, который вы разместили, вы никогда не измените ни одного из H, S и V ...

, которые вы можете использовать

Color.RGBToHSV

void Start()
{
    Color c = TheTexture.GetPixel(4, 4);

    Color.RGBToHSV(c, out var H, out var S, out var V);
    Debug.Log("H: " + H + " S: " + S + " V: " + V);
}

Я видел, как вы добавили его в свой вопрос. Но я не могу это подтвердить. Я подозреваю, что ваш пиксель имеет неправильный цвет.

Для

void Start()
{
    Color c = new Color(0, 0, 1, 1);

    Color.RGBToHSV(c, out var H, out var S, out var V);

    Debug.Log(c);
    Debug.Log("H: " + H + " S: " + S + " V: " + V);
}

Я получаю правильный вывод:

RGBA (0,000, 0,000, 1000, 1000)

В: 0,6666667 S: 1 В: 1


Оттенок 0 на самом деле будет красным ...

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