IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> unity的立方贴图 -> 正文阅读

[游戏开发]unity的立方贴图

立方贴图介绍

Cubemap是一个由六个独立的正方形纹理组成的集合,它将多个纹理组合起来映射到一个单一纹理。

基本上说CubeMap包含6个2D纹理,这每个2D纹理是一个立方体(cube)的一个面,也就是说它是一个有贴图的立方体。

CubeMap通常被用来作为具有反射属性物体的反射源。
在这里插入图片描述
推荐链接地址–>点击此处

将立方贴图的z方向图片贴到texture2d图上

代码如下

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Test_Render : MonoBehaviour
{
    public Texture2D tex;
    public Image img;
    public Cubemap cumap;
    public Cubemap cumap1;
    public Texture matTex;
    public Material ma;
    public Texture2D texFix;
    private Byte[] bytes;
    int width;
    private void Start()
    {
        width = 1024;
        //img = gameObject.GetComponent<Image>();   
        cumap = new Cubemap(width,TextureFormat.ARGB32,false);
        cumap1 = new Cubemap(width,TextureFormat.ARGB32, false);
        //拿到材质组件
        ma = gameObject.GetComponent<MeshRenderer>().material;
        //拿到material里面叫_MainTex的贴图
        matTex = ma.GetTexture("_MainTex");
        tex = new Texture2D(width,width);
        texFix = new Texture2D(width,width);
        //bytes = new byte[Screen.height*Screen.width];
    }
    private void Update()
    {
        if (Input.GetKey(KeyCode.L))
        {
            Camera.main.RenderToCubemap(cumap);            
            //tex.SetPixels(cumap.GetPixels(CubemapFace.PositiveZ)) ;
            //拿到z方向上的贴图(是反的后面要反过来)
            Color[] cmmcolors = cumap.GetPixels(CubemapFace.PositiveZ);
            //给要复制的东西提供位置
            Color[] ReCmmcolors = new Color[cmmcolors.Length]; 
            //遍历贴图x方向把x方向上每个点的y值反过来(实现将图上下翻转)
            for (int i = 1; i < width + 1; i++)
                Array.Copy(cmmcolors, width * (width - i), ReCmmcolors, width * (i - 1), width);//上下翻转
            //将这个立方贴图的值给这个2d图
            tex.SetPixels(ReCmmcolors);
            tex.Apply();
            //img.sprite = Sprite.Create(tex, new Rect(0, 0, Screen.width, Screen.height), Vector2.zero);
            ma.SetTexture("_MainTex", tex);
            bytes = tex.EncodeToPNG();
            texFix.LoadImage(bytes);
            texFix.Apply();
            cumap1.SetPixels(texFix.GetPixels(), CubemapFace.PositiveZ);
            cumap1.Apply();
        }
    }
}

上面的CubemapFace是一个枚举类型
上述代码中我们拿到的是PositionZ是front图
还有如下方向
在这里插入图片描述
6个方向上的图和一个空值

细节方向

拿到的front图是反的,所以我们要反过来
公式:

//遍历贴图x方向把x方向上每个点的y值反过来(实现将图上下翻转)
            for (int i = 1; i < width + 1; i++)
                Array.Copy(cmmcolors, width * (width - i), ReCmmcolors, width * (i - 1), width);//上下翻转
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:58:26  更:2022-03-15 23:02:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 17:40:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码