当前位置: 首页 > news >正文

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

可借鉴例子

暗影之枪


本文转自赵青青博客园博客,原文链接:http://www.cnblogs.com/zhaoqingqing/p/5600911.html,如需转载请自行联系原作者

相关文章:

  • 【webstrom】webstrom打开多个项目,webstrom常用快捷键
  • CentOS 英文版安装中文环境与中文输入法
  • SSH连接linux时,长时间不操作就断开的解决方案(增强版)
  • 代码整洁之有意义的命名
  • 在阿里云k8s服务中玩转最新版原生dashboard
  • Linux netstat常用命令
  • Python从菜鸟到高手(8):print函数、赋值与代码块
  • [译] 探索 Swift 4 中新的 String API
  • 右键添加复制路径选项
  • cocos2d-x支持c++、js、lua开发
  • 旋转数组中查找最小值-剑指Offer11
  • RIP路由信息协议
  • 服务器连接工具 secureCRT
  • SeaweedFS---01
  • Spring Boot 最佳实践(五)Spring Data JPA 操作 MySQL 8
  • JavaScript-如何实现克隆(clone)函数
  • 10个确保微服务与容器安全的最佳实践
  • Bytom交易说明(账户管理模式)
  • ComponentOne 2017 V2版本正式发布
  • C学习-枚举(九)
  • JavaScript设计模式系列一:工厂模式
  • mockjs让前端开发独立于后端
  • 给Prometheus造假数据的方法
  • 深度学习在携程攻略社区的应用
  • 学习使用ExpressJS 4.0中的新Router
  • 一些css基础学习笔记
  • const的用法,特别是用在函数前面与后面的区别
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • #Z0458. 树的中心2
  • #宝哥教你#查看jquery绑定的事件函数
  • (2)STL算法之元素计数
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net 后台导出excel ,word
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .pyc文件是什么?
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [].slice.call()将类数组转化为真正的数组
  • [Asp.net mvc]国际化
  • [C#C++]类CLASS
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]