2023-8-24-Artstation的unreal场景2

之前跟做了这个系列开始的地形、地形材质制作,昨天看了两部分hero asset和wall floor trim纹样雕刻,其实这两部分之前就看过一遍,但是在把玩过matrix的材质、模型以及ben的材质教学后再看的感受有点不一样了,接下来总结一下。

目标是要做一个细节丰富带有许多不规则凹凸几何体表面的独木舟,作者为此找了许多独木舟造型、表面图案的参考。作为一个游戏项目的话,hero asset会有面数、纹理分辨率的要求,本项目使用ue5,nanite可以很大程度解放面数限制,不过这并不意味着可以直接使用高模(几亿面的那种)。

建模开始前最好有个示意图能将各个部分分区着色标注出来,这样建模时就很清楚各个部件的逻辑。

作者展示block out的阶段

由于使用nanite技术,因此无需考虑面数问题,似乎布线也不要考虑,低模和高模都是在zbrush中通过减面大师完成的,只不过减面的设置不同。

在maya、blender中做中模是因为他们在多边形建模上好操控、方便些,像之前有多旋翼无人机全套都用zbrush做,这个就是不同人的操作习惯了,所谓的中模阶段就是所有的结构清晰了,然后给zbrush雕刻细节。maya、blender等dcc软件更容易控制尺寸、间距。

进入zbrush制作高模,对于有棱角的硬表面mesh先要做crease折边,保障细分多次后不会使得边缘也软化,,然后dynamesh重布线使布线均匀。作者演示用套索选取这边的面,这是因为从maya导入过来的模型,其拓扑就是底面附近没有别的面,我想这样搞似乎太麻烦了吧,以前在建模中提到的保护线、保护边应该也是这个意思,防止光滑、细分后软化,那么理论上来说在blender中使用hard ops插件的极小bevel应该可以起到类似效果。

经测试用zbrush的drust tool 插件qc50也能完成blender导入模型折边,保障细分不被软化,话说一个月不用blender都快忘记咋操作了,感觉一周至少实操个半天。

zbrush雕刻创建一个morph target有助于在雕刻一段时间后发现有一处地方不好想还原,但是control z会让别的之后的雕刻也被清除,morph笔刷可以起到橡皮一样的作用

用trimsmoothborder做边缘磨损的雕刻,这是对于hero asset的处理,像在matrix项目中有edge damage那个应该是法线、roughness、颜色的处理,利用curature边缘遮罩搞得,二者对于效果细节的要求不同。trim dynamic也可以用来磨边,做磨损边缘效果,相比于trimsmoothborder而言,它更“柔软”,凹凸图案用遮罩绘制inflate挤出,若dynamesh重新布线会去除morph target,因此慎重dynamesh。

trimbordersmooth 配合 damstandard做硬表面的划痕。

船身的图案几何体凸起用遮罩绘制以后inflate,显然如果有一个好的alpha库直接拖拽成图案就好了,一个个绘制要弄死人,而且功力也不一定够。

作者提到因为使用了nanite,这里不会用法线贴图去拟合凹凸,而是直接以模型几何体去呈现,后期要压缩高度容易,要拉伸就难了。我不是太理解,按照我的理解可能是太平的话不好选择会影响周围的面,而凸出的话要压容易从侧面遮罩move压下去,然后在遮罩状态下做些微调。

作者演示说明zbrush的live布尔非破坏性操作,这有点和它前面说的自相矛盾,特别是下面这种圆柱布尔具有一定间距规律和大小递减,显然blender的op hard做非破坏性布尔应该会更好些。

uv展开,作者提到通过减面大师得到一个mesh烘焙或者一个低模一个高模烘焙,烘焙实际上就是把高模的细节转移到低模上的过程,不过在substance painter中我们见识过只有一个模型也可以烘焙法线、ao等等贴图,那么还有必要高模低模嘛。用rizom uv可以像blender中按control键,沿着最短路径的边全选,以此来手动分割uv,这里用到的是低模,nanite 模型展开uv时不像传统流程那样讲究。

作者对各个部件的命名规范做了说明,这是为了放入marmoset toolbag烘培做准备,我不明白substance painter也可以做烘焙为什么要在marmoset里面搞呢?在youtube搜baking low poly high poly不少结果暗示将高模细节烘焙到低模上。图2为高模细节烘焙到低模上的对比,使用软件为marmoset toolbag。

在substance painter中调整ace’s lut,这个是针对高光细节显示的,感觉是非常苛求质量的设置吧,一般我用智能材质、智能遮罩不会去手动调细节。创建一个fill layer添加遮罩,再用mesh fill,以此区分整个物体不同的分区,当然前提是模型本身有结构上的分离。

以船身为例添加一个木头材质,加入adjustment layer可以对色相饱和度明暗调整,这里没有源文件不清楚为什么natural walnut有三层。暂时不知道作者是怎样做每一层细节的,完全没有概念,对于matrix项目而言似乎不用搞懂这些,只要烘培出4个遮罩打包丢给它的材质系统即可,然而对hero asset如何处理还得深入了解substance painter.

导出纹理集设置。

做墙面、cornice、地板前收集的参考素材。

总体的规划,与做小船hero asset一样也是dcc软件先做个大概再放到zbrush做细节雕刻,不过烘焙之后放到substance designer里面之后的事儿就摸不着头脑了,目的是什么都不清楚。

做wall trim需要注意规格和拼接,作者演示自己做的部件可以拼接6x6的空间。重要的是如何通过参考图拼凑起来一个设计,是逐个部件先做了后拼的吗?我想在尺寸上既然有规划那么对部件是有限制的,如果是后期拼,可能存在拼接出问题的状况吧?

开始建模,用比例影响来改变局部扭曲,zbrush直接move也可以做吧,好久没用了不太熟悉了。这里展示了用基本几何体建模的功力。

进入zbrush做雕刻dynamesh提高面数准备雕刻,这里没有提到棱角软化的问题,估计是默认大家知道使用保护线。图2是作者完成雕刻后的状态,这里一个是对表面的处理,一个是增加细节也就是dcc软件里面通过多边形建模不好操作的东西。示范中可以看到trim的表面处理也是用trimdynamic做的。对植物藤曼的装饰细节用move、damstandard刻画细节。

用ps做灰度高度图再到zbrush用alpha使其成型,我感觉太麻烦了,不如直接在zbrush里面做。

这里的泥土斑驳仅仅是用claytube涂抹出来的,有一定技巧吧?

在substance designer中也有烘培功能,也是高模到低模。27节是不完整的,我粗略看了下整个教程似乎都没有说这一部分做的东西最后怎么使用了,在第一部分做地面时用到导入high res plane对其做编辑后export scene把一个带有凹凸细节的plane面片以fbx格式导入到ue中,第二部分

节点图表起始由高度贴图引出,而高度贴图是通过之前烘焙得到的,这里通过遮罩调整了高度图的高度。在介绍完高度统一的调整后,作者提到接下来的操作需要substance designer基础,看不懂的话先去看看基础。

这个遮罩是对tiling接缝处做处理用的。substance designer的预览中可以开启tiling模式,不过作者操作太快也没有说明,不清楚是怎么开启的。

注意节点图表的整理,作者将高度图的编辑打包,noise贴图打包,接下来展示multi warp grayscale,在作者的演示中我没看出来对这个节点改变,材质产生了什么变化,从他的描述来看应该是说图案边缘噪波一样的不平整效果。

这里将ao的遮罩混合?控制不平整噪波的位置。再次整理,不平整噪波称之为chips(碎屑、碎片),另一部分用大量噪音贴图的称之为细节和颗粒。

噪音贴图根据高度贴图附着于物体表面,让其不透明度设置的很小,可以看看噪音显示较大时的效果。

添加第二种类似孔洞、密集恐惧症的噪音细节

再添加一种噪音细节

这里作者做了一种噪音,通过调节random seed居然可以让物体表面的细节完全改变,这不就解决了tiling问题,不过如果通过贴图输出会造成大量的sample map占用资源,但是在sd中既然可以程序化改变细节,那么问题就是如何在ue中实现这种操作。

着色部分作者从normal贴图引出说是为了利用curvature,normal和curvature是什么关系?着色部分的控制实在是匪夷所思,这里不展开了。

roughness map是用base color配合ambient occlusion产生的,完全看不懂。

通过height map生成occlusion,这里面的原理听起来很复杂,我不明白难道不能在烘焙阶段生产?

制作第二个trim,基本上就是复制这些节点对参数做调整,因为他们的材质差不多。

完成两个trim的材质贴图后,作者展示它做的平墙材质,远看整个节点的布置可以看出来制作的逻辑和trim是一样的,作者没有深入说这个平墙材质怎么做的。

次级道具资产的建模与材质

一般而言一个游戏场景有100-1000个次级资产。

资产互相靠近时要设法制造区别,不能让他们看起来是复制的,这就涉及大小、资产样式、材质需要根据world position营造变化。次级资产要考虑模型、贴图占用硬盘空间大小,这会影响运行性能。以matrix项目为例,其建筑部分使用了2333个资产构成所有建筑的部件,每个部件都有两套uv,四个遮罩所使用的mask贴图,在这种状况下加载之后的运行在开启world partition分区加载以及vitural stream texture虚拟流送纹理的情况下完全不卡,small city这个map在6分钟加载后的场景漫游是45fps左右的帧率。制作这些资产要考虑到如何在短时间内高效产出。

在考量了整个场景后,作者决定做10个陶器,使用有限的纹理,并能scale。

从参考中确定材质、颜色变化,最后总结出制作前所要满足的需求。

要保证物体缩放还能合适的纹素密度,作者说需要两套纹理集,一个基本的陶土平铺纹理会根据物体缩放自动调整tiling,另一个纹理集是特定的细节。

作者在ps中画出了想要做的资产的轮廓,我觉得这一步没什么必要,直接把参考复制今来就好了。

50节讲texel density,如何确定纹素密度在刚刚接触这个概念时会觉得很迷茫。在演示中要做一个每平米1024像素密度的uv展开?我不知道这么描述是不是专业、规范。maya中的单位是厘米,示范中以一个1米高,32厘米直径的圆柱做圆柱uv展开后,将其uv置入一个格子中,一个格子是1米x1米,而图中所示texel density px/unit纹理密度 像素/单位,这里的单位指的就是厘米,1厘米10.24像素所以1米就是1024像素。这很诡异,uv是个二维空间,chatgpt也说了:

“Texel Density” 可以用以下方式表示:纹理像素数目 / 物体的单位面积。

  • 如果你希望在一个单位的面积上有更多的纹理细节,则 Texel Density 会比较高。

  • 如果你希望在一个单位的面积上有较少的纹理细节,则 Texel Density 会比较低。

那么按照面积转换的话10.24像素/平方厘米不应该是0.01024像素/平方米?

初期接触纹素密度时,最好把要做的模型和展开用作纹理的模型放在一起比对。

对要做细节的模板物体trim sheet分割uv,zbrush中可以auto group by uv,这样可以选中不同的polygroup单独做雕刻。雕刻时开启辐射对称,我看好几个视频对图案雕刻的物体都是设置1亿4千万面,这是巧合嘛?

claytubesConstant的雕刻保持恒定高度,因此不用担心雕刻的图案高低不平,坑坑洼洼。

这一段就很诡异了,使用了nanite技术可以保留几何信息,但作者说仍用trim sheet做normal map的方式伪造许多几何信息,这是为什么呢?我注意到matrix项目中的建筑部件,其自身的图案并没有使用法线来模拟凹凸而都是直接通过雕刻做出来的。图案可以通过trim sheet的方式用normal map表现凹凸来伪造几何特征,当然也可以把雕刻好的几何体作为subtool到处复制,merge再dynamesh合并几何体,后者在操作上就直观多了也方便,事实上,诸如matrix中的图案如果用法线去仿造我估计效果上是不行的,那种科林斯式的植物藤蔓变种的3维特征更强烈,更不要说还有狮子头、老鹰这些,而这些在matrix中不算hero asset只是次级的到处复制的实例。

作者在这里解释了通过geo去表达的细节和normal map表达的细节,后者不能刻画的太深入,以至于和geo刻画产生冲突,后者表现相当于浅浮雕。浅浮雕图案时开lazy mouse能更精准描绘图案。

没有雕刻的空白部分准备用来绘画图案

在将高模的雕刻细节烘培给低模前,作者说要对低模做细分是为了避免曲率的烘焙出问题,这个理解不来。

在marmoset toolbag中烘焙一些贴图

在ps中在normal map的基础上绘制paint 图案,这里讲到了绘制的技巧。暂时跳过,等实操的时候再看这种微操技巧。

对装饰雕刻的normal map在sp中做进一步的加工,叠加一层fill layer填充法线、高度图,利用遮罩配合高度图、invert只显示黑色或白色,再用level约束到某一灰度部分,从而表现散列的凹凸、坑洼细节。在texture set setting里修改normal map为replace,使得图案的凹凸被新的图层所取代,再新建图层把图案的normal map加上,再改变图层混合方式从而使得上层的normal map细节取代图案的normal map,营造出装饰图案雕刻缺损的效果。

通过在sp中这么操作省去了在zbrush里面对物体表面做这种裂痕、磨损的雕刻。

对最终的瓶瓶罐罐资产展开uv,添加粘土材质看效果。首先是添加前篇中提到的几何细节,所谓的几何细节在演示中的意思是给瓶瓶罐罐增加分段,有更圆润的过渡,有一些整体的环面凹凸,可以看到这个瓶瓶罐罐最终在作者所谓增加了细节后是2760个面,相对比而言matrix项目中用于做建筑部件instance的mesh在100万面。

通过自带的圆柱展开,得到4份,下图显示的是罐子内壁的展开。

这里提到的要完全无缝衔接需要对半裁切,可以图2的效果中看出来,贴图被镜像的贴在了两块面上,如果不对切呢,其首尾相连部分就会有个对不上的奇怪的缝。注意要把罐子的纹素密度设置为10.24和之前用于做雕刻生成法线细节的圆柱的纹素密度一致。

复制添加一个uv集,把装饰图案的材质添加上去方便可视化分割uv给不同位置采用想要的浅浮雕装饰图案。

对于不想要paint或者浅浮雕的部分,分割uv后缩小到很小放在没有图案的地方即可。注意对于paint、浅浮雕的uv投射,作者只有移动没有缩放,这应该是考虑到纹素密度,可以推断浅浮雕、paint在资产表面的像素是可以的,但图案的大小无法变动了,那么对于不同宽高的瓶瓶罐罐如何去掌控图案的大小呢?难道是相同的图案复制出来做不同尺寸,然后uv投射到不同尺寸的相同图案上?从这点来说,目前我觉得如果是直接雕刻的话就会直观很多。

当前map1是trim sheet装饰图案的uv集,uvset1是陶土tiling的uv集,作者希望调换他们的顺序,这里使用copy传递即可。

53节在ue中为瓶瓶罐罐设置材质。先是贴图,一个陶土的basecolor、陶土的法线凹凸贴图、装饰图案的法线凹凸贴图,下图中第五个紫色的贴图是一个packed channel贴图,其中红色通道用于打破tiling重复以及粗糙度贴图。绿色通道是paint的遮罩,蓝色通道是装饰图案的ao贴图。下图中第二个是dust 法线贴图,加在瓶瓶罐罐表面,为了打破重复的tiling效果。

下图中第三个黄绿色的贴图也是packed channel,包含了dirt和grime的遮罩,也是用来打破瓶瓶罐罐表面陶土的tiling重复,另一方面添加自然环境的污渍、水渍细节。第一个贴图是用节点程序来控制颜色随机选择,overlay叠加basecolor的。

法线贴图导入ue要注意如果sp、marmoset toolbag输出的是DirectX则无需改动,如果是OpenGL则要翻转绿色通道。

开始为材质添加uv的tiling、偏移,勾选use material attribute说是为了后期方便添加dirt、grime,暂时不清楚是什么作用。添加颜色正片叠底,以及法线的强度。

用object position的x、y坐标通过一系列函数运算去拾取颜色,可以使不同位置的实例拾取不同的颜色,这个打乱的函数可以有多种形式,以下是作者偏好的。

利用贴图basecolor本身的红绿蓝通道来做遮罩,对部分区域选择按照位置改变颜色,部分位置则保留原先的颜色,通过函数还可以控制遮罩的大小。

加入object radius可以控制物体的tiling与其缩放自动关联起来。

对装饰图案的使用要切换到uv set2,在Coordinate Index里面改编号,下标从0开始,第二套就是1.通过blendAngleCorrectedNormal混合两种法线凹凸信息。

关于法线混合,在matrix中brick、block的block line也是通过blendAngleCorrectedNormals将法线混合给表面添加砖块拼接线的凹槽效果的。

导入的mesh会自动创建lightmap uv,要保证它不覆盖自己创建的uv集,在这个示例中我们自身有两个uv集,所以lightmap uv的下标设置为2.不过matrix项目的mesh同样是两套uv集,并没有打开lightmap uv。

matrix项目中,第一套uv集对应4个细节遮罩,第二套对应block、brick的构成。可以看到下图1中4个遮罩的texture uvs被设为0.框选注释uv set2对应block、brick的颜色、法线、ao、粗糙度、metalness、height map?暂时不清楚matrix中block、brick、wood、metal、stone的ao、高度图是如何作用于材质的。可以看到master material自己也注释了aorm,从材质函数分离xyz就丢弃了alpha通道,进一步breakout3floatcomponent又把ao给丢了。

绿色通道中包含了paint的遮罩,将它作为alpha与basecolor做lerp,然后给paint添加想要的颜色。

对遮罩相乘控制强度来控制paint的强度,用红色通道的粗糙度贴图与paint相乘制造paint的斑驳。

这样生成的材质实例可以快速对所有的瓶瓶罐罐应用。作者说每个罐子用20分钟左右分uv以达到浅浮雕和paint在其合适的位置。

54节添加dirt、grime,通过下图这个做法可以让dirt、grime的逻辑和物体本身的材质特性分离,这样可以让一个团队分工合作,并且保持逻辑清洗。

用worldAlignedTexture提取R通道的遮罩混合先前材质的颜色,给dirt添加颜色,xyz三个方向的世界空间中投射遮罩上色,因此物体的dirt会随着世界空间中的位置变化而变化。

添加遮罩控制dirt分布的位置,这里是设法让它出现在z轴方向。

遮罩范围是相加,原来黑的地方加白色即改变了遮罩范围,相乘是加强度,比如原来灰色部分会变白或变黑,两个遮罩相乘是取交集,原来都白的地方保留白,一个白一个黑则变黑。

dirt multiply大于1,越大会使灰色变白也就是让遮罩范围变大,dirt offset直接加么一大片都变白了,加1会导致整个物体都是dirt。power是幂指数,大于1会使得遮罩范围变小。

对dirt再做一层遮罩与dirt color相乘即可得到深浅不一、更为斑驳的dirt。对dirt的normal添加blend,使dirt具备凹凸。

2023-8-31-黑客帝国觉醒道路构成-街区分析 2023-8-21-贴吧放开2000页帖子记录重拾爬虫拼凑当代记忆

评论

Your browser is out-of-date!

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

×