Unity实现刺客信条灯光的思路探究
灯光需求
类似刺客信条的开场CG动画,场景中打着酷炫的灯光,玩家在场景中行走可以感受到灯光很真实。
参考视频:http://www.iqiyi.com/w_19rqytbmvt.html
运行环境
安卓/IOS手机平台,所以对性能有一定要求。
初期原型

思路分析
1.引擎自带灯光组件,变换颜色,变换transform
2.lineRenderer画线组件,模拟灯光效果,linerenderer打到人物身上效果逼真么?
3.Mesh+shader或者粒子系统进行模拟
light beam/shaft
光束,光线



volumetric lighting(体积照明)

森林场景 巴克兔子,显示光线穿过树冠 [图片引用自:wikipedia]
体积照明
体积照明技术中使用 三维计算机图形学添加照明影响渲染场景。它可以让观众看到光束照射环境;通过一个开着的窗户看到阳光流体积的一个例子,也被称为黄昏的光线。这个词似乎已经被引进摄影,现在广泛应用于3D建模和rendering 尤其是在3d游戏领域。
体积照明的光源发出的光锥被建模为一个透明的对象,可以看作一个容器的“体积”。因此,光有能力影响一个实际的三维介质(如雾,灰尘,烟或蒸汽)在它的体积内就像在现实世界一样。
体积照明是如何工作的
体积照明需要两个组件:一个光空间阴影地图和一个深度缓冲。从相机的剪辑平面附近开始,整个场景是追踪和采样值累积到输入缓冲区。对于每一个样本,它决定如果样品由光源照亮正在处理使用阴影映射作为比较。只有点燃样品将会影响最终的像素颜色。
这个基本的技术,但需要更多的实时优化功能。优化体积光效果的方法之一是使照明体积比这更粗分辨率的图形上下文使用,这就产生了一些不好的混叠的工作,但是很容易touched up一个模糊。
您还可以使用模板缓冲区像 阴影体积技术
另一种方法也可以用来提供令人满意的,如果体积灯光效果不准确。模糊的算法功能发光物体远离中心的主要光源。一般来说,透明度是逐步减少与每一个模糊的步骤。特别是在更明亮的场景。注意:这需要在屏幕上有个光源。
volumetric light英文
volumetric light:https://en.wikipedia.org/wiki/Volumetric_lighting
light Probe
插件-Light Beams

主要功能
可以控制光fade的长度,光束强度,光的softness,纹理移动速度。单双面材质(shader model 3.0以上版本)
原理
Mesh (圆锥形或者bill飞机形)+ shader 控制纹理的参数模拟光束(Mesh不接受光照)
链接:https://www.assetstore.unity3d.com/en/#!/content/49640
可调节参数

可借鉴例子
暗影之枪
Unity实现刺客信条灯光的思路探究的更多相关文章
- Unity实现c#热更新方案探究(三)
转载请标明出处:http://www.cnblogs.com/zblade/ 前面两篇文章从头到尾讲解了C#热更新的一些方案,从程序域来加载和卸载DLL,到使用ILRuntime来实现安卓和IOS平台 ...
- Unity实现c#热更新方案探究(二)
转载请标明出处:http://www.cnblogs.com/zblade/ 一.IOS对DLL热更新的禁止 紧接上文,继续对C#热更新的研究.上文中,已经说了如何基于appDomain来实现对DLL ...
- Unity实现c#热更新方案探究(一)
转载请标明出处:http://www.cnblogs.com/zblade/ 最近研究了一下如何在unity中实现c#的热更新,对于整个DLL热更新的过程和方案有一个初步的了解,这儿就写下来,便于后续 ...
- Unity的赛车游戏实现思路
unity目前版本实现赛车的技术方案主要有3种: 1.wheelCollider,设置motorTorque.brakeTorque.steerAngle来实现车子的推动和转弯,优点是上手简单,而且很 ...
- Unity 消消乐开发思路
以简单的方式讲述游戏开发思路,暂时没有实践,如有错误,欢迎各位大佬指错 关卡数据保存方式 数据保存我选用json,可读性强,解析快 消消乐物体处理方式 消消乐物体我将以预制体的方式使用(把物品拖到As ...
- Unity编译Android的原理解析和apk打包分析
作者介绍:张坤 最近由于想在Scene的脚本组件中,调用Android的Activity的相关接口,就需要弄明白Scene和Activity的实际对应关系,并对Unity调用Android的部分原理进 ...
- Unity塔防游戏开发
Unity3D塔防开发流程 配置环境及场景搭建编程语言:C#,略懂些许设计模式,如果不了解设计模式,BUG More开发工具:Unity3D编辑器.Visual Studio编译器开发建议:了解Uni ...
- Unity光照与渲染设置学习笔记
学习了一下unity中有关光照和渲染的一些设置,现在才明白之前遇到的一些问题只是没有正确设置而已. unity不同版本的光照设置会有一些差异,而且可以调节的参数非常多,这里只记录一些重要的参数和使用方 ...
- Unity核心对象模型
总结的Unity引擎部分的核心对象模型类图,供大家学习时参考,根基类为Object,下一层包括核心基类GameObject,及其他作为资源的Mesh,Material,Shader,Texture,S ...
随机推荐
- php扩展php_curl windows 安装问题
关于安装php扩展php_curl 出现的提示错误,导致php_curl无法安装 apache 错误日志: PHP Warning: PHP Startup: in Unknown on line 0 ...
- PHP清理跨站XSS xss_clean 函数 整理自codeigniter Security
PHP清理跨站XSS xss_clean 函数 整理自codeigniter Security 由Security Class 改编成函数xss_clean 单文件直接调用.BY吠品. //来自cod ...
- 原生JS:Object对象详细参考
Object对象详细参考 本文参考MDN做的详细整理,方便大家参考MDN JavaScript原生提供一个Object对象(注意起首的O是大写),所有其他对象都继承自这个对象. 构造函数: Objec ...
- 见见面、聊聊天 - 5月22日晚7点Meetup,三里屯绿树旁酒吧,畅谈云技术和应用
总是邮件.QQ什么的线上聊,让我们见面吧,不怕见光死,呵呵. 我和同事会先抛砖引玉,给大家介绍一下Autodesk几款最新的云技术和解决方案,然后大家就可畅所欲言,自由交流.来自五湖四海的人,为了 ...
- UITableView中的cell的优化
1.cell的重用 所谓的cell的重用就是,视图加载的时候只会创建当前视图中的cell,或者比当前视图多一点的cell, 当视图滚动的时候,滚出屏幕的cell会放进缓存中,滚进屏幕的cell会根据I ...
- Java虚拟机JVM学习07 类的卸载机制
Java虚拟机JVM学习07 类的卸载机制 类的生命周期 当Sample类被加载.连接和初始化后,它的生命周期就开始了. 当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就 ...
- java "".split(",")
String[] string = "".split(","); 结果是string = []; String[] string = " " ...
- 使用T-SQL进行活动目录查询
最近在某个项目中,需要针对TFS的用户按照所属的AD组来进行数据分析,但发现TFS中并没有存储用户所属的组信息,故考虑直接从AD中提取这个信息并存放在SQL Server的数据库表里面去. 经过一番G ...
- header("location:test.php")跳转成功需要注意的
header("location:test.php")跳转成功除了需要注意以下三点还有一个前提必须要注意: 1.location和":"号间不能有空格,否则会出 ...
- 安卓普通类通过classloader访问资源文件
Android studio不知道怎么设置,才可以在生成APK时把一些文件打包进去. 但是不管怎么样,放在res文件夹下的东西是一定得打包的.所以把一些资源文件放在res/raw这个文件夹里是科学的. ...