【背景】
这个系列的上一篇中已经完成了捕捉相机视角到CubeMap对象的脚本,但是CubeMap对象只有Unity内使用,需要再加工转换成一般的2D对象,本篇就通过增加一些脚本和设置实现这个功能。
【脚本】
我们需要一个新的对象来存放2D图像,所以在之前的脚本中再多引入一个Public
public RenderTexture equirectRT;
在捕捉图像并存储为CubeMap对象后还需要进一步从CubeMap转换成2D对象存放到equirectRT中,所以Capture方法中也多加一句:
cubeMapLeft.ConvertToEquirect(equirectRT);
完成后整体的脚本如下所示:
360游戏大厅
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PanoramaCapture : MonoBehaviour
{
    // Start is called before the first frame update
    public Camera targetCamera;
    public RenderTexture cubeMapLeft;
    public RenderTexture equirectRT;
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Capture();
        }
    }
    public void Capture()
    {
        targetCamera.RenderToCubemap(cubeMapLeft);
        cubeMapLeft.ConvertToEquirect(equirectRT);
    }
}
【设置】
脚本中多了一个Public,那么实际项目中也需要创建相应的对象来关联到脚本中。
和CubeMap一样,Asset右键新建RenderTexture,命名为Equirect:
这里不需要改变Dimension,保持2D即可,设置合适的分辨率
【测试】
同样的,运行游戏后按下Space,这次观察Equirect的Inspector,会发现成功获得了360度的平面全景图。