Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Texture2D.GetPixelBilinear

Объявление

public Color GetPixelBilinear(float u, float v, int mipLevel = 0);

Параметры

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.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3