美文网首页
Unity图片像素点复制

Unity图片像素点复制

作者: 画风人_4316 | 来源:发表于2019-05-17 23:07 被阅读0次

玻璃杯中的剪辑..。 2017/7/14 13:47:14

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class CleanTire : MonoBehaviour 

{

    public Texture2D CleanTexture;

    Texture2D tmpTexture;

    int Width;

    int Height;

    Vector3[] Vertices;

    Vector2[] UV;

    Material mat;

// Use this for initialization

void Start () {

        mat = GetComponent<Renderer>().material;

        Texture2D OriginalTexture = (Texture2D)mat.mainTexture;

        Width=OriginalTexture.width;

        Height=OriginalTexture.height;

        tmpTexture = new Texture2D(Width, Height);

        for(int i=0;i<Width;i++)

        for(int j=0;j<Height;j++)

            {

                tmpTexture.SetPixel(i, j, OriginalTexture.GetPixel(i, j));

            }

        Vertices = GetComponent<MeshFilter>().mesh.vertices;

        UV = GetComponent<MeshFilter>().mesh.uv;

}

// Update is called once per frame

void Update () 

    {

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))

        {

            if (hit.collider.name ==gameObject.name)

            {

                Vector3 hitPoint = hit.point;

                //  mark.transform.position = hitPoint;

                int maxX = 0; int maxY = 0;

                int minX = 9000; int minY = 9000;

                for (int i = 0; i < Vertices.Length; i++)

                {

                    float dis = Vector3.Distance(transform.TransformPoint(Vertices[i]), hitPoint); 

                    if (dis < 0.1f)

                    {

                        int x = (int)(UV[i].x * Width);

                        int y = (int)(UV[i].y * Height);

                        if (x > maxX) maxX = x; else if (x < minX) minX = x;

                        if (y > maxY) maxY = y; else if (y < minY) minY = y;

                        tmpTexture.SetPixel(x, y, CleanTexture.GetPixel(x,y));

                        //Vertices[i] = OriginalVertices[i] + Normals[i]*0.2f;

                    }

                    //else

                    //Vertices[i] = OriginalVertices[i];

                }

                // m_Mesh.vertices = Vertices;

              //  int count = 0;

                for (int i = 0; i < Width; i++)

                { 

                    for (int j = 0; j < Height; j++)

                    {

                        if (i >= minX && i <=maxX && j >= minY && j <=maxY)

                        { 

                            tmpTexture.SetPixel(i, j, CleanTexture.GetPixel(i,j));

                //            count++;

                        }

                    }

                  //  if (count > 40000) break;

                }

                tmpTexture.Apply();

                mat.mainTexture = tmpTexture;

            }

        }

}

}

相关文章

  • Unity图片像素点复制

    玻璃杯中的剪辑..。2017/7/1413:47:14 usingSystem.Collections; usin...

  • 音视频入门-02-RGB拼图

    * 音视频入门文章目录 * 图片 & 像素点 & RGB 平时浏览的图片看不出像素点: 图片放大时,可以看出图片是...

  • matplotlib灰度图可视化处理

    这里我们利用matplotlib可视化一张图片的灰度图。纵横坐标为图片的像素点位置(x, y),此像素点的灰度值z...

  • 图片和纹理的区别

    图片Image:贴在物体表面,用来表现物体的纹理。图片可以看成是以像素点组成的,每个像素点有它的颜色和透明度。将这...

  • Bitmap相关

    一、存储格式 当界面显示图片时,不时按图片大小计算,而是按(像素点的多少*每个像素点占用的空间大小)来计算的。将图...

  • 中值滤波

    中值滤波使用当前像素点和它周围的8个像素点的中值来代替当前点额像素点,这个办法对去除椒盐噪声非常有效。 如果图片中...

  • unity shader采集屏幕像素点

    首先在可以GameObject上挂上一个shader脚本,只要让GameObject有颜色就行,主要的采集像素...

  • Kotlin 零基础学习 计算机图像基本知识

    一.像素 一张图片是有每一个像素点组成的,不同的像素点组成不同的图片,像我们就经常说的分辨率值1280*720 代...

  • 2021-01-08 Minimum supported Gra

    修改Unity Gradle版本 去上面地址下载自己需要的版本,复制lib到本地unity的gradle存放地址,...

  • 剪纸效果的纹理贴图

    对于一幅图像来说,可以看做是一个二维像素点的矩阵。剪纸效果的纹理贴图是指一张图片有的像素点正常显示,有的像素点则不...

网友评论

      本文标题:Unity图片像素点复制

      本文链接:https://www.haomeiwen.com/subject/duiaaqtx.html