• unity中获取模型对应的贴图中的像素点,修改颜色


    /*
      获取模型对应的贴图中的像素点,修改颜色
    */
    
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class DrowLine : MonoBehaviour 
    {
        public GameObject m_obj;
        private Texture2D m_tex;
        public Color m_color;
        public int size = 3;
        private Color[] m_textureColorsStart;
        void Start () 
        {
            m_tex = m_obj.GetComponent<MeshRenderer>().material.mainTexture as Texture2D;
            //从纹理中获取像素颜色
            m_textureColorsStart = m_tex.GetPixels();
            Debug.Log(m_tex.name);
        }
    
    
        void Update()
        {
    
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Input.GetMouseButton(0))
            {
                if (Physics.Raycast(ray, out hit))
                {
                    //在碰撞位置处的UV纹理坐标。
                    Vector2 pixelUV = hit.textureCoord;
                    //以像素为单位的纹理宽度
                    pixelUV.x *= m_tex.width;
                    pixelUV.y *= m_tex.height;
                    //贴图UV坐标以右上角为原点
                    for (float i = pixelUV.x - 1; i < pixelUV.x + size; i++)
                    {
                        for (float j = pixelUV.y - 1; j < pixelUV.y + size; j++)
                        {
                            m_tex.SetPixel((int)i, (int)j, m_color);
                        }
                    }
                    Debug.Log(pixelUV);
                    m_tex.Apply();
                }
            }
            if (Input.GetKeyDown(KeyCode.Escape))
            {
                //还原
                m_tex.SetPixels(m_textureColorsStart);
                m_tex.Apply();
            }
    
    
            //在处理鼠标按下的记录下位置,抬起的时候记录下位置,取2个位置中间的位置发射射线
            //if (Input.GetMouseButtonDown(0))
            //{
                
            //}
            //if (Input.GetMouseButtonUp(0))
            //{
    
            //}
        }
    }
  • 相关阅读:
    视图、触发器、事物、存储过程、函数、流程控制
    pymysql
    单表查询与多表查询
    多线程学习(第三天)线程间通信
    多线程学习(第二天)Java内存模型
    多线程学习(第一天)java语言的线程
    springboot集成es7(基于high level client)
    elasticSearch(六)--全文搜索
    elasticSearch(五)--排序
    elasticSearch(四)--结构化查询
  • 原文地址:https://www.cnblogs.com/nanyang0310/p/9259579.html
Copyright © 2020-2023  润新知