zoukankan      html  css  js  c++  java
  • Unity实现刺客信条灯光的思路探究

    灯光需求

    类似刺客信条的开场CG动画,场景中打着酷炫的灯光,玩家在场景中行走可以感受到灯光很真实。

    参考视频:http://www.iqiyi.com/w_19rqytbmvt.html

    运行环境

    安卓/IOS手机平台,所以对性能有一定要求。

    初期原型

    image

    思路分析

    1.引擎自带灯光组件,变换颜色,变换transform

    2.lineRenderer画线组件,模拟灯光效果,linerenderer打到人物身上效果逼真么?

    3.Mesh+shader或者粒子系统进行模拟

    light beam/shaft

    光束,光线

    imageimageimage

    volumetric lighting(体积照明)

    Big_Buck_Bunny_-_forest

    森林场景 巴克兔子,显示光线穿过树冠 [图片引用自:wikipedia]

    体积照明

    体积照明技术中使用 三维计算机图形学添加照明影响渲染场景。它可以让观众看到光束照射环境;通过一个开着的窗户看到阳光流体积的一个例子,也被称为黄昏的光线。这个词似乎已经被引进摄影,现在广泛应用于3D建模和rendering 尤其是在3d游戏领域。

    体积照明的光源发出的光锥被建模为一个透明的对象,可以看作一个容器的“体积”。因此,光有能力影响一个实际的三维介质(如雾,灰尘,烟或蒸汽)在它的体积内就像在现实世界一样。

    体积照明是如何工作的

    体积照明需要两个组件:一个光空间阴影地图和一个深度缓冲。从相机的剪辑平面附近开始,整个场景是追踪和采样值累积到输入缓冲区。对于每一个样本,它决定如果样品由光源照亮正在处理使用阴影映射作为比较。只有点燃样品将会影响最终的像素颜色。

    这个基本的技术,但需要更多的实时优化功能。优化体积光效果的方法之一是使照明体积比这更粗分辨率的图形上下文使用,这就产生了一些不好的混叠的工作,但是很容易touched up一个模糊。

    您还可以使用模板缓冲区像 阴影体积技术

    另一种方法也可以用来提供令人满意的,如果体积灯光效果不准确。模糊的算法功能发光物体远离中心的主要光源。一般来说,透明度是逐步减少与每一个模糊的步骤。特别是在更明亮的场景。注意:这需要在屏幕上有个光源。

    volumetric light英文

    volumetric light:https://en.wikipedia.org/wiki/Volumetric_lighting

    light Probe

    插件-Light Beams

    image

    主要功能

    可以控制光fade的长度,光束强度,光的softness,纹理移动速度。单双面材质(shader model 3.0以上版本)

    原理

    Mesh (圆锥形或者bill飞机形)+ shader 控制纹理的参数模拟光束(Mesh不接受光照)

    链接:https://www.assetstore.unity3d.com/en/#!/content/49640

    可调节参数

    image

    可借鉴例子

    暗影之枪

  • 相关阅读:
    webpack 项目接入Vite的通用方案介绍(上)
    AQS的原理及源码分析
    宝宝喂养
    Java日期时间操作基础——包含JDK1.8时间操作新特性
    ThreadLocal的正确使用与原理
    网络编程基础
    如何优雅正确地通过interrupt方法中断线程
    JavaWeb入门到实战学习笔记
    File与IO基础
    枚举基础
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/5600911.html
Copyright © 2011-2022 走看看