2023-10-22-高层从blender中导入datasmith文件到ue保持建筑部件实例化

对于配景,非创作的小区、办公楼、学校等区域的建筑尽量实例化以提高运行性能,我不确定这到底能提升多少,而且目前一个建筑还没立起来,多少看起来有些没买彩票讨论中奖后咋花的感觉。不过这个到后期要返工的话,感觉工作量会非常庞大。

首先实例化是什么概念呢?su里面我不清楚,在blender中shift+d是无关联复制,而alt+d则是关联复制也就是实例化,可以看到下图1对一个物体在编辑模式下改变几何特征,其余的实例会一起跟着变化,同样对它的uv、材质改变也会同时改变所有实例。值得庆幸的是网上买的su模型导入blender后,大部分的相同部件都保留了关联,也就是实例状态。

ue的datasmith支持revit、sketchup、3dsmax等软件实时导入,理想中的情况是直接把su模型导入ue上材质,显然这太过理想化了。一方面是若要利用matrix的brick、block材质系统,那么必然要对第二套uv做调整。

在ue中选中static mesh右键可以通过select actors using this asset选中所有场景中使用此static mesh的物体,配合hillside的HISM widget便可将建筑部件实例化,但这样操作后会发现有一半的部件显示黑色,经过搜索发现instance static mesh对负数scale的物体转化实例会出现法线错误,另外之前我通过合并物体的方式导入别墅,合并后会导致整个半边的物体法线出错。解决办法是选中所有负数scale的物体apply scale,首先选中其中一个部件复制它的名称到右侧的大纲栏,然后去掉勾选object children,此时在通过shift首尾全选变可把所有的关联物体选中,“/”键进入isolate模式,一般来说负数scale在一边或者是全都是负数scale,把它们框选起来ctrl+a,apply scale之后便会生成新的物体,且它们互相间保有关联。

等所有的负数scale解决以后,对每个部件的uv处理,管理好material slot方便到ue添加材质。导出时选择datasmith格式,我发现这玩意儿速度最快,且可以建立文件夹结构管理好每个建筑,自动生成一个打包的actor,通过控制这个actor的坐标可以移动整体建筑,移动到位以后再对物体的static mesh给材质,最后通过上述方法选中关联物体用HISM widget转化建筑部件实例。

这里要提一下Sketchup_Importer这个插件直接使用导入su会出现部分物体异常,不到位。这里面的原理肯定很复杂,今天耗了一整天,在3dsmax中导入没有问题但是max操作太卡,把su导入max想通过max再导出obj或者fbx进blender太慢了占用空间也大.后来还想过是不是blender版本的问题或者插件版本的问题、su版本的问题,都不行,就在绝望之际发现了一个问题中有位好心人Peter Kirkham分享了他对这个插件的优化,通过他修改的_init_.py替换原版,导入的高层建筑都没问题了。它的博文详细分析了sketchup导入blender的几种方式以及性能,我没去深究,能用即可。

有部分部件没有关联起来,blender里不能用array来生成instance,笨办法是手动alt d移动合适位置,再shift r重复步骤添加,当然对于数量多的情况要使用几何节点来处理,今天看到另一个办法是link object data可以让选中的物体关联到最后一个选中项,使他们的形状与最后一个物体同步。

注意保存su导入到blender中的模型,我发现用修改版的插件导入后有些卡,不知道是这个模型本身的问题还是。

最后的问题是blender中修改好了以后怎样回传到ue?我试了下用blender版的datasmith,到ue里会发生异常错位、缺失。blender导出fbx进ue,instance关联性丢失了,所有物体变成独立的mesh,unreal market上的插件也是如此,ue官方的blender导入插件似乎失效了?不再提供技术支持?想导出su再回su用datasmith同步,发现导出好像有问题,最后是导出fbx,用3dsmax读取再在3dsmax中开启datasmith同步,成功将带有instance关联的模型导入了ue。blender中的第二套uv通过fbx传导3dsmax再通过datasmith到ue可以起效。

高层公寓有22844个物体构成,通过顶层的actor可以整体移动位置,操作还算流畅,但是若要一次性删除它们或者添加到1个datalayer做隐藏,ue会卡住崩溃,这个问题暂时不知道咋解决,不过从工作流程来说届时是对每个部件添加材质转化instance,在转化后再删除static mesh actor,对单一static mesh的actor而言通过select actors using this asset选中再delete删除十分流畅并不会卡住,所以这个问题可以暂时不用解决。

static mesh再转化为instance后再修改static mesh的材质不会对instance产生影响,对static mesh的引用是可以更改成其他static mesh的,另一方面通过alt拖动instance复制出来也是instance。将它们打包成packed blue print actor可以整体操控,并且保有instance关联,这样可以批量生产高层楼房。

补充:保持3dsmax开启datasmith同步的状态下在max中删除物体,ue会伴随同步删除,这样操作不会导致ue卡死、崩溃,不过即使是删除一个static mesh在场景中的20几个actor似乎和无差别随便删所需的处理时间一样都要5-8分钟的样子(神奇的是我第二次操作只用了2分钟就删除了大部分,不知道啥原因),这样看来还是上面的做一个删一个的办法实在,毕竟不能保证一天里把一栋涉及1000多单独部件的大楼全部完成,而且期间要是ue不小心崩溃估计没法和max再次同步。打开layer explorer输入物体的名称max会自动全选所有的关联物体,不过max中操作十分卡,暂时不知道如何解决。

2023-10-26-matrix建筑部件的材质uv以及整体装饰分析 2023-10-19-第一个小区建设的总结

评论

Your browser is out-of-date!

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

×