2023-8-11-近几天ue-pbg中的一些问题总结

landscape deform只在showcase map中有效,到了其他landscape就无效了,然后其他landscape能用landscape patch但是在showcase map中无效


​​​​​

通过discord上查看过往的技术探讨,发现在blueprint中修改perform landscape adjustment最后一个函数,把它的edit layer name改成landscape在paint mode下的那个layer name即可,不过deform之后的效果很诡异,还有待技术支持。

对于static mesh用landscape patch插件可以解决地面平行,不过目前看来它仅仅适用于物体底面平坦的情况如果物体不平就不行了,在我应用的场景里问题不大。

blender导入ue用fbx scene可以大批量导入blender的物体并保持实例状态只对static mesh修改材质可以影响所有实例,但是前后两次导入在blender中相同物体的实例ue是无法自动匹配的,必须对fbx scene中的实例选取后重新指定其static mesh。

注意下图2的圆柱几何体完全一样两次导入还是会生成两个static mesh。我估计coordikngiht那个插件也会有这个问题,必须做到一次性全部导入。

关于blender到ue的实例,我是想如下这种8角面,高度不同的pbg会自动拉伸使得高度一致,目前暂时不清楚如何解决这个问题。2023.8.13更新:昨天下载了完整得city sample,pbg matrix demo可以用了,可以看出来通过添加socket height,height所在得高度位置即为floor height,以上部分不会被压制,从而产生不同高度。

socket加入length可以解决cornermesh缝隙问题。socket dim既可以解决height也能解决length,socket a能确认屋顶盖板得位置。

语法对每段segment都继承,设置多套语法对应不同版本的segment长度,暂时还没有测试它的精确度。

Right corner mesh 是向外凸的角落mesh,Left corner mesh是向内凹的角落mesh,下图1为Right corner mesh,下图2为注意他们的pivot设置。

对于十分简易的立面,4个block用10分钟不到即可完成。其中大概用到了12个部件,可以推测30个部件的房子大概半小时可以完成。

blender 快捷键 shift r重复

city sample中的建筑是packed level actor也就是说建筑部件static mesh通过pbg合成整栋建筑bake抑或是在blender中用instance拼装起来以后导入,它们都是零散的要整体操作需要使用packed level actor把它们打包成一个blueprint。由于是blueprint,还可以在它的基础上做修改,下图通过修改blueprint对雕塑做了实例输入替换。

增加floor grammar再未设置的情况下,segement会为空。这里的s0 s1即对应的grammar下标,invalid index指语法中的sx没有对应的grammar,那么指定用哪个。

可以对每个floor(每层)设置不同的语法。从结果来看高层默认继承最大index数的语法设置。

使用pbg datatable material list可以对建筑的材质做替换,其原理是把要替换的slot name键入,上面放替换的材质列表。材质替换的作用域可以是整个floor,或者每个floor、每个segment(这个不懂,照理来说segment和per building side应该都是指一个segment啊?)、每个mesh。

这个对窗户作用应该可以解决对多个interior mapping合并随机调用的技术问题。material为none则不改变原来的材质。

屋顶prop需要用get actor size获取prop的尺寸,黏贴正确尺寸。这里只演示了添加blueprint prop不知道mesh要不要像这样获取尺寸。不过第三个blueprint是另起一行新开roof prop这和在同一个roof prop新增blueprint field的区别是什么呢?另外为了保证不重叠,roof prop必须pivot设置居中。randomize prop似乎可以让prop的大小也随机变化?

晚上实践操作了一下,推测roof prop分两个index,一个是center prop,从index [0]中可以看到都是skycrape blueprint,对其进行random prop多次实验后可以发现屋顶中心总是index 0里面的blueprint,其余的是index 1里面的,pbg初始状态下roof prop不可见,得激活general中的add collision才行,在floor system中random prop可以对roof prop重排。

为建筑物外立面增添prop/decor,在static mesh的socket中添加banner,复制socket对prop做位置调整,在deco per socket中添加socket name、deco mesh,修改presence probility可以改动出现的概率。

设置多个socket。

deco在socket中可以预览不同mesh的效果,一个socket对应多个mesh,在deco per socket中设置deco mesh。

deco per socket下每个index对应一个socket,和楼层无关。

在建筑周围沿着其spline散布prop

下图中看似corner mesh穿越两层,实际上是把它一分为二,这样就解决了跨层部件,作者提到还有一种思路是合并两个mesh,比如有那种跨两层的大门,那么这两层的其他部件就合并起来,最终跨两层的大门作为一个floor。

spline在拉伸过程中,mesh部件具有一定的“伸缩”空间,如下图可以发现图1的部件左起右起第3根pillar明显比其他的粗最当中那个wall mesh明显比两旁的小,图2同样是7个wall mesh所有部件的排布全部相同但是大小相对图1要均衡不少,暂时不清楚这种“伸缩”机制,不过我感觉也用不着搞明白。

途中展示的错位是部件的长度不同导致的。

8层柱子176 墙352,5-7层柱子127 墙400。如果在“柱”-“墙”排列的情况下176+352约等于127+400,所以不会有明显的错位。而在“柱”-“墙”排列中混入“柱”-“墙”-“墙”-“柱”的话,等于多了一个352和400的比较于是双方差了8cm。

可以看出来这种有错位的情况属于语法1,若想让这个排布不错位,那么要改动(w0-p0-d0)和(d0-p0-w0),把短的w0、p0改成加长的。也就是(127+400x2-176-352x2)/2,为此我重新修改了局部的语法做了下测试,发现仍有错位,问题出在了上述的“伸缩”空间,这种伸缩应该是指定某个部件优先伸缩而不是对所有部件平均,因此通过相加相等的排列在这种伸缩下会露出“狐狸尾巴”,另外为了要达到“平衡”而特意构造特殊语法显然也让维护变得十分费力,因此,所有部件必须尺寸完全相同!

屋顶不一定要是roof,也可以用floor来做,屋顶本身可以和楼面一体。

2023-8-3-Ben-Building-Worlds-In-Unreal地形材质系列1 2023-8-7-不规则多分叉小路-路肩栅栏-草地绿化的技术实现

评论

Your browser is out-of-date!

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

×