言語: 日本語
  • C#
  • JS
  • Boo

スクリプト言語

お好みのスクリプト言語を選択すると、サンプルコードがその言語で表示されます。

Texture2D.GetPixelBilinear

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

public function GetPixelBilinear(u: float, v: float): Color;
public Color GetPixelBilinear(float u, float v);
public def GetPixelBilinear(u as float, v as float) as Color

Description

正規化座標(u,v)でフィルタリングされたピクセルのカラーを取得します

メッシュのUV座標と同じように、vv 、 0.0 から 1.0 の範囲を座標とします。 座標が境界を超えた場合(1.0よりも大きく、または0.0より小さく)、 テクスチャのラップモードに基づいてクランプされるかリピートされます。 返ったピクセルカラーは bilinearly filtered されます。 テクスチャはインポートセッティングのRead/Write Enabledフラグを設定しなくてはいけません。でなければこのファンクションは失敗するでしょう。

	// "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.
		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();
        renderer.material.mainTexture = destTex;
    }
}
import UnityEngine
import System.Collections

public class ExampleClass(MonoBehaviour):

	public sourceTex as Texture2D

	public warpFactor as float = 1.0F

	private destTex as Texture2D

	private destPix as (Color)

	def Start() as void:
		destTex = Texture2D(sourceTex.width, sourceTex.height)
		destPix = array[of Color]((destTex.width * destTex.height))
		y as int = 0
		while y < destTex.height:
			x as int = 0
			while x < destTex.width:
				xFrac as float = ((x * 1.0F) / (destTex.width - 1))
				yFrac as float = ((y * 1.0F) / (destTex.height - 1))
				warpXFrac as float = Mathf.Pow(xFrac, warpFactor)
				warpYFrac as float = Mathf.Pow(yFrac, warpFactor)
				destPix[((y * destTex.width) + x)] = sourceTex.GetPixelBilinear(warpXFrac, warpYFrac)
				x++
			y++
		destTex.SetPixels(destPix)
		destTex.Apply()
		renderer.material.mainTexture = destTex

See Also: GetPixel.