使用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演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...
随机推荐
- tornado中使用Mako模版
tornado是一个优秀的python的开源web 框架,框架本身的性能确实很好,但是他自带的模版只能说是一般般.关于tornado的详细信息可以直接到管网参考. http://www.tornado ...
- js兼容
//document.getElementsByClassName(); if (!document.getElementsByClassName) { document.getElementsByC ...
- 刨根问底U3D---关于Delegate的方方面面
我是否需要阅读这篇文章 Code1: private delegate void BloodNumDelegate (); public delegate void ExpNumChangeDeleg ...
- For循环输出九九乘法表
题:使用For循环输出九九乘法表 解析: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 .... 1*9=9 ........ .....9*9=81 可以看做j*i ...
- "数学口袋精灵"bug的发现及单元测试
1.项目内容: 团队项目:二次开发 至此,我们有了初步的与人合作经验,接下来投入到更大的团队中去. 也具备了一定的个人能力,能将自己的代码进行测试.接下来尝试在别人已有的基础上进行开发. 上一界51冯 ...
- vs2010打包系统必备选择.net framework 3.5sp1编译错误的解决方法
利用visual studio 2010进行打包程序,默认安装的是Framework 4.0,如果需要将3.5sp1打包到系统中一起安装(选择了"从与我的应用程序相同的位置下载系统必备组件& ...
- ligerui+json_001_实现表格(grid)的后台数据显示、分页
代码下载地址: http://download.csdn.net/detail/poiuy1991719/8556841 效果: 需要导入的包: 01:编写界面:index.jsp <%@ pa ...
- JSon_零基础_003_将Map集合对象转换为JSon格式的对象字符串,返回给界面
将Map集合对象转换为JSon格式的对象字符串,返回给界面 需导入的jar包: 编写servlet: package com.west.webcourse.servlet; import java.i ...
- linux抓包方法
tcpdump -i eth0 -X -w data.cap 得到的包保存到本地wireshark解析ip.addr == url && http.request.url contai ...
- 夺命雷公狗ThinkPHP项目之----企业网站20之网站前台头尾分离
我们的网站直接让他头尾进行分离即可: 然后在代码里面找到id 为header的这段代码: 然后将整个div的内容都给弄出来,然后在view里面创建一个Public的目录,然后在创建一个header.h ...