Dynamic Shadow Projector

本教程演示如何将动态阴影投影对象添加到场景中。
双击点击视频演示!
Dynamic Shadow Projector_第1张图片

1.开始新建一个场景
现在,场景只有一个主摄像机以及一个定向光。在项目中,有 DynamicShadowProjector 和标准资源(相机包和角色包)。
Dynamic Shadow Projector_第2张图片
2. 添加一个平面对象和角色对象
你已经有一个地形对象,并在场景中的玩家角色对象。在本教程中,我使用标准的资源平面物体作为一个地形,并ThirdPersonController作为一个玩家角色。
Dynamic Shadow Projector_第3张图片
3.关闭阴影贴图
如果你能在这一点上看到一个影子,它是一个阴影贴图。选择 Hierarchy 视图中的定向光,并更改阴影类型为 “No Shadows” 。如果你想使用 GI ,它可能会更好地使用质量设置来禁用阴影贴图。
Dynamic Shadow Projector_第4张图片
4. 创建一个投影对象
定向光线下创建一个空的游戏对象,因此该对象的变换可以相同变换方向的光线,并将其命名为对象的Shadow Projector
Dynamic Shadow Projector_第5张图片
5.添加Draw Target Object组件到投影机的对象
,点击AddComponentInspector 视图按钮,然后选择Scripts”>“DynamicShadowProjector”>“Draw Target Object
Dynamic Shadow Projector_第6张图片

6. 设置角色对象作为目标
影子投影对象应具有 Projector投影组件,ShadowTexture Renderer渲染影子纹理 组件,和Draw Target Object 绘制目标对象的组件。拖动ThirdPersonController对象(角色对象),并将其拖放到Draw Target Object component组件Target插槽里。

Dynamic Shadow Projector_第7张图片

7.创建阴影投影机新材质
接下来,你需要创建一个材质为这个投影组件。右键单击Assets文件夹,选择“Create”>“Material。然后,命名材质影子投影机。您可以为这种材质使用任何投影着色器,例如,Projector/Multiply着色器的标准的资源里的 Effects package。在本教程中,我想用DynamicShadowProjector/Projector/Dynamic/MipmappedShadow着色器演示百分比接近过滤器像软阴影。

Dynamic Shadow Projector_第8张图片

8.Projector组件指定材质
选择 Hierarchy视图的ShadowProjector对象,拖动Projector的材质,并将其拖放到Projector组件的Material插槽里。

Dynamic Shadow Projector_第9张图片

9.调整 这个Projector的位置和大小
现在是准备好绘制阴影。设置Projector组件的参数,并调整为下面的图片在场景视图投影对象的位置。请注意的是,位置的右侧值将根据该角色对象的位置发生变化。确保阴影图像位于纹理的中心。

Dynamic Shadow Projector_第10张图片

10.纹理设置更改
要充分利用Mipmapped阴影着色器的优势,你需要改变纹理设置为如下图所示。你会看到在场景鉴于阴影纹理窗口几个影子图像。最左边的图像是MIP 0级图像,最右边的图像是最高级别的图像。
*
版本 1.0有一个内存泄漏的bug。如果mip级别大于0,一个临时渲染纹理尚未释放每一帧。1.0.1版本即将发布。请不要忘记更新该资源。

Dynamic Shadow Projector_第11张图片

11.调整剪切面距离
尽管模糊的影子Mipmapped影子纹理,人物对象仍然有一个硬的阴影。这是因为,MIP 0级的图像始终用于阴影。通过Mipmapped阴影着色器选择了一个MIP级别从Projector 的近剪裁平面和阴影被丢弃点之间的距离的。这意味着,mip级别0将被用于绘制阴影周围邻近剪辑平面,和最高水平将用于绘制阴影围绕远截面。因此,要使阴影更加模糊需要调整的 Projector 组件的剪裁平面。
Dynamic Shadow Projector_第12张图片
12.为角色对象添加一个图层
如果你从角色后面看一下,你会发现,阴影在人物的脚铸造。要删除角色自身投射阴影,你需要为角色对象添加一个Layer。点击“Layers”下拉菜单,在单位窗口的顶部右侧,然后选择“Edit Layers...”。然后你会看到在Inspector视图Tags& Layers设置。输入图层名称到用户层。

Dynamic Shadow Projector_第13张图片

13.为角色对象指定层
选择角色对象,并指定在 Inspector 视图Layer指定Shadow Caster

Dynamic Shadow Projector_第14张图片

14.在这个Projector
添加忽略层

回到ShadowProjector对象,在Projector组件添加Ignore Layers。然后添加Shadow Caster,自身投下阴影就会消失。

Dynamic Shadow Projector_第15张图片

15.添加备用部件
现在阴影看上去很完美了,但还有一个步骤。Mipmapped阴影着色器使用tex2Dlod功能。它需要支持ShaderModel 3.0(的DirectX)的OpenGL ES3.0OpenGL ES 2.0+纹理LOD扩展。因此,它可能无法正常工作的一些老设备。更好准备一个备用的设备,特别是如果你的目标是移动设备。

点击AddFallback Component按钮。然后,Mipmapped阴影备用组件将被添加到影子投影对象。如果你勾选Test Fallback,你可以测试场景视图中回退,并调整回退参数

Dynamic Shadow Projector_第16张图片

Dynamic Shadow Projector_第17张图片

16.添加一个摄像机和播放的场景
现在是时候测试场景了。为了更容易检查的阴影,让我们添加一个摄像机。拖放MultipurposeCameraRig在标准的资源进入现场,并设置角色目标的摄像机的目标。不要忘了删除旧的主摄像机。 

Dynamic Shadow Projector_第18张图片

现在,你可以玩情景了。控制使用箭头键或ADWS键(移动)角色,并用空格键(跳跃)。

百度网盘下载:  密码:tam1




你可能感兴趣的:(Unity)