此指南于2021年6月2日写。
TVE是一款能够控制全局植被shader,与植被进行交互,自定义改变植被某块区域颜色等常用功能的框架。如今它为procedural instance的插件(如natrue renderer、GPU Instance、Vegetation Studio、Mega World Quadro Renderer)提供了支持,甚至还有专为Amplify Impostor提供支持的插件(可以让impostor使用更多功能,比如风动画。这个功能是它这款插件的插件之一,需要另外购买),功能非常强大。
现在,这款插件的最新版不仅支持各大真实植被资源,甚至还为各大风格化植被资源提供支持(如azur nature、illusion nature、nature renderer kit、fantasy adventure environment……)
插件开发者的ytb:https://m.youtube.com/c/CristianPop-BOXOPHOBIC/videos
接下来就进入正题,所有操作流程皆为官方教程所示。
Getting Start
首先,你需要在导入插件之后选择当前项目所用的管线进行搭建,如果有它支持的gpu实例化的插件,便需要接着在window>BOXOPHOBIC>TVE>Shader Setting内选择对应的插件并install。
如此,需要导入的东西就都导入完成了。
接下来,你需要在当前的场景内添加TVE manager物体,在hierarchy窗口右键BOXOPHOBIC>TVE>Manager即可创建一个Manager,这个Manager内包含所有可控制的全局变量,如风力、季节权重等。此外,其中一个叫做Global Volum的东西格外重要,它划分了一块方形的区域,所有与植被的交互都只能在这块方形区域中进行,出去就没有效果了,类似HDRP后处理的volum用法。
之后,你必须把目标植被转换成TVE Prefab才能享受到插件带来的效果。选中场景内的unity prefab物体,打开window>BOXOPHOBIC>TVE>Prefab Converter,在conversion preset内选择适合当前植被的预设(比如转换的是棵树,就选择tools/tree it/Vegetation),之后点击convert就可以了。转换后的TVE Prefab会在原来Unity Prefab的文件位置生成一个相应预制体的文件夹,用于储存原prefab和TVE Prefab的数据和模型。
完成以上步骤,我们就已经基本完成TVE项目环境的搭建了。
交互系统
在搭建完环境之后,我们可以在hierarchy右键BOXOPHOBIC创建一个Element,这个element便是可于植被交互模拟的物体,你可以通过移动它来使它与不同位置的植被产生交互。默认创建出来的element是改变植被颜色的,你可以通过切换BOXOPHOBIC/TVE/Element/Default内的shader来使用其他交互效果,比如Motion Interaction便是与植被产生压扁的效果。
切记,这些交互效果必须要处于Global Volum内才能正常使用,你可以缩放global volum内对应颜色、其他、顶点(位置)的volum,也可以直接缩放global volum来匹配你所需要的地形大小。但是以上方式会导致交互系统产生bug,所以不建议用缩放volum vertex的方式,你可以选中volum vertex的update volume element并指定跟随的根物体来实现交互volum的全局使用。
注意:颜色相关的element就算放在y轴低于草面的地方也能起作用,作用域包括y轴的所有区域。
覆雪效果的开启
在场景中找到global overlay,并将overlay intensity拉到1即可实现覆雪效果。
如果对雪的覆盖程度不满意,可以在对应TVE Prefab的材质中找到global setting>overlay mask把左滑条拉向左边,以加深覆雪面积。
也可以使用TVE Prefab上的open material,快速便捷地对附属材质进行任意属性的编辑。
季节功能
使用这个功能前,务必要把global overlay的intensity拉到0。这里提一个操作,element的显示可以通过global volume内的element visibility控制。
要使用单个季节功能,需要先创建一个能覆盖整块区域的颜色element,并将它的shader切换成插件提供的Extras Overlay。之后,你需要把材质的element mode更改成seasons,并将下面element setting的季节权重拉好(比如我要用这块element做冬天的效果,就把winter value拉满,其余的都拉到0)。
设置完成之后,在场景内找到global seasons,通过改变滑动条对应的季节值即可实现季节之间的切换。
这里要强烈建议把element全部命名好对应的效果名,不然设置和使用起来会极其不方便。
在季节系统中的遮罩
比如说你希望什么东西在雪草地中穿行的时候,那片区域的草不会覆雪,那就按照上面的方法创建一个同样是Extras Overlay的element,但是在这个element的材质里,element mode应该改为constant(旧版叫main),并且把element value拉到0,调整这块element的大小到你觉得适合作为遮罩的大小,便可以在季节系统中做到遮罩的效果。
季节切换
想要做到季节切换,和之前一样:先把global overlay的权重拉到0,然后这次创建一个同样覆盖全场景的color element。
注意:这里用的是color default的shader,而不是之前使用单个季节时的Extras Overlay的shader。
将element mode改为seasons,element effect改为replace material color,然后在element setting中为每个季节的颜色赋值,最后在global seasons里拉滑动条即可看到切换季节的效果。
相比于上面的单季节切换更方便,并且单季节切换的Extras Overlay只受global Overlay内的单一颜色影响,无法做到多季节切换的效果。
说实话,这功能做得有点多此一举的感觉。
风格化资源包的设置
不论是那种资源包,搭建项目的方式都与上面所述的一样,之后选择对应的shader setting即可,因为作者与这些资源包的作者合作完成了可与他们制作的资源互通的shader,我们不需要担心风格化与原资源不一的问题。但是由于我们把原来的资源换成了TVE Prefab,这里就必须要手动调整一些shader参数才能获得最好的效果,TVE的作者ytb上演示了每种合作资源的修改方式,我这里只是复述作者调整的过程,当然你大可不用完全用作者的调整方式,以下内容仅供初次调整时参考。
1.Nature Renderer
我们把nature renderer自带的草模型转换成TVE Prefab之后,进到转换后的材质内,在render setting将Render Normals改成Mirror,Occlusion Setting内的Vertex Occlusion Color改为白色,最后将下方的Subsurface Scattering Color的intensity拉高2(该颜色属性是HDR Color,此操作用于增加次表面散射的亮度)