点击注册
点击注册
.

如何评价EpicGames今日公布的虚幻引擎5


发布日期:2022-03-21 14:27    点击次数:123


如何评价EpicGames今日公布的虚幻引擎5

很多专业回答了,别的就不多说了,补充一点儿(窃以为的)Nanite背后的核心要素技术(之一)的细节。不是科普文,只适合有一定渲染基础的人看。解释几个常见的误解:3D scan或者Z brush的模型(几千万或者上亿面)可以直接用:对也不对。可以直接扔进游戏引擎编辑器。但是并不能直接扔进渲染管道。中间有个meshlet的剖分预计算过程。简单来说,烘培(或者模型导入)的时间更长了。(所以我觉得今后美术和关卡之间还会有一个云服务器的距离)而且,对于复杂模型,meshlet的自动剖分不见得理想,有时候还是需要手工辅助调整;但是低模-LOD-法线烘培流水线的确可能是要被淘汰了。(well,在移动端还没有追上来之前,其实也不会淘汰,而是更加分裂)模型存储高达*TB:对也不对。制作环境当中的原始文件(3D扫描结果或者zbrush)的存储开销的确会很大。所以采用这个新工作流的团队要考虑用中心存储替代开发人员的本地存储,并且要上万兆网。但是经过meshlet剖分计算之后的顶点存储,因为meshlet剖分,每个碎片的顶点索引可以被控制在16bit,这就可以大大压缩存储容量。(以上回答基于技术原理推测,不代表UE5或者任何商用产品实际表现)5/16 更新先贴两篇很有见地的分析:不管猜中没猜中,能够快速给出自己的模型,甚至付诸实践去验证,真的是非常了不起的。在这个基础上,从我的角度点评几句。一样只是一家之言,而且也是靠猜,所以随便看看就好。Nanite这个技术的重点是实现了高模的渲染。也就是原汁原味地渲染原始的高模,这应该是一个前提条件。无论是Tess,还是用频域变换的方法,这其实都是在低模上模拟高模,并不是也不能原汁原味地还原原本的高模。也就是说,添加出来的细节其实和原版有很多偏差。尤其重要的是UV。Tess技术之所以没有大流行,就是因为UV极难控制。从各位大神分享的Tess的结果mesh上大家也可以看到,哪个3D模型师敢那样切割多边形,我觉得无论哪家公司都会让他第二天卷铺盖走人。所以,我相信Nanite所存储的是原始的模型。它所解决的是如何根据屏幕自适应加载模型的问题。而不是如何从低模添加细节模仿高模的问题。我觉得有一个细节很有意思。视频当中提到贴图基本都是8k。8k贴图的像素数是64M。这看起来好像没啥?但是视频当中还提到有个模型是3300万面。这就很有意思了,因为3300万(33M)差不多正好是64M的一半。熟悉渲染的同学应该知道,虽然一个三角形需要3个顶点才能描述,但是对于连续的三角形,如果用triangle strip,那么理想情况下每增加一个顶点就可以增加一个三角形(另外两个顶点与别的共享)。而在实际项目当中,当然不会那么理想,但是2:1这个比例是比较常见的。所以我们不妨大胆假设如 @ycz 所说的那样,顶点是存储在贴图上的。那么8K贴图差不多正好能存储33M三角形。也就是说,3300万面的模型顶点数据,差不多一张8K贴图就可以存完。(当然,因为顶点还有顶点属性,如UV等,可能还需要配套的一张或者几张8K贴图)。那么这个贴图多大一张呢?对于高模,我们保守估计顶点坐标需要fp32才行。在这种情况下,一个顶点是12个字节。当然因为GPU的对齐关系,恐怕实际按照16字节排列会效率更高。当然多出来的4个字节也不必浪费,用来存存PBR要的粗糙度金属度啥的,或者干脆就是顶点所在的三角形编号(面序号),都可以。这样的情况下,非压缩纹理:64M x 16 = 1GB。很恐怖是吧,但是在PS5的5GB/s+的SSD带宽下,整体的加载时间也在200ms以下。况且这是非压缩的情况。结合VT技术,根据实际需要加载这个纹理当中的一小块,那么就更快了。然后这张纹理还可以做Mips。如果巧妙地在这张图上排列顶点,使得在3D空间上相邻的顶点在图上也排列在一起,那么Mips实际上就等于求相邻几个三角形的退化三角形。也就是自动实现了减面的效果。当然这有个前提,就是要将模型正确地剖分成小碎片,避免跨越边界(导数不连续或者激变的地方)。否则Mips会将这些边缘给平滑掉。我想,Epic也有提到对导出模型的DCC工具有要求,应该也是指这个意思。可能导出的模型当中不仅仅要有mesh,还需要有子表面的分组信息,以便引擎正确将其分割到不同的VT小格子当中。Anyway,所有一切在UE5正式公布的时候,随着文档以及源代码可见,自然会有确定的答案。但是看到即便是知乎这种并不专业的地方也能有那么多有见地的分析,十分受鼓舞,对国内数字媒体的将来发展,至少在技术层面,更加感到有信心。顺便再说一下Lumen(对GI自身修养不够所以就只说一句):看到有回答调侃数mm到数千米的说法,其实我倒是觉得可能。这种说法其实恰恰是在暗示Lumen的GI是基于屏幕空间(像素)的,而不是基于场景坐标尺寸的。无论是几mm还是几千米,只要显示在屏幕上,就是那么点儿像素,是吧。所以它们的确是可以都被cover掉的。

例:碰(明杠)3万,那1.2.4万就可能拆掉打出来,一来可以做搭子吃牌真人斗地主游戏大厅真人斗地主游戏大厅,二来又可让他家必须硬拆掉一组搭子,使听牌速度减慢。