概要
最近要渲染模型,使得模型看起来更真实,如模型是玻璃材质,反在环境中,只是有天空贴图,很不真实的贴图。为此Unity官方提供了RenderToCubemap解决此问题,只是RenderToCubemap适合静态贴图。
调用RenderToCubemap
例如:
官网详细介绍上面有,核心代码如下
`using UnityEngine;
using UnityEditor;
using System.Collections;
public class RenderCubemapWizard : ScriptableWizard
{
public Transform renderFromPosition;
public Cubemap cubemap;
void OnWizardUpdate()
{
string helpString = "Select transform to render from and cubemap to render into";
bool isValid = (renderFromPosition != null) && (cubemap != null);
}
void OnWizardCreate()
{
// create temporary camera for rendering
GameObject go = new GameObject("CubemapCamera");
go.AddComponent<Camera>();
// place it on the object
go.transform.position = renderFromPosition.position;
go.transform.rotation = Quaternion.identity;
// render into cubemap
go.GetComponent<Camera>().RenderToCubemap(cubemap);
// destroy temporary camera
DestroyImmediate(go);
}
[MenuItem("GameObject/Render into Cubemap")]
static void RenderCubemap()
{
ScriptableWizard.DisplayWizard<RenderCubemapWizard>(
"Render cubemap", "Render!");
}
}`
步骤
- 可直接复制官方代码到项目
- 生成Cubemap对象O Assets->Create->Legacy->Cubemp,Cubemp设置 mipMaps,readable为true
- 选择要生成贴图的摄像头位置物体A,GameObject->Render into Cubemap,在Render Cubemap设置框里Transform拉入A,cubemap里拉入Cubemap对象O ,Render生成贴图
- 写shader脚本,生成材质,贴到物体上