Version: 5.3 (switch to 5.4b)
ЯзыкEnglish
  • C#
  • JS

Язык программирования

Выберите подходящий для вас язык программирования. Все примеры кода будут представлены на выбранном языке.

Texture2D.GetPixelBilinear

Предложить изменения

Успех!

Благодарим вас за то, что вы помогаете нам улучшить качество документации по Unity. Однако, мы не можем принять любой перевод. Мы проверяем каждый предложенный вами вариант перевода и принимаем его только если он соответствует оригиналу.

Закрыть

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста <a>попробуйте снова</a> через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Закрыть

Отменить

Руководство
public function GetPixelBilinear(u: float, v: float): Color;
public Color GetPixelBilinear(float u, float v);

Параметры

Описание

Returns filtered pixel color at normalized coordinates (u, v).

Coordinates u and v go from 0.0 to 1.0, just like UV coordinates in meshes. Если координаты пикселя вышли за границы (больше чем ширина/высота или меньше 0), они будут зажаты или преобразован в соответствии с wrap mode текстуры.

Texture coordinates start at lower left corner. UV of (0,0) lands exactly on the bottom left texel; and UV of ((width-1)/width, (height-1)/height) lands exactly on the top right texel.

Returned pixel color is bilinearly filtered.

The texture must have the Read/Write Enabled flag set in the import settings, otherwise this function will fail.

See Also: GetPixel.

// "Warp" a texture by squashing its pixels to one side.
// This involves sampling the image at non-integer pixel
// positions to ensure a smooth effect.

// Source image. var sourceTex: Texture2D;

// Amount of "warping". var warpFactor = 1.0;

private var destTex: Texture2D; private var destPix: Color[];

function Start () { // Set up a new texture with the same dimensions as the original. 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++) { // Calculate the fraction of the way across the image // that this pixel positon corresponds to. var xFrac = x * 1.0 / (destTex.width - 1); var yFrac = y * 1.0 / (destTex.height - 1);

// Take the fractions (0..1)and raise them to a power to apply // the distortion. var warpXFrac = Mathf.Pow(xFrac, warpFactor); var warpYFrac = Mathf.Pow(yFrac, warpFactor);

// Get the non-integer pixel positions using GetPixelBilinear. destPix[y * destTex.width + x] = sourceTex.GetPixelBilinear(warpXFrac, warpYFrac); } }

// Copy the pixel data to the destination texture and apply the change. destTex.SetPixels(destPix); destTex.Apply();

// Set our object's texture to the newly warped image. GetComponent.<Renderer>().material.mainTexture = destTex; }
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public Texture2D sourceTex; public float warpFactor = 1.0F; private Texture2D destTex; private Color[] destPix; void Start() { destTex = new Texture2D(sourceTex.width, sourceTex.height); destPix = new Color[destTex.width * destTex.height]; int y = 0; while (y < destTex.height) { int x = 0; while (x < destTex.width) { float xFrac = x * 1.0F / (destTex.width - 1); float yFrac = y * 1.0F / (destTex.height - 1); float warpXFrac = Mathf.Pow(xFrac, warpFactor); float warpYFrac = Mathf.Pow(yFrac, warpFactor); destPix[y * destTex.width + x] = sourceTex.GetPixelBilinear(warpXFrac, warpYFrac); x++; } y++; } destTex.SetPixels(destPix); destTex.Apply(); GetComponent<Renderer>().material.mainTexture = destTex; } }

See Also: GetPixel.