2023-9-6-道路规划初步

昨天晚上到今早折腾ue的osm插件,失败,这里面涉及c++文件编译,说是文件缺失那问题就大了,搞了半天下载visual studio白忙活。考虑到大马路、街区内的小路要做的真实多样,指望osm一键到位也不可能,最多是分批导入定位用,所以也别在这个上面较劲。

下面我截取了一些百度的全景照片来分析一下大马路的构成:

问题1人行道到底跟大马路还是跟街区?跟大马路的好处是坡道起伏可以用landscape deform表现出来,但是交叉口需要设法独立设计,跟街区可以解决交叉口问题但不能landscape deform。我倾向于前者,不然的话整个城市就太平了,失去了趣味。

根据PRG的系统大马路可以拆分为road mesh即道路主体由spline mesh构成无缝连续;side spline mesh与road mesh一样由spline mesh构成无缝连续可以做连续的中间绿化、连续的马路标线、电缆、两侧的人行道、路肩、路沿、两侧连续绿化带;然后是非无缝连续的物体,如长条白色马路标线、非无缝绿化带、树木、垃圾桶、车站、共享自行车、路灯、电线杆,这些用props system实现,可以通过全局的spacing设置规则间隔,以及min max transform加入不规则的位置、大小微调变化;最后是在人行道、马路上随机出现的破损、窨井盖、树叶、垃圾,用deco per socket system通过给road mesh\side spline mesh\props mesh添加socket来定义出现的位置,设置probilities定义出现概率以及min max transform加入不规则的位置、大小微调变化。

由此总结大马路需要道路主体、绿化带、人行道、路肩路沿、车道标线;各种树木、垃圾桶、车站、电线杆、自行车、电动车、路灯、车位标线;树叶decal、窨井盖decal、破损decal、垃圾decal.

道路主体简单来看就是宽度,车道数什么的是基于道路宽度用标线划分的,现实中的道路宽度可以用百度地图测距计算。我看了下matrix中的road mesh有3个规格20米,28米,37米。

长沙的四车道不含自行车道是17米宽度左右。

潇湘中路10车道外加自行车道是35米宽度。

湖大路5车道加自行车道是18米宽度。

麓山南路三车道10米

西康路2车道是9米宽。

长寿路的8车道是35米宽。

经上面的总结可知大部分的大马路可以归纳为10、18、35这3个宽度。也就是说大马路的主体mesh在这3个规格上各一份可以满足基本需求,当然多个mesh可以在road mesh中交替增加多样性。

通过上面的7个马路来看所有的路肩都是灰白色,形状也差不多。我看了下matrix中使用的curb都来自于quixel bridge,不过对其材质做了很深入的调整使其可以添加污渍、表面细节随着位置不同有变化。暂时就先用现成的后期看看能不能对尺寸做调整,它这个路肩显然太长了不符合国情。

matrix提供的马路标线mesh,这些标线会随着位置变化表面细节,材质的设置也是十分庞大的。还有些窨井盖的decal mesh。

matrix中的人行道mesh大约25个,还有几个用于转角的corner mesh来自于megascan,它们也受到matrix内部材质系统的影响。

人行道方面可以看到下标abcde,同一字母表示同一种人行道,宽度都是3米,有三种长度规格1.5、3、6米。而在街区内看到的砖花在matrix中叫plaza square都是3x3米的,有abcdefg 7个样式。通过近距离观察可以发现这些砖花实际上被curb包围,curb稍稍高过砖花将其覆盖住了。curb外又是一圈人行道不规则的多边形外圈的拼接处有专门的mesh。

回看现实,5种人行道的mesh显然太捉襟见肘了,另外matrix中的人行道对同一个街区的人行道做5种mesh的随机排布不符合现实,一般一个街区、相邻的几个街区会用同一种砖花去铺设人行道。但是随着街区数量上升,人行道的砖花种类会五花八门。人行道方面后期至少要增加10种。

各种树木、垃圾桶、车站、路灯、车位标线这些都可以借助外部下载,这些prop经检查matrix项目被没有做特殊处理使其细节多样化,应该都是原生的材质。今天有个重大发现,原来PRG一直很卡的原因是其生产的mesh都不是instance,注意下图中的这个车站广告牌在matrix中设置了perinstancerandom,instance可以随机变换广告内容,但是用PRG添加props却没有发生随机变换,说明这些mesh每一个都是新的对象。而碰巧的是PRG作者团队在8.25号更新解决了这一问题!另外下一版更新的Pcc还能解决街区地形起伏问题!真可以说时也命也。

matrix中没有绿叶草坪、树木,不过其他的prop却十分丰富。在prop文件夹下可以看到有建筑上的prop,包括雨篷、各种banner、atm。

高速公路上看到的大型广告牌、车站、路标、路边的小广告牌。

建筑工地的prop包含木材、围栏、沙袋、脚手架、集装箱,在这些props中我意外发现有些mesh的材质并不在detail面板而在layer parameters中,经查看后是一种混合材质的工作流,与众多MatLayerBlend函数的Layered Materials有相同效果但更简化,不过在matrix项目中查看这类prop的layer parameters非常卡,暂时不清楚是为什么。

Material Layers 视频示范对比 Layered Materials

UE官方文档Material Layers

屋顶的各种prop有20几种和路灯有5个款式,还有路灯的banner。屋顶的prop被组装成各种packed level actor,文件夹中显示有288个.另外还有一种用波函数坍塌(WaveFunctionCollaspe)生产的屋顶,在matrix的示范中有讲解过,原理比较复杂,暂时不研究。packed level actor下的物体皆为instance,反复创建不会占用过多资源,关于level instance和packed level actor之前看过教学讲解,但现在忘光了不清楚二者有啥区别。

补充level instancing概念,当几个mesh被打包成为level instancing,其中任意一个mesh有transform或者材质改变都会影响其他的level instancing.下图中移动其中一个雕塑,其他两个跟着移动。

packed level actor创建后会有一个level外加一个blueprint,打开blueprint可以发现被打包创建的mesh都转化为了instance,我现在算是明白了,在ue中instanced static mesh component才是真的instance,复制物体alt拖动、duplicate并不产生instance。

通过对blueprint编写程序可以让packed level actor多样化。

在newman brother的系列教学中,示范了把桥打包成packed level actor。对bridge1 break packed level actor,再创建bridge2,然后进入edit模式替换了桥头的灯。我不知道这样做的话,桥身组件互相之间算不算instance。

经测试可以发现当static mesh本身被编辑,几何特征、材质被改变会影响到所有的使用该mesh的packed level actor,而对blueprint中的instance static mesh component移动只会影响同一个packed level actor。因此不同的packed level actor之间使用的mesh互为instance。打包成packed level actor,如果有两个相同的static mesh会自动编队为一个instance static mesh component,在右侧details面板的instances中创建两个instance。packed level actor看起来什么都好,但至少在matrix这样的项目中,在blueprint中编辑这些instance十分卡,理想状态是在blender中搞好这些mesh组合的小场景导入,不过经实验发现这么搞分批次的同一物体是不同的static mesh,那么想要搞各种packed level actor小场景就是在场景模式中找块空地组装好形态以后再打包,但是ue中编辑选择物体很不方便,这可能需要些什么插件来解决。

这种用于公园的类似墙体的prop被称为border,有abcd四个集合,它们被组装成packed level actor。

prop这块扯得有点远了,我发现问题在于应用场景,我把范围扩大到了公园、屋顶、建筑外立面等等。现在回到大马路所要用到的prop,窨井盖5-8、邮筒2-3、路牌10、人行道护栏8-10、树木8-10、草和花15-20、路灯5-8、人行道8-15、绿化带底座5-8、车位标线、电线杆5-8、自行车3-5、电动车3-5.

其中绿化带怎么设计的再参考些实景照片。

使用PRG技术路线接下来需要解决的技术问题:

如何利用这种sidewalk corner mesh配合砖花的材质做自己的sidewalk corner?

如何利用quixel的材质去做砖花?

大的建筑群比如学校、小区会割开人行道,所以要有类似intersection的mesh在某些segment上插入替换。

做自己的intersection mesh,这里涉及到如何调整connector的位置、大小,当然还有sidewalk mesh,解决这个就等于道路这块加上人行道一起搞,尺寸上得计算好。

这两天着凉病了,状态很不好,没心思马上推进道路技术细节的探索,一直摆弄python的贴吧爬虫。今天下载了ue官方的hillside示例,又给出了一种道路的技术路线思路。下面这个乍看很像sketchup做的景观模型,材质和模型都很简单,高度概括,思路清晰。

在一个大概只有法线贴图的草地上用foliage画树木和花草。

场景的核心是这个金字塔结构的建筑群,我看了其中一个单体由100多个instance static mesh component组成.这是如何做到的?暂且没有想法。

2023-9-17-道路交叉口的终极确认方案以及现实中的街区人行道入口 2023-9-4-citypark景观道路树木花草资产的布置分析

评论

Your browser is out-of-date!

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

×