LOADING...

搬家到虚幻引擎吧~!

时间:2024年01月23日
分享: 复制

微博
大家好。
我目前在进行洛奇的引擎更换工作。
我想向米莱西安讲述一下关于正在进行的'背景建模迁移'的一些故事。
希望这篇文章能消除对引擎更换过程感兴趣的米莱西安的疑问。

有一天,我和往常一样,带着热乎乎的咖啡开始了昏昏欲睡的早晨,有一则消息让我猛的惊醒。
因为在洛奇迁移到虚幻引擎的时候,需要把Pleione上的爱琳所有建筑和物品全部带走,
这个重任竟然落到了我的头上!
近20年的时间,洛奇深深扎根在Pleione中。
所以,迁移工作就像移植小树苗一般,非常困难。
虽然脑子一下子惊醒了过来,但我的眼前却是一片黑暗。

当然,最终在虚幻引擎中看到的大部分建筑和物品都会重新建造的美丽又鲜艳。
但是,为了进行这项工作,我们需要画出基础底图。
仅仅制作大量的基础底图本身就需要巨大的成本, 
我们需要寻找一种方法,能以较少的成本将位于Pleione的爱琳完全复制,并将它用作基础底图。
 

<在Pleione World制作程序中看到的塔拉众多建筑物>

在计划完全复制洛奇时,最初让我们感到担忧的是
“我们能否直接在虚幻引擎中使用Pleione专用的World数据文件和建模文件呢?”
然而,很遗憾但也理所当然的是,由于这些文件是'专为Pleione设计'的,所以这是不可能的。
在这种情况下,我们想到了三种方法。

第一个是'修改虚幻引擎的代码,使其能够读取Pleione专用的文件'。
但是,如果我们这样修改引擎代码的话,每次引擎版本升级时
修改过的代码和更新的代码可能会发生冲突。
那么,我们就需要不断地修复发生冲突的代码。
并且,相比于其他的方法,这样做的成本也相当高。
因此,我认为这并不是制作底图的最佳方式。

第二个是'修改Pleione专用文件,使其能被虚幻引擎读取'。
但这种方法也存在问题。
在洛奇中制作物体时,我们通常会使用商业软件进行建模。
然后,我们会使用自己开发的程序将其转换为Pleione引擎可以读取的格式。
删除不必要的数据,并预先计算部分需要的数据以进行优化。
但是,在被删除的数据中,有些是虚幻引擎所需要的值。
虽然我们可以用剩余的数据构建3D模型,
但与原版有明显的差距,这种方法并非最佳。
 

<我们修改了文件以便虚幻引擎能够读取,但由于没有Smoothing Group值,女神像看起来很生硬>


第三个是'将原始建模数据在转换为专用文件之前移至虚幻引擎'。
虚幻引擎可以轻松且简单地读取用商业3D建模程序创建的文件。
因此,只要有完好的转换之前的原始数据时
我认为应该能以类似在Pleione上的形式,将其上传到虚幻中。
首次尝试将原始数据上传到虚幻是成功的。
我们已经将商用3D建模程序的原始数据输出为虚幻引擎可以读取的文件格式
将其导入虚幻引擎后发现,效果比我们想象的还要好。

但是,这种方法并不完美。
因为仍然可以看到Pleione的痕迹。
在制作洛奇物体的3D模型时,除了构造物体的形状外,
我们还会添加用于游戏内交互的数据。
但是在底图中,这些数据并不需要。
反而,由于这些数据,底图的形状看起来会有所不同。
因此,需要找到一种方法来删除这些不必要的,对底图造成干扰的数据。

<在虚幻引擎中,仍然可见的敦巴伦广场路灯空气墙和支点网格>

在细化这些方法的过程中,我也在思考'自动化'的问题。
如果要将原始建模数据移至虚幻引擎,就需要先在3D建模程序中打开该文件,
然后将其输出为虚幻引擎可以读取的文件格式。
问题在于,即使这个过程简单且快速,但由于文件数量过于庞大
人工逐一处理所有文件需要花费过多的时间。
考虑到时间成本,自动化是绝对必要的。

在洛奇中我们使用的3D建模软件,有支持自动化的脚本语言。
如果使用者将想在建模软件中执行的任务或操作预先写成脚本,
只需点击一下按钮,就可以让这个任务连续重复。
我使用这个脚本,将每个文件都需要手动进行的输出操作
变为自动化,让程序自行完成,
同时也将我们之前一直在苦恼的底图中冗余数据一并清除掉了。

而且,原始建模数据的纹理也需要转换为虚幻引擎能够读取的像素格式,
这个处理也是在脚本中一并编程完成的。


<迁移到虚幻引擎的迪尔科内尔银行>

"终于解决了所有问题" 我本以为如此,但并非如此。
洛奇中数量庞大的物体再次成为我们的难题。
为了将迁移的3D模型用作为底图,我们必须要布置在用虚幻引擎制作的爱琳之中。
但是,虚幻引擎无法读取Pleione专用的World数据文件。
因此,我必须逐一确认Pleione中的位置、方向和大小。
这是比之前只需要对每种物体进行一次的工作
数量更多,也更加繁琐。
而且因为需要用虚幻引擎来处理,所以也不能使用3D建模程序的脚本。

通过一番苦恼后,我想到了一个方法。
'如果能从专用World数据文件中提取出物体的类型、位置、方向和大小数据,
那么在虚幻引擎中进行布置时,是否可以使用这些数据呢?'
在构建Pleione爱琳世界时,我们使用了洛奇自主开发的World制作程序。
也就是将使用商业程序创建的3D模型数据导入到这个World制作程序中进行布置。
然后最终按照这些布置状态生成World数据文件。
自主开发的程序对我来说非常熟悉,数据文件内容也已经
在上面'第二个想法'的具体化过程中确认过了。
因此,我能够修改程序,从World数据文件中提取需要的数据。

现在,只剩下让虚幻引擎读取这些数据,自动布置3D模型的工作了。
我们通过在增引擎上增加功能来解决了这个问题。
因为自动布置功能完全是通过虚幻引擎现有的功能实现的,
所以相对于修改引擎,它的成本更低,代码冲突的风险也更小。
 

<为了用于底图迁移到虚幻引擎的敦巴伦>

经过这些过程,我的'自动化底图制作'工作已告一段落。
现在,背景模型师们正在努力基于底图创造新的爱琳。
看到正在以高质量重生的爱琳,感觉眼睛都被净化了。
虽然最终作品并非由我亲手完成,
但能在爱琳的重生过程中贡献一份力量,我感到无比的快乐和自豪。

如果洛奇要全部迁移到虚幻引擎,我们还有许多事情要做。
还有许多技术问题需要解决。
虽然这条路并不容易,但为了能够邀请所有米莱西安们来到新洛奇的日子,我们会坚持下去。
我们会持之以恒,勤勤恳恳地前进。
谢谢。
 
我现在已经变成没有咖啡就无法开始一天的人了。

闻着咖啡香,想象着迁移到虚幻引擎的爱琳,这感觉真是太棒了。


正在施工中,请绕行!

确定