unity 创建Cubemap的两种方式

Cubemap是一个由六个独立的正方形纹理组成的集合。通常被用来作为具有反射属性物体的反射源。类似与MAX里的HDR属性。

创建Cubemap的第一种方式

unity 创建Cubemap的两种方式_第1张图片

利用编辑器扩展功能进行快速创建。
首先新建一个Editor文件夹,在里面创建一个C#脚本,我们可以命名为RenderCubeMap.cs,然后进行编辑,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class RenderCubeMap : ScriptableWizard
{
    public Transform renderTrans;
    public Cubemap cubemap;

    [MenuItem("Tools/CreateCubemap")]
    static void CreateCubemap()
    {
        //"Create Cubemap"是打开的窗口名,"Create"是按钮名,点击时调用OnWizardCreate()方法
        ScriptableWizard.DisplayWizard("Create Cubemap", "Create");//打开向导
    }

    private void OnWizardUpdate()//打开向导或者在向导中更改了其他内容的时候调用
    {
        helpString = "选择渲染位置并且确定需要设置的cubemap";
        isValid = renderTrans != null && cubemap != null;//isValid为true的时候,“Create”按钮才能点击
    }

    private void OnWizardCreate()//点击创建按钮时调用
    {
        GameObject go = new GameObject();
        go.transform.position = renderTrans.position;
        Camera camera = go.AddComponent();
        camera.RenderToCubemap(cubemap);//用户提供的Cubemap传递给RenderToCubemap函数,生成六张图片
        DestroyImmediate(go);//立即摧毁go
    }
}

保存后回到unity,这时Unity菜单栏多出了Tools工具,我们点击CreateCubemap后出现一个窗口,我们将需要创建Cubemap的观测点的位置赋值上去,再将事先新建的cubemap拖进去(Readable要打勾),点击Create后,我们原本新建的cubemap就已经贴好6张图片了,cubemap就创建完成了。

创建Cubemap的第二种方式

unity 创建Cubemap的两种方式_第2张图片
我们可以在网上找一些天空盒类型的材质赋值给天空盒,在Lighting中进行替换,也可以在某些场景中制作cubemap。

首先我们需要创建一个反射探针,即右键—>Light—>Reflection Probe,创建出来后,选中需要被绘制到Cubemap的物体,Inspector面板中右上角的Static选择Reflection Probe Static(如果不选择这个,那么只绘制天空盒),在反射探针的Inspector下点击Bake就出现一个cubemap了,(如果没有Bake的按钮,我们要先打开Lighting面板,将Auto Generate取消勾选之后就出现Bake按钮了)

Cubemap的使用

我们可以创建一个材质球,shader选择Skybox/Cubemap,然后将这个材质球赋值到Lighting面板中的Skybox Material就可以了。

你可能感兴趣的:(Unity)