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);//上下翻转
unity的立方贴图相关推荐
- 【Unity Shader】 CubeMap(立方体贴图)
Unity Shader 立方体贴图 一.介绍CubeMap Shader中对CubeMap采样 Unity中如何制作CubeMap 二.Reflect CubeMap(反射立方体纹理用于环境映射) ...
- UnityShader18.1:立方体贴图(下)
接上文:https://blog.csdn.net/Jaihk662/article/details/113248074 四.菲涅尔反射 菲涅尔反射(Fresnel Reflection)就是同时考虑 ...
- UnityShader18:立方体贴图(上)
一.天空盒 使用立方体贴图最直接的目的就是展现天空盒,或者更进一步用于实现环境映射(反射与折射) 关于立方体贴图的采样原理:https://blog.csdn.net/Jaihk662/article ...
- 基于CUDA实现立方体贴图 (Cubemaps) 转换为全景图 (Equirectangular Panorama)
在立方体贴图空间内发射光线(视线),计算球面光线(视线)会击中哪个面的哪个像素的像素值,最终生成Equirectangular全景图. InitSceneTexture():先获取Cubemaps并将 ...
- OpenGL cubemap 立方体贴图实例
OpenGL cubemap 立方体贴图 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #include ...
- OpenGL实现Cubic Environment Map立方环境图实例
OpenGL实现Cubic Environment Map立方环境图 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <vmath.h> ...
- WebGL 利用FBO完成立方体贴图。
这篇主要记录WebGL的一些基本要点,顺便也学习下如何使用FBO与环境贴图.先看下效果图(需要支持WebGL,Chrome,火狐,IE11). 主要实现过程如下,先用FBO输出当前环境在立方体纹理中, ...
- Three.js 关于立方体贴图产生边缘锯齿问题
在使用Three.js的立方体模型进行贴图的时候,我们会发现会参数微小的锯齿效果出现 立方体贴图边缘锯齿 问题 解决后 经过试验测试发现, textureGrass.wrapS和 textureGra ...
- LearnOpenGL->立方体贴图
立方体贴图 立方体贴图 在本节中,我们将讨论的是将多个纹理组合起来映射到一张纹理上的一种纹理类型:立方体贴图(Cube Map). 简单来说,立方体贴图就是一个包含了6个2D纹理的纹理,每个2D纹理都 ...
- OpenGL 核心技术之立方体贴图
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...
最新文章
- 一则android软件开发工程师的招聘信息
- Backup and Restore in SharePoint 2010
- [翻译]NUnit---Action Attributes(八)
- Deep Learning论文笔记之(五)CNN卷积神经网络代码理解
- Android之页面有变化用onWindowFocusChanged来监听权限是否开启
- [Java] 蓝桥杯ALGO-64 算法训练 大小写判断
- [Win系统][临时方案]系统任务管理器不能使用临时性解决方案
- KEYCODE_DPAD_CENTER 和 KEYCODE_ENTER
- Swift3.0P1 语法指南——控制流
- tomcat中的日志配置
- Photoshop DPI缩放比例问题
- Jetpack ViewBinding
- Presto架构和使用总结
- 用python制作3d动画_-用 Python 做科学计算--Visual-制作3D演示动画
- 完整的机器学习_加州房价预测
- 电脑如何恢复数据?电脑文件清空了如何恢复数据?
- Phyllotaxis算法应用
- android obb分包,Unity 出OBB分包 和 安装
- Android中访问sdcard路径的几种方式
- Android 项目接入网易云信IM单聊,群聊