Unity 镜面反射

放置地板和模型

首先,让我们放置地板和将放置在其上的 3D 模型。这次,我使用 Plane 作为地板。从层次视图中选择"创建"→"3D 对象"→"平面"。我们还在地板上放置了 Unity-chan、Cube 和 Sphere。

接下来,创建地板的材质。在项目视图中右键单击,选择"创建"→"材质"并以名称镜像保存。从检查器配置主地图。将"反照率"颜色设置为"灰色"和"金属",将"平滑度"设置为"1"。

通过将材料拖放到地板对象上来附加材料。在这种状态下,天空被镜面反射,但地板上的物体不被反射。

为了也反射地板上的物体,我们需要使用反射探针组件。

什么是反射探头?

反射探头就像一个放置在探头周围 6 个方向的虚拟摄像机。 反射立方体贴图是根据这六个摄像机拍摄的图像创建的。(当你听说有6个摄像头时,你可以想象,这是一个相当繁重的过程。)

为了从相机观察时获得正确的反射图像,反射探头必须**放置在相机的另一侧。**在这里,我们将使用脚本自动将反射探针定位在相机的另一侧。

如何使用带有镜面反射的反射探头

添加一个空对象并为其附加一个 Reflection Probe 组件。选择附加了反射探针的对象,然后从检查器中将类型更改为"实时"。这会实时更新立方体贴图图像。您还可以通过更改"分辨率"来更改反射图像的分辨率。

正如我上面所写,为了将反射与镜面反射一起使用,您需要将探头放置在面向相机的位置。创建一个脚本以自动将其放置在相机的另一侧。在项目视图中创建"ProbeController",输入以下脚本,并将Reflection Probe组件附加到附加对象上。

cs 复制代码
using UnityEngine;
using System.Collections;

public class ProbeController : MonoBehaviour {
    
    ReflectionProbe probe;
    
    void Start() {
        this.probe = GetComponent<ReflectionProbe>();
    }
    
    void Update () {
        this.probe.transform.position = new Vector3(
            Camera.main.transform.position.x, 
            Camera.main.transform.position.y * -1, 
            Camera.main.transform.position.z
        );

        probe.RenderProbe();
    }
}

执行结果

地板现在是镜面的并反射地板上的物体。请运行并检查。执行结果如下。

参考链接:

Reflection Probeで鏡面反射する床を作る - おもちゃラボ

相关推荐
魔士于安2 天前
unity 丑陋哥布林 哥布林有humannoid 动画没 带动画
unity·游戏引擎·材质·贴图·模型
小贺儿开发3 天前
Unity 家居视频遥控(细节优化)
科技·unity·程序员·udp·视频·工具·通信
淡海水3 天前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
小小数媒成员4 天前
UGUI 性能优化(详细,全,深入)
开发语言·unity·游戏引擎
林川~014 天前
Unity新输入系统使用笔记
unity·input system
小贺儿开发4 天前
Unity 结合百度AI开放平台 手写文字识别
人工智能·科技·学习·unity·云服务·文字识别·手写文字
goujunwe5 天前
GEO 评估方法:如何自测你的内容,会不会被 AI 引用
搜索引擎·网络安全·游戏引擎·全文检索·中文分词
林川~015 天前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
yi碗汤园5 天前
MQTT消息队列遥测传输协议
网络·网络协议·unity
林川~015 天前
Unity 常用 API 与核心类全解:从生命周期到协程,附性能避坑清单(Unity 6 适配)
unity·游戏引擎·常用api