网上有很多,但大多使用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的更多相关文章

  1. Unity中创建二维码

    在网络上发现了一个可以把字符串转换成二维码的dll,但是我们要怎么使用他呢.不废话,直接进入主题. 用到的引用 using UnityEngine;using ZXing;using ZXing.Qr ...

  2. Unity Shaders and Effects Cookbook (4-1)(4-2)静态立方体贴图的创建与使用

    開始学习第4章 - 着色器的反射 看完了1.2节,来记录一下.反射主要是利用了 Cubemap 立方体贴图. 认识Cubemap 立方体贴图.就如同名字所说.在一个立方体上有6张图.就这样觉得吧. 假 ...

  3. 通过GL函数处理图片以及其它相关功能

    我们知道在屏幕后处理里面通过 Graphics.Blit 函数可以通过材质处理屏幕图片, 当我们想要处理一般图片的时候, 直接调用GL函数就行了, 按照习惯自己封装一个 Blit 方法 : ) { i ...

  4. cocos2d-x实战 C++卷 学习笔记--第5章 精灵

    前言: 精灵类是Sprite类.它的子类有PhysicsSprite 和 Skin. PhysicsSprite 是物理引擎精灵类,而Skin是皮肤精灵类,用于骨骼动画. 创建Sprite精灵对象 创 ...

  5. cocos2d-x学习笔记------动画人物跑起来吧!

    学习总结: 1.sprintf用来格式化字符串 2.CCSpriteFrame:: frameWithTexture通过图片名创建的时候需要的参数Texture2D创建使用CCTextureCache ...

  6. 最近用unity5弄的一些渲染

    unity5 人皮渲染  Skin Shading 换了一种方法,优化了一下代码,unity5效果很好,消耗不大 点开可查看大图 加入了次表面散射的阴影与自阴影 unity5  ocean real- ...

  7. CSharpGL(53)漫反射辐照度

    CSharpGL(53)漫反射辐照度 本系列将通过翻译(https://learnopengl.com)这个网站上关于PBR的内容来学习PBR(Physically Based Rendering). ...

  8. Creating Cubemaps in Unity3D

    [Creating Cubemaps in Unity3D] 1.在Editor目录下生成GenerateStaticCubemap.cs. 2.编写代码,生成一个继承于ScriptableWizar ...

  9. WebGL three.js学习笔记 6种类型的纹理介绍及应用

    WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...

随机推荐

  1. tornado中使用Mako模版

    tornado是一个优秀的python的开源web 框架,框架本身的性能确实很好,但是他自带的模版只能说是一般般.关于tornado的详细信息可以直接到管网参考. http://www.tornado ...

  2. js兼容

    //document.getElementsByClassName(); if (!document.getElementsByClassName) { document.getElementsByC ...

  3. 刨根问底U3D---关于Delegate的方方面面

    我是否需要阅读这篇文章 Code1: private delegate void BloodNumDelegate (); public delegate void ExpNumChangeDeleg ...

  4. 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 ...

  5. "数学口袋精灵"bug的发现及单元测试

    1.项目内容: 团队项目:二次开发 至此,我们有了初步的与人合作经验,接下来投入到更大的团队中去. 也具备了一定的个人能力,能将自己的代码进行测试.接下来尝试在别人已有的基础上进行开发. 上一界51冯 ...

  6. vs2010打包系统必备选择.net framework 3.5sp1编译错误的解决方法

    利用visual studio 2010进行打包程序,默认安装的是Framework 4.0,如果需要将3.5sp1打包到系统中一起安装(选择了"从与我的应用程序相同的位置下载系统必备组件& ...

  7. ligerui+json_001_实现表格(grid)的后台数据显示、分页

    代码下载地址: http://download.csdn.net/detail/poiuy1991719/8556841 效果: 需要导入的包: 01:编写界面:index.jsp <%@ pa ...

  8. JSon_零基础_003_将Map集合对象转换为JSon格式的对象字符串,返回给界面

    将Map集合对象转换为JSon格式的对象字符串,返回给界面 需导入的jar包: 编写servlet: package com.west.webcourse.servlet; import java.i ...

  9. linux抓包方法

    tcpdump -i eth0 -X -w data.cap 得到的包保存到本地wireshark解析ip.addr == url && http.request.url contai ...

  10. 夺命雷公狗ThinkPHP项目之----企业网站20之网站前台头尾分离

    我们的网站直接让他头尾进行分离即可: 然后在代码里面找到id 为header的这段代码: 然后将整个div的内容都给弄出来,然后在view里面创建一个Public的目录,然后在创建一个header.h ...