使用Texture2D创建Cubemap
网上有很多,但大多使用Camera.RenderToCubemap接口,不能满足需求。
写了段代码可以载入Texture2D生成Cubemap(在Editor下运行):
/// <summary>
/// Array order [Px, Py, Pz, Nx, Ny, Nz](Execute in editor)
/// </summary>
public static Cubemap BuildCubemap(Texture2D[] texs)
{
var p_x = texs[];
var p_y = texs[];
var p_z = texs[];
var n_x = texs[];
var n_y = texs[];
var n_z = texs[]; if (p_x.width != p_x.height) throw new System.Exception("Create Error! width != height"); var textureArr = new Texture2D[] { p_x, p_y, p_z, n_x, n_y, n_z };
for (int i = ; i < textureArr.Length; i++)
{
var item = textureArr[i]; var path = AssetDatabase.GetAssetPath(item);
var textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
textureImporter.textureFormat = TextureImporterFormat.RGB24;
textureImporter.isReadable = true;
textureImporter.SaveAndReimport(); textureArr[i] = AssetDatabase.LoadAssetAtPath<Texture2D>(path);
} var cubemap = new Cubemap(p_x.width, TextureFormat.RGB24, false); //Set CubemapFace.(force fix texture format question).
cubemap.SetPixels(textureArr[].GetPixels().Reverse().ToArray(), CubemapFace.PositiveX);
cubemap.SetPixels(textureArr[].GetPixels().Reverse().ToArray(), CubemapFace.PositiveY);
cubemap.SetPixels(textureArr[].GetPixels().Reverse().ToArray(), CubemapFace.PositiveZ);
cubemap.SetPixels(textureArr[].GetPixels().Reverse().ToArray(), CubemapFace.NegativeX);
cubemap.SetPixels(textureArr[].GetPixels().Reverse().ToArray(), CubemapFace.NegativeY);
cubemap.SetPixels(textureArr[].GetPixels().Reverse().ToArray(), CubemapFace.NegativeZ); cubemap.Apply(); return cubemap;
}
生成结果:

使用Texture2D创建Cubemap的更多相关文章
- Unity中创建二维码
在网络上发现了一个可以把字符串转换成二维码的dll,但是我们要怎么使用他呢.不废话,直接进入主题. 用到的引用 using UnityEngine;using ZXing;using ZXing.Qr ...
- Unity Shaders and Effects Cookbook (4-1)(4-2)静态立方体贴图的创建与使用
開始学习第4章 - 着色器的反射 看完了1.2节,来记录一下.反射主要是利用了 Cubemap 立方体贴图. 认识Cubemap 立方体贴图.就如同名字所说.在一个立方体上有6张图.就这样觉得吧. 假 ...
- 通过GL函数处理图片以及其它相关功能
我们知道在屏幕后处理里面通过 Graphics.Blit 函数可以通过材质处理屏幕图片, 当我们想要处理一般图片的时候, 直接调用GL函数就行了, 按照习惯自己封装一个 Blit 方法 : ) { i ...
- cocos2d-x实战 C++卷 学习笔记--第5章 精灵
前言: 精灵类是Sprite类.它的子类有PhysicsSprite 和 Skin. PhysicsSprite 是物理引擎精灵类,而Skin是皮肤精灵类,用于骨骼动画. 创建Sprite精灵对象 创 ...
- cocos2d-x学习笔记------动画人物跑起来吧!
学习总结: 1.sprintf用来格式化字符串 2.CCSpriteFrame:: frameWithTexture通过图片名创建的时候需要的参数Texture2D创建使用CCTextureCache ...
- 最近用unity5弄的一些渲染
unity5 人皮渲染 Skin Shading 换了一种方法,优化了一下代码,unity5效果很好,消耗不大 点开可查看大图 加入了次表面散射的阴影与自阴影 unity5 ocean real- ...
- CSharpGL(53)漫反射辐照度
CSharpGL(53)漫反射辐照度 本系列将通过翻译(https://learnopengl.com)这个网站上关于PBR的内容来学习PBR(Physically Based Rendering). ...
- Creating Cubemaps in Unity3D
[Creating Cubemaps in Unity3D] 1.在Editor目录下生成GenerateStaticCubemap.cs. 2.编写代码,生成一个继承于ScriptableWizar ...
- WebGL three.js学习笔记 6种类型的纹理介绍及应用
WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...
随机推荐
- struts.xml什么时候加载
http://www.cnblogs.com/jiemoxiaodi/p/5621697.html
- mysql 线程池 数据库连接池
当客户端请求的数据量比较大的时候,使用线程池可以节约大量的系统资源,使得更多的CPU时间和内存可以高效地利用起来.而数据库连接池的使用则将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视 ...
- Oracle中游标返回多条数据的情况
DECLARE -- 定义类型. TYPE test_type IS TABLE OF test_main%ROWTYPE; test_data test_type; -- 定义游标. CURSOR ...
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You ...
- ThinkPHP讲解(八)——显示、修改、添加、删除
一.显示数据 <h1>主页面</h1> <table width="100%" border="1" cellpadding=&q ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON DivImage1
zw版[转发·台湾nvp系列Delphi例程]HALCON DivImage1 procedure TForm1.Button1Click(Sender: TObject);var img0, ...
- 【py】配置python环境
首先,在ubuntu 10.10之后的版本中,要这样安装 sudo apt-get install python-pip python-dev build-essential sudo pip ins ...
- SlidingMenu实现app侧滑功能
很多APP都有侧滑菜单的功能,部分APP左右都是侧滑菜单~SlidingMenu 这个开源项目可以很好帮助我们实现侧滑功能,如果对SlidingMenu 还不是很了解的童鞋,可以参考下本篇博客. 本片 ...
- linux驱动的入口函数module_init的加载和释放【转】
本文转载自:http://blog.csdn.net/zhandoushi1982/article/details/4927579 就像你写C程序需要包含C库的头文件那样,Linux内核编程也需要包含 ...
- MySQL 添加列,修改列,删除列
ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table ...