定制阴影地图的方式 VR资源

manew_JR 2017-07-21 17:12:38
 
 
对于某些高级材料,能够渲染每个对象阴影的自定义是有用的。 对于移动项目,这可以让您渲染与Epic“Zen Demo”类似的叶子的烘烤阴影贴图。 在UE4内部灵活地执行此操作意味着也可以捕获特定的物质效果,这可能难以转化为其他程序。 您还可以对更先进的光线跟踪技术进行原型制作,包括制作自定义光照渲染器。
 
 
 
由于使用了自定义的材料技巧,UE4内部的静态照明并不能很好地照亮树。也许可以用第三方程序烘烤一个定制的lightmap,但是这样做意味着光映射必须为特定的视图方向进行烘烤,而且它们看起来完全是静态的。
 
为了解决这些问题,为树提供了一个规范化深度映射,并在材料中使用自定义自阴影。这个深度地图被存储到一个静态纹理中,然后从光线的角度动态投射到树上。这使得阴影看起来更有活力,因为从光线中精确捕捉到深度,任何应用到树的顶点动画看起来都在移动动态阴影,因为几何图形会移动“过去”的阴影。尽管阴影本身是静止的,但这种运动使它看起来是动态的。也可以用可变大小的比较因子来近似下表面光。
 
 
 
 
本文要求:
一个渲染目标
一个actor的蓝图
一个场景捕获组件2D
 
影子预览材料
首先,使用内容浏览器创建新的呈现目标。把你想要用到的东西定好。
 
蓝图的设置
 
组件
创建一个新的Actor蓝图,并添加一个场景捕获组件2D到它。选择场景捕获并将投影模式设置为正射,并将捕获的每帧捕获为False。分配渲染目标到场景捕获。
 
变量
在blueprint中添加一个新的类型静态网格参与者的变量。它SMeshActor名称。通过点击旁边的眼球图标来设置可编辑的变量。使用actor变量将允许该蓝图与已经存在于级别中的任意网格进行工作。您还可以设置蓝图来产生它自己的静态网格,并进行一些细微的修改。
 
创建一个动态类型的变量。命名为阴影预览中。
创建一个类型向量的变量,并将其命名为LightVector。将其设置为可编辑。
最后,创建一个布尔类型的变量,并命名它显示预览材料。现在我们已经完成了设置变量的工作。
 
功能
在blueprint中添加一个新函数,并将其命名为Light Transform。选择函数输入或输出节点,确保纯为真。添加名为X、Y和Z的向量输出,并将它们连接起来。
 

 
构建脚本
blueprint脚本的其余部分将作为节点添加到构建脚本中。为了使图像清晰,我把它分解成小图像。您可以按顺序将它们连接为节点,也可以为各个部分创建函数。首先,我们创建一个中点并分配我们的中间变量来包含对它的引用:
 
 
接下来,我们使用光转换函数的结果来设置场景捕获组件的位置和旋转:
 
接下来,我们使用静态网格像素的Sphere Radius设置场景捕获组件的正交宽度:
 
 
接下来,我们再次使用光转换函数在中间变量中设置三个向量参数值:
 
 
蓝图脚本的最后一部分是可以选择将Shadow Preview MID应用于指定的Static Mesh Actor上的所有材质元素:
 
 
 
可选步骤
也可以创建可编辑的“定向光”类型的变量。 然后通过将以下节点添加到构造脚本中,您可以编辑光矢量并更新定位灯,以在级别中匹配:
 
 
 
材质
在材质中,网格的世界位置将被转换成我们使用蓝图所构建的光转换。偏差参数控制阴影比较。更大的除数值可以创建一个更表面的外观。
 
 
 
 
现在,我们可以将蓝图放入世界,并指定它指向任何静态网格。 选中“显示预览材料”选项后,阴影预览比较将显示在世界地图上:
 
改变阴影偏移量抵消阴影开始的地方:
 
 
 
改变阴影除数,改变整个阴影所需要的距离:
 
 
 
回到上一篇关于UV扩张的帖子,可以将另一个渲染目标链接在一起,并在阴影贴图比较上执行阴影半影模糊,并将该值存储为归一化光图,而不是基于深度的阴影贴图。
 
您可能会注意到这是基于“渲染到纹理蓝图”工具集中包含的功能。 我想以一种可以以交互预览的方式重新创建该系统,而不是要求将屏幕截图作为单独步骤进行烘焙。 未来的计划是最终从“UE4”的Engine \ Content目录中删除“Render to Texture”蓝图,并将其作为内容插件重新发布,现在我们可以在项目之间共享内容插件。
99VR视界二维码
热门推荐
Hot Recommended
在线客服