Параметры
u | U координата образца. |
v | V координата образца. |
mipLevel | Уровень Mip для выборки должен быть в диапазоне [0, mipCount] |
Возвращает
Color Образец цвета пикселя.
Описание
Возвращает отфильтрованный цвет пикселя с нормализованными координатами (u, v).
Координаты u
и v
изменяются от 0,0 до 1,0, как и координаты UV в сетках. Если координаты выходят за пределы (больше 1,0 или меньше 0,0), они будут зафиксированы или повторены в зависимости от режима наложения текстуры.
Координаты текстуры начинаются в левом нижнем углу. UV из (0,0) приземляется точно на нижний левый тексель; и UV ((width-1)/width, (height-1)/height) приземляется точно на верхний правый тексель.
Цвет возвращаемого пикселя подвергается билинейной фильтрации.
Texture.isReadable должно иметь значение true
, иначе эта функция завершится ошибкой. Функция GetPixelBilinear недоступна для текстур, использующих сжатие текстур Crunch.
Смотрите так же: GetPixel.
using UnityEngine;
public class Example : MonoBehaviour
{
// "Деформировать" текстуру, сдавливая ее пиксели в одну сторону.
// Это включает в себя выборку изображения в нецелом пикселе
// позиции для обеспечения плавного эффекта.
// Исходное изображение.
public Texture2D sourceTex;
// Величина «коробления».
public float warpFactor = 1.0f;
Texture2D destTex;
Color[] destPix;
void Start()
{
// Настройте новую текстуру с теми же размерами, что и оригинал.
destTex = new Texture2D(sourceTex.width, sourceTex.height);
destPix = new Color[destTex.width * destTex.height];
// For each pixel in the destination texture...
for (var y = 0; y < destTex.height; y++)
{
for (var x = 0; x < destTex.width; x++)
{
// Вычисляем часть пути по изображению
// которому соответствует эта позиция пикселя.
float xFrac = x * 1.0f / (destTex.width - 1);
float yFrac = y * 1.0f / (destTex.height - 1);
// Возьмем дроби (0..1) и возведем их в степень, чтобы применить
// искажение.
float warpXFrac = Mathf.Pow(xFrac, warpFactor);
float warpYFrac = Mathf.Pow(yFrac, warpFactor);
// Получить позиции нецелых пикселей с помощью GetPixelBilinear.
destPix[y * destTex.width + x] = sourceTex.GetPixelBilinear(warpXFrac, warpYFrac);
}
}
// Скопируйте данные пикселей в целевую текстуру и примените изменения.
destTex.SetPixels(destPix);
destTex.Apply();
// Устанавливаем текстуру нашего объекта на только что деформированное изображение.
GetComponent<Renderer>().material.mainTexture = destTex;
}
}
Смотрите так же: GetPixel.