Unity Shader系列文章:Unity Shader目录-初级篇
Unity Shader系列文章:Unity Shader目录-中级篇
Unity中创建用于环境映射的立方体纹理的方法有三种:
-
第一种:从纹理创建立方体贴图,用一张具有特殊布局的纹理,如类似立方体展开图的交叉布局、全景布局等。然后把该纹理的Texture Type设置为Cubemap即可;
立方体贴图纹理导入类型
Unity支持几种常用的立方体贴图布局:
垂直和水平交叉布局以及立方体贴图面的列和行 纬度/经度,全景图像 球形环境贴图图像
-
第二种:从六个单独的纹理创建立方体贴图,从菜单中选择 Assets > Create > Legacy > Cubemap, 然后将六个纹理拖入检视面板中的空字段内;
立方体贴图
-
第三种:使用脚本从 Unity 场景的内容生成立方体贴图, Camera.RenderToCubemap 函数可从场景中的任何所需位置记录六个面图像:
选择渲染位置和设置Cubemap
1. 创建Cubemap,从菜单中选择 Assets > Create > Legacy > Cubemap;
2. 编写代码;
3. 打开窗口,选择渲染位置和设置Cubemap,点击Render:
代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class RenderCubeMap : ScriptableWizard
{
public Transform renderTrans;
public Cubemap cubemap;
[MenuItem("Tools/RenderCubemap")]
static void RenderCubemap()
{
//打开向导
//"Render Cubemap"是打开的窗口名,"Render"是按钮名,点击时调用OnWizardCreate()方法
ScriptableWizard.DisplayWizard<RenderCubeMap>("Render Cubemap", "Render");
}
//打开向导或者在向导中更改了其他内容的时候调用
private void OnWizardUpdate()
{
helpString = "选择渲染位置及需要设置的cubemap";
//isValid为true的时候,“Create”按钮才能点击
isValid = renderTrans != null && cubemap != null;
}
//点击创建按钮时调用
private void OnWizardCreate()
{
GameObject go = new GameObject();
go.transform.position = renderTrans.position;
Camera camera = go.AddComponent<Camera>();
//用户提供的Cubemap传递给RenderToCubemap函数,生成六张图片
camera.RenderToCubemap(cubemap);
DestroyImmediate(go);
}
}
网友评论