使用Texture2D创建Cubemap

网上有很多,但大多使用Camera.RenderToCubemap接口,不能满足需求。

写了段代码可以载入6张图片,生成Cubemap

//Define Texture2D member p_x, p_y, p_z  n_x, n_y, n_z

if (p_x.width != p_x.height) throw new System.Exception("Create Error! width != height");

var cubemap = new Cubemap(p_x.width, p_x.format, false);

var textureArr = new Texture2D[] { p_x, p_y, p_z, n_x, n_y, n_z };
for (int i = 0; i < textureArr.Length; i++)
{
    var item = textureArr[i];

    var path = AssetDatabase.GetAssetPath(item);
    var textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
    textureImporter.isReadable = true;
    textureImporter.SaveAndReimport();
}

//textureImporter.

cubemap.SetPixels(p_x.GetPixels(), CubemapFace.PositiveX);
cubemap.SetPixels(p_y.GetPixels(), CubemapFace.PositiveY);
cubemap.SetPixels(p_z.GetPixels(), CubemapFace.PositiveZ);
cubemap.SetPixels(n_x.GetPixels(), CubemapFace.NegativeX);
cubemap.SetPixels(n_y.GetPixels(), CubemapFace.NegativeY);
cubemap.SetPixels(n_z.GetPixels(), CubemapFace.NegativeZ);

cubemap.Apply();

AssetDatabase.CreateAsset(cubemap, "Assets/MyCubemap.cubemap");
AssetDatabase.SaveAssets();

生成结果:

时间: 2024-11-17 03:48:39

使用Texture2D创建Cubemap的相关文章

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

开始学习第4章 - 着色器的反射 看完了1.2节,来记录一下.反射主要是利用了 Cubemap 立方体贴图. 认识Cubemap 立方体贴图,就如同名字所说,在一个立方体上有6张图,就这样认为吧. 假想一下 ,在一个艳丽的房间里,有一个表面是镜子的圆球,那这个圆球表面就反射了房间里面的所有东西,就是一个大号的凸镜. 这是到网上找得一张图,很直观的表达了我的意思-- 注意标题中说的,静态立方体贴图,为什么叫静态,因为这一次使用的立方体贴图是提前生成好的图片,而不是动态生成的. 这又是什么意思呢?

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

前言: 精灵类是Sprite类.它的子类有PhysicsSprite 和 Skin. PhysicsSprite 是物理引擎精灵类,而Skin是皮肤精灵类,用于骨骼动画. 创建Sprite精灵对象 创建精灵对象有多种方式,常用的函数如下: 1)创建一个精灵对象,纹理等属性需要在创建后设置 static Sprite* create(); 2)指定图片创建精灵 static Sprite* create(const std::string& filename); 3)指定图片和裁剪的矩形区域来创建

用球体模拟天空

之前说到可以用球体作为Sky Dome模拟天空,那么就来说一说其中的细节. Sky Dome就是天空穹顶,是一种在三维场景中模拟天空的方法,用Sky Dome模拟的天空较Sky Box更为逼真,对应用Sky Box的场景采用雾效果很容易穿帮,而Sky Dome不会,因为Sky Box是方形从视点到各个顶点的距离不相等,Sky Dome则是球体,把视点设置为球体中心则到各个顶点的距离相等,雾效果的可见程度与视点到顶点的距离有直接关系. 那么来看看这么用之前的球体模型模拟Sky Dome吧. 之前已

cocos2dx[3.2](14)——新字体标签Label

[唠叨] 在3.x中,废弃了2.x里的LabelTTF.LabelAtlas.LabelBMFont三个字体类,取而代之的是全新的字体标签Label. 实际上Label是将三个字体类进行了融合,进行统一的管理与渲染,这使得创建字体标签Label的方式更加统一,更加方便. 本节来学习一下3.x中新的标签类Label,如果对2.x中的三个字体类不了解的话,建议先去看看那三个类的用法,再来学习本节内容,能够更好的理解. 2.x中的旧标签类,请移步:http://shahdza.blog.51cto.c

Unity Shaders and Effects Cookbook (4-6)震撼的实时反射 动态立方图系统

昨天逛街的时候看到太平鸟里面摆了个金属的米老鼠,于是职业病犯了,一直在想金属的颜色是什么,这个反射该怎么写,想不出来-- 今天正好看到动态反射立方图系统这一节,看完觉得很别扭,因为书上介绍的是事先踩点生成Cubemap的方式而不是实时的.于是到官方文档找到实时反射的代码,做了一个比较花俏的场景,运行之后吃了一大惊,实时反射是如此的震撼.. 第四章第一节第二节介绍了创建Cubemap,然后学习了如何使用. Unity Shaders and Effects Cookbook (4-1)(4-2)静

Unity Shaders and Effects Cookbook (4-3)遮罩反射

今天看完了4.3小节,Unity3d 中的遮罩反射,这一节内容比较少. 如果大家对Unity Shader 感兴趣的白菜,那么推荐大家购买一本 Unity 着色器和屏幕特效开发秘笈 .这本书写的浅显易懂,很适合入门. 当看完这本书,大概了解 Shader 的用处的时候,再去看更高级的 Shader 教程也可以. 京东图书连接 http://item.jd.com/1338728578.html 转自http://blog.csdn.net/huutu http://www.thisisgame.

Creating Cubemaps in Unity3D

[Creating Cubemaps in Unity3D] 1.在Editor目录下生成GenerateStaticCubemap.cs. 2.编写代码,生成一个继承于ScriptableWizard类. wizard包含以下成员: Wizard入口设置如下: 3.Wizard回调函数如下: isValid忏悔控制Create按钮是否可点. 4.OnWizardUpdate用于控制是isValid值. 5.OnWizardCreate用于实现创建Cubemap的功能. 参考: 1.file:/

OpenGL学习脚印:立方体纹理和天空包围盒(Cubemaps And Skybox)

写在前面 之前学习了2D纹理映射,实际上还有其他类型的纹理有待我们进一步学习,本节将要学习的立方体纹理(cubemaps),是一种将多个纹理图片复合到一个立方体表面的技术.在游戏中应用得较多的天空包围盒可以使用cubemap实现.本节示例程序均可以在我的github下载. 本节内容整理自: 1.Tutorial 25:SkyBox 2.www.learnopengl.com Cubemaps 创建Cubemap cubemap是使用6张2D纹理绑定到GL_TEXTURE_CUBE_MAP目标而创

shader forge初级篇|反射材质的运用

反射效果在制作游戏场景时是经常需要的,特别是在大理石.陶瓷类材质上有助于提升场景质感与氛围. 说道反射,游戏中常见做法就是利用当前场景cubemap作为反射源 而cubemap又是当前场景+Skybox的作用结果. 一 制作CubeMap 天空球[网上可以下载到很多.unitypackage,只说明unity新版本5.0之后将skybox移到了Lightmap下设置,旧版本在RenderSettings下设置] cubemap[5.3.4版本在这里如图第三级资源目录下创建cubemap ,旧版本