Bootstrap

UE利用视差材质随机生成建筑物室内景观

对于数据自动生成的建筑物,一般要使生成的室内景观多样化,增加建筑的真实感。人工处理建筑窗户的视差贴图工作量较大,这里介绍一种随机组合生成室内视差材质的简单实例。

1.首先确定好室内景观的几个要素,找好对应素材

第一个是室内墙壁,一般写字楼室内墙壁和天花板比较简洁,这里使用一个简单的办公室cubemap室内贴图,之后可以通过不同的自发光明暗强度和颜色,实现不同办公室的差异。

其次比较重要的是室内的布景,例如办公桌、沙发、书架等,不同的办公室摆放不同布景,实现办公室的多样化。这里我们从网上找到不同的家具贴图,汇总到一个贴图里,之后通过相应uv找到对应的布景。

还有就是一般办公室都会不同程度地拉下百叶窗,我们可以通过百叶窗遮盖范围的不同,增加室内场景丰富度。这里我们准备一个或多个百叶窗和窗帘的样式。

2.材质逻辑实现

我们的材质蓝图逻辑如下,主要分为两个部分,室内景观和建筑物外立面,都由一个材质实现。外加MF_RandomLight和MF_Divide_Concret两个material function,分别实现室内场景的随机化和玻璃幕墙外立面的隔断。通过tiling的输入,可以设置建筑物横纵方向的房间密度。

在房间视差内景这部分,我们先用UE的InteriorCubemap材质函数实现一栋建筑物上多个窗户的内景视差效果,之后用MF_RandomLight函数随机分配每个房间的灯光强度、家具和窗帘遮挡范围。

MF_RandomLight内部的逻辑如下

这里使用Sobol随机取样以当前建筑物mesh的绝对坐标为seed,来生成flipbook的随机序列帧,以此分配每个房间的随机家具,这样不同位置的建筑物上房间的内景也不一样。

在外立面上,MF_Divide_Concret逻辑如下

根据tiling,房间之间生成横向和纵向的隔断,这里隔断用UE引擎内的墙体材质。玻璃幕墙roughness为0,同时法线贴图加入一定扭曲度,贴合现实中的玻璃幕墙效果。

;