2024-3-18-SendToUE程序化建筑从blender到ue

制作SendToUE程序化建筑:

1.设置batch export和SendToUE的参数,batch export勾选select obejct,SendToUE勾选build nanite 修改文件夹路径为建筑类别/建筑项目名/Meshes,勾选place in level、use mesh instances.在ue中创建这个文件夹,与Meshes平行的一级添加Textures和Materials文件夹,这便是SendToUE工作流的文件夹结构。若有su参考模型需要使用,先做清理工作,包含clean parent,clean object data关联关系,apply rotation scale,flip normal。

2.创建好几个不同大小的bevel collection,比如外部的窗户、一些装饰已有bevel归为一个无需bevel的collection;墙体、cornice用默认的1cm bevel;金属栏杆是0.3cm左右的bevel。这个步骤可能一上来无法完全确认做完一层归类一次collection?

3.建模开始前切分楼层注意始终保持一层为完整的地面到天花板,比如有些情况中,地面位于cornice的中段,则应该切分cornice而不是切分实际逻辑上的楼层而保持cornice的完整性,这样会使墙体、装饰部件、门窗框跟着一起切分从而使整个工作变得非常复杂。切分需要用ps或者微信截图切实画出来,以免后面思维混淆,尽管SendToUE工作流无需考虑房型之间的拼接,高度可以不用统一,但考虑到部件模块化复用,每一层通过duplicate master的array instance去向上叠加,因此还是需要有模块化的思维,尽量将各个部件模块化合并同类项。

4.建模,每个部件都命名后期复制就会自带之前的前缀了,分析标准墙体和外部装饰部件确定好需要用哪几种材质,使用标准厚度带门框、窗框的口、凵、冂字形墙体,多个开口则用多个标准墙体合并中间重合部分用vertex merge合并。以下为一些标准墙体的变形,包含了两侧完全\部分挤出;inset内侧开口的循环边内收;开槽;异形墙体拱形用布尔、多边形需要计算角度?注意非最外侧的墙体需要将两侧的面删除,以免bevel后互相间有明显的分割。若是内收阳台则无需考虑bevel。

装饰部件有的是“附着”在墙体上如一些浮雕,中段的cornice,这种没有对齐问题。还有的如上图1中左1、2的黑色槽板,它等于构成了墙体的一部分。

阳台房型分开放附着型与封闭内凹型,开放附着型可以视为地面部分通过基础墙体挤出在其上添加一个外部的围栏mesh如下图。

窗和门使用的外部模型删除玻璃面部分,用一整块面片填充作为玻璃,材质为内景客厅、内景卧室或反光玻璃。

制作好一层部件,用Object ‣ Clean Up ‣ Remove Unused Material Slots 把多余无用的材质清理掉,uv统一为uvmap,若有block、brick则复制一个uvmap.001。

2024-4-1更新:

SendToUE的mesh命名是根据object data properties(绿色倒三角)中的命名,在场景中每个actor的命名则是来自object property(橙色方块)。所以一开始就要对这两处都命名规范,instance关系绿色倒三角名称一致,橙色方块使.00x递增。若有部件基于之前的部件shift d复制出来修改制作,则重新命名两处.由于MaterialConvertInstance涉及material slot的索引,因此material的排序上要保持一致。

2024-4-10更新:

MaterialConvertInstance.py代码经过我修改后会按照slot name赋予材质因此无需对material slot排序一致。

5.每一个后期会使用duplicate master用array instance叠加的部件都需要将其pivot置于底端,我暂时不清楚哪个插件有这个功能,若是纯粹保证z轴一致为底端由于同层的部件底端势必一致可以origin to 3d cursor,将cursor随意置于xy轴随机的固定z轴位置。

2024-4-1更新:

对于存在放缩同层间高度位置不同的instance,pivot to 3d cursor并不能使它们的pivot置于目标位置。因此不好用duplicate master,而且duplicate master的处理速度很慢、很卡。直接框选一层用alt d复制instance并设定z轴偏移,shift R可以重复这一动作快速叠加整个楼层。

6.如果立面涉及block、brick,展开uvmap.001,熟练使用alt u快捷键调取zenuv的zenUnwrap、quadify,感觉texel density到最后一层的部件一起统一这样可以不用重复工作。cornice的建模通过画polygon curve沿着墙面再用curve bevel拾取profile整体放样,若需切分则需对每个夹角用edge loop则限定,来保证uv的打直。

7.对需要镜像的房型选一个mirror,其余的copy modifier 全选apply、seperate,按照不同部件给bevel modifier。

2024-4-30更新:

所有模型制作好以后,确保没有任何modifier,array阵列的物体前期就apply,不然alt d 复制instance无法apply。对需要镜像的部件全选copy modifier,批量镜像之后ctrl a Convert mirror to Instances将所有镜像物体转化为instance。全选所有物体命名wall就可以了,使用按照data name归类collection的script将所有部件分类,然后再使用选中collection中第一个物体的script,“/”键单独显示这些物体,修改后期bevel大小不同的部件的场景名称(比如有的窗户0.003,有的部件为nobevel,目前看起来就是0.008,0.003和无需bevel三种情况?),配合data name from object,对所有instance的data name修改,这样做可以确保ue中的static mesh名称和blender烘焙导出的贴图名称一致,确保ue中使用MaterialConvertInstance.py可以匹配static mesh和对应的智能遮罩贴图。将这些物体添加到bakemaster,执行两次preset rgbaforMatrix(bakemaster的bug,要点两次才能生效)。烘焙完成后用select pattern选wall*,再反选以后就可以选中那些bevel非wall的,利用select linked multi插件选中这些物体的instance,“/”键单独显示这些物体,逐个手动重新批量命名。

2024-4-10-大量部件烘焙批量选中问题用python代码解决

2024-3-20更新:

这两天通过bakemaster解决了批量烘焙4个遮罩贴图,如下图设置好烘焙预设之后,框选需要烘焙的物体,选两次rgbaForMatrix的烘焙预设即可,烘焙前需要对物体所有面选中做一次smart UV unwrap(bakemaster对uv要求似乎不能有重叠?不过我试了下matrix的模型用bakemaster烘焙也不行),这样做会破坏窗户内景,因此玻璃窗室内伪装的面片单独分离。另外透明双向材质不支持nanite,这类材质的部件需要分离开来单独设置。

若待烘焙物体面数较大则需要将物体分离成几个部分,这样得到4个遮罩的效果会好很多。

8.做完所有楼层的模型保存,另存为部件导出检查,添加bevel将部件转移到export集合中,push asset,发现部件有问题则在ue中删除,在blender中对出问题的部件做修改然后shift h只显示选中的修改部件,push asset部分导出,使用material assignment tool对所有mesh全选批量修改材质。

material assignment tool全选static mesh之后无法通过点选方式添加材质只可以下拉框输入材质名。material assignment tool进作用于通用的材质,室内伪装、不透明玻璃、透明玻璃。

2024-4-30更新:

昨天我发现在使用material assignment tool时会闪退,原因暂时不明。好像SendToUE导入后先执行material assignment tool不会出问题,若是搞好了MaterialConvertInstance可能会出问题。

使用matrix材质系统,若要修改basecolor的贴图,有时候会在顶部出现图2、图3这样的诡异方块阴影,将贴图的压缩方式改成BC7(DX11)就好了。

其他材质需要用到智能遮罩贴图,使用MaterialConvertInstance.py这个脚本小程序,选中包含某种材质的所有部件,在菜单栏Tools下选recent python script使用MaterialConvertInstance.py会对定义好的目标材质生成material instance并填充对应部件名称的遮罩texture然后为这些部件赋予材质。参考2024-3-28-SendToUE中凯城市之光

9.另存为组装整栋布局导出1,之后有别的布局就是2、3、4,对需要叠加楼层的部件apply bevel,将建筑移到对应的位置,配合duplicate master组装整栋建筑。导出到ue用packed level blueprint actor,将mesh转化为instance并打包。目前实测4600个部件导出需1小时,1700个则为12分钟,(去除了2900个rail,将他们合并为一个部件)部件过多是否影响ue的性能暂时不清楚。

2024-4-30-SendToUE中式ArtDeco外滩壹号院风格大理石贴面小高层 2024-4-25-建筑规范

评论

Your browser is out-of-date!

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

×