Unity的unity ios 实时阴影影效率低吗

Unity的实时阴影效率低吗_百度知道Unity3D技术之方向性阴影_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Unity3D技术之方向性阴影
上传于||文档简介
&&U​n​i​t​yD​技​术​之​方​向​性​阴​影
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩5页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢U3D实时阴影绘制及Shader解决方案 - 泰课在线 - 国内专业的Unity在线学习平台|Unity3d培训|Unity教程|Unity教程 Unreal 虚幻 AR|移动开发|美术CG|UI平面设计|前端开发 - Powered By EduSoho
本课程VIP3以上免费观看。
IT公司技术总监
学完了课时
开始学习课时
开始学习课时
学完了课时
开始学习课时
Unity3D技术交流1群
泰课Unity3D公开课
工作时间:9:00 - 18:30
北京客服:010 -
广州客服:020 -程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity3D研究院之使用RenderTexture制作动态阴影(四十八)
Unity3D研究院之使用RenderTexture制作动态阴影(四十八)
围观42724次
编辑日期: 字体:
引子:MOMO这段时间有时会玩TempRun ,后来得知它的Android版本是用Unity3D做的。后来我发现了一个诡异的问题就是TempRun角色的动态阴影到底是怎么实现的??我手头上有一个三星的Nexus7平板测试机,可是我用Unity4制作阴影放在Nexus7上动态阴影死活不显示,可是我在同样的机器Nexus7装上TempRun动态阴影就显示的非常清楚。接着我查了一下发现Unity4只是在大部分移动平台手机支持动态阴影,Nexus7 属于Tegra 3 并不支持动态阴影。TempRun是怎么实现的呢?
后来,我尝试使用RenderTexture来制作动态阴影。做是做出来了,不过要做的很精细那么有点麻烦。文章的最后我会把我的想法说出来。如下图所示,这个阴影我就是用RenderTexture来制作的。
下面开始学习,在Project视图中,选择Creat-&RenderTexture ,接着在Hierarchy视图中在创建一个摄像机。(用来渲染RenderTexures)
Background :保持背景为透明,颜色值都改成 0 ,表示完全透明(截取只能按矩形所以背景需要做成透明了 不然就穿帮了)。
Culling Mshk :摄像机照射的层,这个摄像机会一直跟随主角移动,始终保持侧面观察主角。取得主角侧面每一帧的图像,并且渲染在地面上。从侧面观察难免会取到主角背景的图像,所以在这里我们把主角放在TransparentFX这个layer上,摄像机也只去这个Layer上截取模型。(当然你也可以重新创建一个Layer)
Target Texture :就是把这个摄像机每一帧所看到的图像复制给刚刚创建的RenderTexutre(刚刚创建的RenderTexure拖拽到这里即可)
然后在创建一个平面,记住一定要给它一个透明的材质球。这里我选了Transparent/Diffuse。然后是颜色,选择一个黑色偏灰色的颜色就可以。因为阴影是灰黑色的嘛。
然后在创建一条简单的脚本,把它绑在影子所在的平面上。像这样给他赋值。
12345678910111213141516
using UnityEngine;using System.Collections;&public class NewBehaviourScript : MonoBehaviour {& public RenderTexture t; & void Update () {
renderer.material.mainTexture = t; }& void OnGUI() {
GUI.DrawTexture(new Rect(0,0,100,100),t); }}
代码比较简单我也就不做解释了。。运行后效果,小牛头人一直在播放奔跑动画,它的影子动态的投影在身后的墙上了。
最后我在文章开始说过美中不足的地方
1.需要根据光照的旋转角度来动态计算阴影面的角度。如果光比较多那么计算量是非常庞大的,而且还有影子的根据光线的拉伸效果。
2.影子投射在地面时,如果地面凹凸不平,所以影子不能绘制在一个Plane上。而需要动态的计算影子的网格,目前我能想到的办法就是通过N条射线,从主角身后(根据主角的坐标与旋转角度来计算周围一定区域每一个点的坐标)从上方向垂直的地面发射射线,得到地面凹凸的每个点的坐标,在根据这些坐标动态的生成一个凹凸不平的网面。(如果你用的是unity3d地形那么有专门的方法得到地形的高度,如果地形使用美术建的模型来做的那么只能用这个方法喽)最后把上面做出来的RenderTexure渲在这上面。
补充。其实在StandardAssets中就有一个用投影做的简单阴影的包。在Project视图中
importPackage -& Projectors 。如下图所示,把Blob Shadows Projector 拖进Hierarchy视图中。简单的调节一下就可以了。
还有一个叫fastshadows的一个阴影插件。前几天我简单看了一下,如果是自身不会改变的话用它就挺好, 只占一个drawcall。
最后是本文的下载地址:
另外感谢楼下回复我的这个哥们,
这几天我要尝试一下shadowsmap了 哇咔咔。。
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!

我要回帖

更多关于 unity3d 手机实时阴影 的文章

 

随机推荐