2023-12-25-ue散布工具iascatter实现绿化园林

geo-scatter在blender里面搞绿化太卡了,仅仅一片草坪就会使视图操作巨卡,似乎通过摄像机culling可以缓解,但我估计会有防不胜防的“卡”,毕竟blender一卡就只能强退,之前搞得就白弄了。

为什么要用geo-scatter,我开始反思质问自己,一个是利用其现成的植物配比和效果参考,一个是一键生成可方便调节密度、位置、形状,可以导出instance。然而不仅仅是操作卡,导出instance也是暴卡,颠覆了我以往的想法是blender中只要做了instance关联就可以无限生产物体而不会有性能问题。那天晚上我甚至在纠结可否用导出json,在ue中用json循环读取,创建实例。

Unreal Engine 5 Tutorial - Instance Importer - Reading Files With Blueprints [3/4]

后来我想到citypark项目以及目前尝试过的绿化,1是用landscape paint刷一层底,2是笔刷刷foliage给绿化地基添加实体形成层次,3是逐个添加树木再同类asset转化instance。前期暂时遇到的问题有,1.curb通过blender curve export用prg widget转,曲线会被改动变得诡异很难修;2.植物的散布不能精确在指定范围的地块控制,笔刷画一圈还要擦一遍;3.地块在ue中没办法精确规划。结合geo-scatter,我希望地块在blender中可以导入ue,然后对这个地块精确识别,曲面吸附,带有geo-scatter中的散布控制,大量散布不会卡死,操作视图流畅。

经过半天的搜寻,我定位到了iascatter,目前看来它似乎满足了我所有的需求。接下来对它的功能特性和操作做一下总结。iascatter把blueprint拖入视图中,它会自动“吸附”地形、平面、物体,这就解决了在blender中定义地块植物附着无缝贴合的问题。location grid snap功能是形成间距等大的散布,图1中每个立方体周围还有一圈小的“碎屑”,那是clustering,意为在instance周围形成簇。图1的效果等于是两个位置重叠的iascatter,其中一个激活clustering。图2我测试了将iascatter置于1个平面和landscape的结合部,发现它可以识别,附着在各自的表面无缝吸附。

要吸附到物体表面需开启trace complex,下图中我设置了888个实例再加11clustering,也就是约9000个冬青灌木,这个灌木是60多万面的几何体,开启nanite后视图操作一点也不卡。

进一步我又添加了3片绣球花也是一点都不卡,冬青树在远处几乎一点都看不到,我不知道ue内部是如何,推测是这个Lod层级的作用,在远处转化为10几个点的几何体因此看不见了,近处也分了几种显示层级。

100多颗树完全不卡。

proximity可以对使散布围绕某个物体设置间隔,proximity ratio越大,间隔越大。

omni分布可以使物体散布在物体表面,它能对iascatter起效果。

曲线区域范围area散布,相当于是搞一个特定曲面在上面做planar散布,spline散布只沿着曲线,可以通过location做曲线附近两侧的分布。令人兴奋的是iascatter提供external spline source是可以完美配合blender curve exporter,且不会改变其曲线特征。这意味着可以实现沿着指定地块的curb做精确散布。从blender物体通过hardop提取的曲线尺寸上在ue中也是一样的,以前遇到的曲线尺寸问题我估计是没有apply scale?5种area 散布模式我没看出啥区别除了第五种似乎是集中在区域中心?

overide instance source,iascatter支持骨骼型mesh、niagara粒子系统和混乱碰撞几何集合。

look at actor可以是iascatter朝向对准目标物体。

is special behavior激活under actor,只在目标物体下方生产实例,模拟出树下的果实散布效果。

还可以对物体的tags做定义从而指定散布,populate on在物体表面,且似乎只能在“上半部分”(法线朝上的?)。under在下方似乎是物体顶视图投影到iascatter所接触的平面,not则在物体四周,not有点像proximity。

geometry generation不清楚有啥用,geometry generation似乎可以将散布的物体连结起来生成类似zbrush dynamesh的效果。

optimized voxelization可以在一个三维物体上散布,我试了下散布30000多颗绣球花,可以形成大黄鸭形状的园艺效果。近看细节也有,试图操作不卡。

对landscape的layerinfo定义physical materials可以让iascatter在指定的layerinfo散布。

populate on中有tag是对mesh的,tag inheritance是在iascatter上,相当于在iascatter上进一步散布。下图中对cube定义tag inheritance :flowerpot。然后选了一种植物散布populate on tag设置为flowerpot即可呈现植物位于cube上的效果。

散布blueprint,不过好像blueprint不能实例化因此会占用大量资源?

clustering的应用,树根部分暴露不太好看,可以用草在相同位置做clustering掩盖树根。

convex/concave 分布检测,当前投射的区域如果有起伏则分布在有起伏或者没起伏的部分。

互相不重叠且随机用min distance控制。比如下图中方块是1x1,distance大于100即可避免重叠。

示例中展示了石块、树、石子路、草都用iascatter分布。

fix distance是固定距离,如果要随机距离且不重叠需要在overlaping里设置min distance。

spline down分布如果开ratio默认就会是正投影部分更大,两边小。area down用分布方法5可以做出类似的中间密集且大,两边小。

spline omni会在曲线经过的空间范围依照trace length散布附着到接触面。trace length 越大影响范围越大。

通过uv根据perinstancerandom随机选取贴图的一部分产生随机分布颜色的方格实例。

仅分布在凸出部分的上方。

2023-12-5-stable-diffusion生成合适的小区平面图 2023-12-14-blender道路uv展开FRG替换PRG

评论

Your browser is out-of-date!

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

×