2023-7-8-欧洲小镇街道场景解析-1

这个系列有45小时和西部世界那个场景可以说是一个类型的项目,都是小规模建筑街道场景带一些地形绘制且都没有用到zbrush做模型方面的细节,本项目中没有涉及substance designer自己做材质。其中用到的材质目前看都是bridge上下载的,这个可以说科技树分支限定的很小了,易于观察。看这个教学要对比与西部世界中master material的设定,在无雕刻的情况下是如何处理细节的。另外这个项目中用到了不少blueprint的程序做路沿、道路的spline铺设,这个暂时不研究。重点放在材质创建、管理上,此项目有材质函数。

本项目用到了3dsmax、bridge、substance painter。

4节制作道路模型,调整uv,材质来源于bridge,以ue mannequinn作为参考。

​​​​​

5节复制一个道路用切割工具切出一些面做细节凹凸,分离删除复制的mesh。

6节,创建road master material,如下的文件管理分布。

下载了沥青材质在master material用make material attributes节点串联鹅卵石和沥青的贴图纹理。再用lerp混合二者。

7节用heightlerp混合两种材质,注意这里把normal的蓝色通道连接到了height,根据网友提问的说法,normal的蓝色通道带表点的相对平面的高度。

Think of the normal map as a grid full of sticks, one in the middle of each pixel. The normal map tells each stick how to lean. The Red is the left/right lean, the Green is the up/down, and the Blue is the height of the tip of the stick off the plane.

If we assume that the normal is normalized (the stick has a length of 1), then we can calculate the height from the other two. Blue = ( (Red+Red)^2 + (Green+Green)^2 ) ^ 1/2

以下是chatgpt对normal的红绿蓝通道说明。

在计算机图形学中,法线贴图(normal map)是一种常用的技术,用于在低多边形模型表面模拟高多边形模型的细节。法线贴图的红绿蓝(RGB)通道通常用于表示不同方向的法线向量。

在法线贴图中,每个像素的RGB值用于表示该像素对应点的法线方向。以下是通常的约定:

  1. 红色通道(R):红色通道通常表示法线向量在模型表面的X轴方向上的分量。较暗的红色表示向内,较亮的红色表示向外。

  2. 绿色通道(G):绿色通道通常表示法线向量在模型表面的Y轴方向上的分量。较暗的绿色表示向内,较亮的绿色表示向外。

  3. 蓝色通道(B):蓝色通道通常表示法线向量在模型表面的Z轴方向上的分量。较暗的蓝色表示向内,较亮的蓝色表示向外。

通过使用这三个通道,法线贴图可以存储每个像素点的法线信息,以便在渲染时根据法线的方向计算光照效果。这样可以实现在低多边形模型上产生高多边形模型的细节和凹凸感。

需要注意的是,不同的软件和工作流程可能对法线贴图通道的解释有所不同,因此在特定的情况下可能会有一些差异。但是上述的通道约定是最常见和通用的用法。

在Unreal Engine中,使用HeightLerp函数进行两个高度图之间的过渡时,可以指定一个过渡阶段(transition phase)。过渡阶段是在从一个高度图过渡到另一个高度图时的中间过程。相当于lerp中的alpha?它的值也是0-1。这里使用vertex color,默认情况是1也就是白色,因此初始状态是其中一种材质。当我们使用红色通道顶点绘制时,移除红色,则会显示出蓝+绿的蓝绿色,此时绘制区域数值不再为1,因此会出现另一种材质,contrast参数我推测为二者的过渡的柔和程度。

Height Lerp Node | 5-Minute Materials [UE4]

本系列作者认为用一个常量来调节contrast来控制材质混合柔和程度不好,应该对高度贴图本身做调整,这是不是因为一个是线性一个是指数?以下这一串连在normal蓝色通道,为了保证数值在0-1加上了saturate。

调整uv去除沥青上的重复纹理,不在鹅卵石上做是因为这上面有几个凹凸是mesh会导致错位。add相当于偏移,multiply则是缩放。

给鹅卵石的basecolor添加饱和度颜色叠加控制。

8节作者说把tiling调整到0.5,复制实例平铺没有接缝。给normal添加了一个强度控制。

用之前章节同样的方法添加树叶材质与沥青、鹅卵石混合。这里不同的transition phase各自连接vertex color算是同一个么?目前来看应该是区分开的,在树叶与沥青、鹅卵石混合上采用了绿色通道。

9节作者说heightlerp相对而言性能更好,只需要一个heightmap。

再用同样的手法添加水洼材质。我注意到目前为止这样一个master material生成的材质实例会有惊人的参数列表,而作者在顶点绘制调整参数时显示parameter groups 1、2、3、4,这是在添加框选comment之后自动绑定生成的吗?

10节将原先的各个材质打包成材质函数(加入input),只有一层参数传递,让master material看起来干净整洁。将master material中的节点转换为参数连接在材质函数上,不过这样做的话之前绘制的设置就丢失了,有必要先复制好之前的赋值,或者说先把框架搭好了再具体绘制?我突然想到一个问题这样的绘制,如果放到一个大型城市中那不得弄死人了?肯定到时候得想某种遮罩控制绘制区域。

11节用blueprint做道路曲线的延伸这里跳过,12节对不同instance做颜色变化,这里用到了perinstancerandom,在matrix项目中提到用perinstancerandom操控udim来变化不同实例所使用的uv来控制贴图达到不同的砖块mortar效果。

注意观察材质函数的输出,将材质函数拖进master material可以发现其连接为红色的input节点。

12、13节之间有跳跃,12节中master painted这个master material创建了路沿的材质实例,到13节时这个master material里的内容产生了巨大变化。包含了dithering地面材质融合,以及顶点绘制的逻辑。

物体实例的顶点绘制是一样的,我不知道这个能不能用perinstancerandom去调整,示范中采用了world position用noise texture不规则全局遮罩对顶点绘制做了不规则遮挡从而起到让实例上的顶点绘制看起来有区别。

13节

15节建模人行石板路,16节用之前的材质函数基于Master Road生成材质实例FloorSide添加顶点绘制混合材质。

17节对整个场景中水平与立面交汇处做dithering处理,这里的dithering是用alpha通道顶点绘制做上去的。

18节用blueprint做人行道石板的延伸暂时跳过。19-22节做墙面,这个系列的导入是逐个fbx,进入ue后需手动摆放。23节说bridge下载的材质法线有问题,我想应该不会吧,有问题到时候再看。

24节使用world position+noise 纹理做遮罩,给道路添加颜色变化。master material设置时对所有继承的实例都起作用,可以默认关闭在材质实例中设置这样可以对不同的材质实例给到不同效果(可以配合perinstancerandom对使用同个材质实例的多个实例产生局部变化嘛?)。

这里做墙面的着色新建了一个master material考虑到使用的纹理贴图少以及要使用parallax occlusion.

25节新增一个材质函数BasicMaterialSetup_BumpOffset,用normal的蓝色通道高度连接bumpoffset节点,配合textcoordinate连接uv,再连一个参数调节强度(HeightRatioInput)?

我不清楚这和直接调节normal flatness有什么区别,不都是凹凸程度嘛?以下为chatgpt介绍,具体还得到时候实践了再说。

在Unreal Engine中,Bump Offset和Normal Flatness(法线平坦度)是两种不同的材质特性,用于模拟物体表面的凹凸效果。

Bump Offset使用法线贴图来修改法线向量的方向,从而创建凹凸的视觉效果。它可以让平坦的表面看起来具有深度和细节。通过调整偏移量的大小和方向,可以控制凹凸的程度和方向。

而Normal Flatness是一种用于调整法线向量平坦度的特性。它可以改变表面的光滑程度和反射效果,而不会在表面上创建真正的凹凸细节。通过调整Normal Flatness值,你可以使法线向量更接近于垂直于表面,从而使表面看起来更平滑。较低的Normal Flatness值会使法线向量更接近于平坦,而较高的值则会使法线向量更垂直于表面。

可以说,Bump Offset主要用于在视觉上创建凹凸效果,通过修改法线向量的方向来模拟物体表面的细节。而Normal Flatness则是用于调整法线向量的平坦度,影响光照和反射效果,而不会在表面上创建真实的凹凸细节。这两种特性可以在材质的创建过程中结合使用,以达到更真实和逼真的表面效果。

Master_Wall设置用于顶点绘制的第二套材质。

通过调节normal蓝色通道的值修改高度,来变换两种材质的着色比例。另外HeightLerp中的contrast改变二者混合的柔和程度。可以同时选中多个物体进行顶点绘制。

power节点用来增强对比度的原理是指数函数当指数越大乘积倍数多0-1之间的值就会更小接近0从而变黑,暗的部分会更暗因此对比度强了,而相反指数小于1时则会让对比度下降。对比度通过power增大为了恢复原来的亮度则需要用乘法把值提升回来。

26节添加水泥墙材质,用worldalignedtexture可以将一个贴图应用到所有使用的实例上,这个案例中因为墙面具有平面连贯性所以适用,如果是两个方向轴有错落就不好用了。

lit模式转为unlit模式会关闭法线与灯光的互动只显示base color。

双击连线可以创建一个分支线这样让节点连接看起来不乱。

27节导入了一个bridge下载的窗到3dmax,对墙做了挖孔,创建了一个玻璃。28节用sp给玻璃做污渍遮罩,这部分我觉得参考西部世界的项目就好了。30节把窗户、玻璃导入,手动调整大小、位置,添加玻璃材质。

31、32节用3block out场景

2023-7-19-procedural-building-generator使用总结1 2023-7-10-blender几何节点buildingnodes-osm插件

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×