Board logo

標題: [教程] 【影月出品】教你如何用blender制作prefab预制件【重磅教程】 [打印本页]

作者: SouthernExpress    時間: 2020-11-21 14:59     標題: 【影月出品】教你如何用blender制作prefab预制件【重磅教程】

今天我们来制作prefab(预制件)


在地图编辑器中,prefab是固定物体,不能像道路一样伸展,弯曲。(旧版本里面,两个prefab连接是不允许的,导致AI会消失),这种预制件一般用在非道路系统但却可以行驶的地方。
例如:收费站、检查站、路口、高速出入口

在以往还只是1.8.2.5当中,欧卡2备受诟病的一点就是高速出入口过于死板,不符合我们现实驾驶的情况,减速车道加速车道过短等问题。后来由SCS论坛里的“TZmap”创造了一个素材包,里面含有分离车道、加减速车道等prefab,是免费提供给人们使用的,最早使用该素材包的,我没记错就是promods。后来我也下载了一份,制作广州地图,可是该素材包里的模型有很多会出现问题,诸如AI消失等情况。随着版本更新,这些prefab已经不能使用,我也暂时退了坑。

前期制作prefab只能用到ZModeler3,但在当时的环境,在国内网站找不到相关信息,更别说破解版诸如此类的。只能去外网,注册PayPal进行支付,而且个人觉得ZM3极其不好用。

后来Blender的强大映入了眼帘,刚开始是SCS某个员工开发了Blender2SCS插件,属于一个半成品插件,但令人兴奋的是,我们用免费的blender终于导入了SCS的模型。到现在,官方已经发布了正式的“SCS Blender tools”了,可以利用其来绘制prefab所需要的的功能。


Prefab的基础构成:模型、碰撞、AI路点、节点


模型- 该prefab的物体,如果像收费站一样大型的prefab,还可以给物体添加阴影等物体。


碰撞- prefab是给予AI和玩家行驶的,地面必须有一个碰撞的面,否则玩家会掉下去(而AI因为没有地形碰撞识别,所以AI还是会正常行驶)


AI路点(NAVI) - 属于Locator物体,AI的路点能正确指引AI行驶,还能利用规则控制AI的行为,如果设置不正确,会导致AI路过以后消失。


节点(NODE)- 在地图编辑器里,我们能看到prefab的控制点是方形的,这个控制点就是由Locator的connect node控制。


有了模型碰撞,玩家才能在上面行驶。有了节点,才能与道路连接,有了AI路点,才能让AI连贯行驶,以下会详细讲解更多细节。


今天的制作项目是一个高速公路的出口,拥有渐变段、减速车道
即使如今的新DLC已经有了很多新样式的拼接出入口,但我依然不满意

新广州地图需要的是和现实一样的设计,所以制作此系列prefab。

1.添加Root Object,并为其命名
(此次制作的是高速2车道,设计时速120km/h,右侧出口)



2.制作地面模型

(添加平面进行编辑即可,标线也是按需添加)



3.为模型上材质
老办法,系统原版模型总是参照的最好物体,起码按照来做不会错便是。


返回我们的模型,新建材质命名为“road”,选择预设“dif.spec.weight”
并为其添加顶点颜色



在下面Substance框里,我们选择“road”



下面的纹理贴图,映射框里选择UVMap,纹理选择你需要的贴图即可
(推荐使用SCS自带的贴图,先转换成TGA即可进行使用)
尽量别使用欧卡2的原版路径贴图,否则有概率会无法添加tobj文件
如下图所示,我使用了原路径的asphalt.tga文件,中间的tobj设置按钮是灰色的,无法操作



而后我在其路径里,新增了一个文件夹“road_gz”,把该贴图放进这里,设置左边的添加按钮亮了起来,可以添加tobj文件。所以我们应尽量避免使用系统的路径。

(记得勾选UV Repeat)




(这个是标线的材质数据)




4.展UV
一般关于制作层面我是不会多提及的,但有一些要注意的地方。
此次制作了比较长的prefab(245米),还有不同方向的出口,纹理贴图的走向,还有贴图的精度也是相当重要的。所以在这里我建议你,当你制作大型prefab时,你需要进行多次环切,并且要为不同方向的道路去铺上一个面





为什么要进行多次环切(多面)处理?
如果仅仅是一个四边物体,而贴图明显会比当前物体要小,那么贴图就会拉伸





即使你使用了UV Repeat,拉长了UV也能得到较为细腻的纹理,但你会丢失很多细节处理。例如匝道是向右的,你的纹理只会让痕迹向前。(SCS的道路贴图里,会有较为深色的区域,模拟汽车行驶多次以后的变色,这是一种痕迹)除非你可以做一张超大贴图,让其四边直接展开都能完成细腻的纹路贴合,但是一张超大贴图比你的模型体积大上数十倍,还不能给其他模型用,这不太合适吧





为什么要为不同方向去铺面?

贴图文件是固定的,你的UV是可以活动的,按照车道线去铺一段平面,在展开UV时我们可以直接按照“直线”来处理,同时减速车道里也会有相应的行驶痕迹
首先进入编辑模式,我们框选左侧直行车道的面





然后切换至UV编辑模式
此时保持左侧同步按钮点灭状态,黏性选择模式选择已关闭



那么刚才选中的物体就会单独出现在UV编辑界面。


该贴图我们使用竖向重复模式(记得点亮tobj的U Repeat和V Repeat)
UV网格已经伸展到了UV岛的上下方,贴图进行重复。



如果觉得贴图拉伸了,需要更细腻一点,那么放大UV网格即可,注意UV贴图的右边会有一小段路肩的样式,放大UV网格的时候别触及那个区域即可。



此时我们看到,路面已经非常细致了。那么现在主路的铺设完成。



减速车道我已经为其铺好面了,选中该车道的面,展开UV即可

UV网格被压缩得很小,将其放大即可


此时痕迹走向已经正常

标线展UV这里不进行演示




5.Locator添加

使用shift+A添加SCS object,选择prefab locator

其中包含了很多种用途的prefab locator,以下我来简要说明

(model locator将会择篇详解)



1.control node控制节点
-prefab必须要两个节点
-添加控制节点,可以与道路进行吸附连接。当添加两个(含)以上的节点时,需要从顺时针放置(在Node Index按照顺时针顺序编号即可,且每个节点编号不能重复)
【以往我测试过,虽然官方说最多可以6个控制节点,但现实超过4个点就会崩溃,不知道现在修复这个bug了没有】
-定义可延伸路边

2.sign(插件被翻译为符号)
用于在prefab上放置标牌或任何种类的静态物体(灯,垃圾桶等)

3.spwan point生成点
可用于进入货场确认交货,可用于进入轮渡后选择目的地

4.trafficsemaphore交通控制
其拥有可以让AI停止的功能,可用于红绿灯路口、收费站、加油站等。

5.navigationpoint AI路点
这个路点可控制AI的行驶轨迹、规则,需要正确连接。如果你的prefab里不能让AI行驶,则不需要添加AI路点。

6.map point地图点
地图点的主要作用是,在玩家查看大地图或者F5的小窗口地图时,会有些什么物体显示。

7.trigger 触发器
在编辑器里经常能看到一个球状的网格,事实上是一个触发器。玩家到那里以后会触发什么行为。当然,这里的触发器一般用于休息区等等,具体还有很多功能,这里暂时不详解


在这里,我们先添加控制节点control node,一共需要三个结合位置,所以我们添加三个控制节点,并将其以顺时针的顺序去命名编号,从0开始(一般从最底下,最右侧的点开始)





记住,每一个节点的箭嘴必须和模型的边垂直,且朝内!



如果角度没有与模型的边垂直,吸附连接时将会出现空隙!
如果箭嘴没有朝内,吸附连接时将会异常!


接下来我们添加AI路点,箭嘴朝向不用像控制节点一样,只需要按照驶入驶出方向朝向即可。



AI路点需要隶属某一个控制节点,在该控制节点下,AI才会顺利驶入。

所以AI路点首先需要确定边界范围和节点

边界范围有Input –Lane Output – LaneNo boundary
Input lane即为AI驶入的点,output lane则是AI驶出的点,noboundary的意思是其没有边界的定义,既没有驶入也没有驶出,这是在prefab的非边界处使用的路点。

Boundary Node即使边界节点,即当前AI路点受控于那个控制节点连接。
当边界范围是noboundary的时候,这个“boundary node”将会失效


接下来说说其余几个选项



LowProbability
降低AI进入该路径的几率

AdditivePriority
从下方“PriorityModifier”里选择的属性添加到现有的优先级上

LimitDisplacement
限制AI的位移

AllowedVehicles
允许AI车辆进入的类型

Blinker
转向灯使用

PriorityModifier
优先级设置,一旦AI路点有汇合,必须设置优先级(而且必须有minor road或major road)。这个系统模拟在十字路口的时候,车辆在直行、左转、右转时的优先级设置。多次测试过后,汇合车道时,两个AI路点我们都是使用“major road straight”,AI就不会停车让行,而是相互拉链通行。如果使用“minor road”系列,或者添加“give way”的规则,AI很大几率会停车让行,而且是停在那里傻等。

TrafficeSemaphore
交通控制的编号,假设给收费站某条通道定义了一个编号为0的杆子(traffic semaphore控制),那么AI行经那个位置时,在这里的设置也必须对应地为0,才能接受其控制。

Traffic Rule
AI的交通规则控制,其是由文件“traffic_rules.sii”控制的

新建了AI路点,我们需要将其连接起来

注意,连接必须按照行驶方向来选择节点

正确选择后,连接节点的按钮将会亮起

注意,要将两个连接的路点都保持在同一组别下,否则连接后,会变成虚线

连接好路点后,进行数据设置

路点的排序是从左往右,从0开始,不得重复。




AI路点还有一个关键的点是,必须保持在同一平面上,如果路点被拔高,AI是会跟着路点行驶的,然后就像……“鱼跃龙门”一样跳起来了。


6.添加路边
在编辑器里,我们可以为道路项目和预制件输入路边数字,让其拥有路边延伸的长度。那么在blender里的设置是怎样的呢?

首先需要添加物体,我推荐一个方法,环选其中一个边的所有点

然后按下E,挤出一个面,挤出的时候按下X,沿着X轴挤出

你需要多宽,就挤多长



再环选里面那条边,就可以快速选中当前所挤出的面



然后按P,分离,按选中项

这样,我们就能分离出一条完全贴合的路边了
(路边也可以分UV上贴图,如果你追求完美的话)

左边的处理也是一样的。下面教大家怎么去设置。


我们选中刚才分离出来的路边,进入编辑模式
然后用环选功能选择最外侧的所有点(边),然后再退出编辑模式

路边的编号顺序是按照“最接近路边的节点(单向prefab且超过2个点的除外)”来定义的
在本模型中,右侧的路边定义为0,左侧的路边定义为2【本模型中一共有3个节点,且为单向prefab,最靠近右边默认节点为0,而最靠近左边则要使用节点2】
我们先找到定义为0的控制节点


先选中控制节点,再按shift选中路边(顺序不能搞乱,确保路边要最后选择),然后进入编辑模式

此时已经激活了控制节点的terrain points功能,点击Assign Terrain Points即可为刚才的路边定义为可延伸路边

如果正确添加,该物体会自动添加顶点组

同理,左侧的路边要定义为2,所以先选中节点编号为2的节点,然后再重复以上的操作即可。

7.添加碰撞
我建议你直接把地面模型,两条路边,在物体模式下,都使用shift+d复制一个出来,然后将三者按ctrl+J联合控制,最省事的操作。最后为它们添加一个none的预设。


8.设置SCS Parts
碰撞物体放入“coll
右侧路边放入“trans0
左侧路边放入“trans1
主体模型放入“vis
准没错了

导出,打包即可。

9.写引导
Base/def/world/prefab.xxx.sii

照葫芦画瓢就行,prefab的引导没有太大难处



游戏效果


AI无跳动,无消失,无报错。
如果发现AI会在连接处突然偏转一下,那是因为AI的点设置有点偏离,可以进入blender进行微调。


本次教程结束



[ 本帖最后由 SouthernExpress 于 2020-12-9 11:20 编辑 ]
作者: Louis_Long    時間: 2020-11-21 16:53

高端教程慢慢看




模载联合支援站 http://bbs.18wos.org/