咨询电话:400-810-1418服务与监督电话:400-810-1418转接2
  • 相关推荐
  • 干货分享!卡普空 (Capcom)自研RE Engine引擎与houdini的结合应用

    发布时间:2020-05-08 09:04:39

    Hello . 大家好!今天给大家带来一拨儿干货分享!卡普空 (Capcom)自研RE Engine引擎与houdini的结合,希望能给大家带来一些启发,我是神棍赵。

    一、介绍

    近日看了CAPCOM发布的一系列的关于自研RE Engine引擎的技术分享,很受启发(RE Engine引擎制作了生化危机2,3的重制版)。分享一下其中讲houdini 与自研RE Engine 引擎结合的部分,但我不会日语,只能带大家看个热闹。欢迎精通日语的大佬批评指教。

    二、开发思路

    首先是论述为什么接入houdini,大概在讲非破坏性工作流程的好处与重要性,以及大规模场景开发中houdini 与自研RE Engine引擎结合的必要性。

    1-1.png1-2.png

    直接采用hda作为交换数据交换格式。

    2.png

    这时问题出现,会houdini的比较少,学习houdini的成本又偏高,全员使用houdini 不现实。

    3.png

    所以这时我们的maya 大佬闪亮登场. houdini配合maya,就问你怕不怕。

    4.png

    说白了就是将不方便直接在引擎中集成的一部分hda 放到maya中使用。后文会有案例。

    5.png

    在maya中完成修改,验证效果之后再导入引擎里,后文有实例展示。

    6.png

    接着就是一通展示,主要展示了破碎,建模,lod等功能的实时操作,如丝般的顺滑,我就不一一截图了。 不过大家不用羡慕,经过一些测试,修改一些houdini engine的生成逻辑,再用HDK重写一部分节点,在ue4里也可以做到实时交互,实时编辑。(后文会有讲如何加速运行效率)

    7-1.gif7-2.gif

    自研引擎也分个三六九等,比如上面这个路网编辑的功能做的就不如下图中开发地平线的Guerrilla Games做的好(Guerrilla Games还把自己的引擎送给小岛秀夫开发死亡搁浅了)。Guerrilla Games做的道路能够同时影响地形和植被,比CAPCOM这个光秃秃的道路不知道高到哪里去了,日本厂商还是得要学习一个。小声BB一句,这个功能是可以通过houdini在ue4中实现的,甚至只用CPU就可以做到实时编辑,所以商业引擎也是大有可为的,不比自研引擎差。

    8.gif

    再往后就是一些 houdini engine api方面的东西,有兴趣可以直接去看unity或者ue4版的插件是怎么写的 ,这里我直接略过。

    9.png

    三、运用案例

    讲了houdini在地形中的一点运用,RE Engine的生成逻辑与育碧分享的基本一致,都是houdini生成mask与foliage信息,然后在引擎中生成与编辑。但讲了一些具体的技术细节,与育碧的那几个视频可以对比着看。

    10.png

    1、例如有时我们需要mask 来生成路面,但地面的mask实际利用的空间很小,造成了很大的空间浪费.所以最好的方法是进行切块。

    11-1.png11-2.png11-3.png11-4.png

    11-5.png

    这样就能保持效果不变,又能节省空间。

    12.png

    2、有时我们用模型进行一些地面的造型,但这个有时会产生各种问题,例如埋在地下,重复度太高,  手工拼出来的山体会产生锐角等。

    13-1.png13-2.png

    可以通过houdini将一些模型转化为地形。

    14.png

    3、解决模型拼合时的边缘接缝问题.如图中直接fuse的地形边缘布线很差。

    15-1.png15-2.png

    经过houdini处理后就会明显改善。

    16.png

    4、制作积雪

    17.gif

    5、生成冰溜子

    18.gif

    6、生成light grid

    19.gif

    四、运行加速

    用了hdk之后的效果显著。

    20.png

    虽然我看不懂日文,但常规来讲,希望提高运行速度就只能:

    1.GPU并行化 (走一个rtx2080ti,然后在opencl 与cuda中自己挑一个加速)。

    2.CPU多线程 (憋说话, 直接整一个3990x)。

    3.性能瓶颈直接用Hdk重写。

    21.png

    注意:

    1.houdini 自带opnecl 节点,cuda版需要自己写 。

    2.把每个节点都看做由不同的函数组成的类,不是每个函数都能多线程的,具体请自行翻阅hdk文档。

    3.文中提到了addpoint addprim的vex函数,但这只能具体问题具体分析,有时性能瓶颈并不在vex,常规的sop node开销也很大。找到性能瓶颈后,再用hdk重写。具体是写CPU多线程版节点还是GPU并行节点就只能具体问题具体分析了。

    当然还有一种方法就是搭服务器,毕竟没有什么问题是用钱解决不了的。不过谈到钱就真的触及我的知识盲区了,上面说的rtx2080ti,3990x之类的也都是我在口嗨,

    毕竟我很穷,还在用i7-4710hq(6年前的古董),新硬件的性能我是真的不懂。

    22.png

    综上所述,只要肯加钱,换设备,堆人力,绝对能实现实时编辑。不是对houdini这个商业软件有信心,是对c++以及钱有信心。

    五、总结

    感谢CAPCOM这次的分享,能让我们一窥日本大厂的工作方向,以及一些开发思路。希望大家能对技术分享心怀感激,现在那种技术不开源就嘲讽对方自私的心态真是要不得,有的看就偷着乐吧。

    来源:Thepoly