虚拟3D世界AceRay极速渲染3D实景复刻、3D渲染、3D算法

3D实景逛街意味着线下的卖场所有数据需要3D数字化,这涉及到3D内容生产,数据链路整合,3D渲染技术等多个领域,是一项规模浩大的工程,需要设计师,工程师,以及产业链方面的通力合作才能做到。

躺平设计家是阿里巴巴淘系技术部联合躺平推出的为商家和设计师服务的免费3D设计工具和渲染服务,是一个能够高效生产3D内容的平台工具。其中最新推出的依托于淘系技术部AceRay云渲染平台的极速渲染功能,大幅度提高了设计预览的速度,可以助力各商家和设计师更方便快速地制作3D内容,更好地融入3D场景化购物这一未来家装购物模式。

在躺平设计家里,用户可以非常方便地编辑3D场景,并利用极速渲染快速查看渲染效果。

AceRay 极速渲染云平台涵盖了大量的工程化设计和最新几何/渲染研究成果,包括3D资源的处理,服务器资源调度,以及图形渲染算法。

3D资源

在进入到渲染前,需要提前准备好渲染资源,这些资源包括模型、材质。

家装行业的业务复杂度很高,需要支持大量不同格式模型上传,同时需要为各个平台产出模型和材质。不同格式模型上传需要转成中间格式;目前家装模型通常三角面数都是非常高,需要通过几何优化手段把面数降下去;家装模型中的贴图通常都非常大,需要根据各个平台优化贴图;等等。

为了处理各个不同的问题,需要大量的服务器处理各个不同的问题,但是这些服务器怎样串通起来,怎样合理的调度能够使得这些服务器的综合效率最高,各个服务器间怎样并发处理大量的模型,为各个平台产出不同的模型格式,需要一个管控平台来处理这些问题。因此我们开发了模型中控平台,支持无上限提交模型,同时并发处理大量模型,为每个模型定制不同的处理流程,能够自由地控制每个模型的处理优先级。

模型中控平台中包含两个核心部分:流程引擎和调度引擎。

开始一个新模型转换流程时,第一步进入流程引擎,分析流程节点,找出第一个需要执行的节点;然后任务交付到调度引擎,调度引擎负责找出最合理的远程执行机器,将任务分给它,并等待它执行完毕;当远程机器执行完毕时,调度引擎将任务交回给流程引擎,流程引擎将当前模型流转到所属流程的下一个节点,再度交付到调度引擎。重复执行这样的过程,直到当前模型的全部流程被执行完。

image.png

模型中控平台上可以同时运行N种不同的处理流程,一种典型的处理流程如下:

image.png

解决了批量处理问题,我们有更多的单点问题需要解决,比如模型问题:

目前设计师或者工厂所涉及的家装模型通常三角面数都是非常高的,材质非常复杂。

高面数有利于增加模型的细节,但是对于极速渲染来说,这么多的三角面片就不是一件好事了。因此我们需要在渲染之前,预处理这些拥有大量三角面片的模型。目前市面上类似的工具应该说是形形色色,都能做到精简模型面片的功能。但是具体到细节上,减面后需要保持原模型的各种细节,要有精准的法线,uv等要求,最重要的是一套参数控制所有模型,能够达到非人工干预、自动化、规模化的模型处理工具,在工业界并不存在。因此我们自主开发了一套几何优化工具解决上述问题。

对比Max处理的模型,我们处理的模型在外形保持、细节保持和法线、UV保持都要更好。

细节保持效果:

image.png

外形保持效果:

image.png

在解决了面数问题后,我们需要进一步解决材质问题。在家装行业,比较常见的一种材质是Vray材质,这种材质的参数非常多,计算过程非常复杂,非常不利于极速渲染。而市面上又没有一种Vray材质转更简单材质的方法。因为我们自研了一套材质转换方案,将现存的材质转换到更简单的材质来提升极速渲染的速度。

以下是材质转换的效果:

image.png

3D云渲染服务

淘宝的商家依赖于我们的渲染服务,因此我们并非在开发一个单点渲染引擎,而是需要一个服务器集群来处理上大量的请求,这个服务器集群组成了云渲染平台。云渲染平台管理所有的渲染请求类型,包括离线渲染、极速渲染,以及布料仿真。云渲染平台隔离业务方和渲染服务器,并统一了渲染接口,调度器会为每个独立的请求寻找最合适的机器,最快速地完成这次渲染请求。

云渲染平台分为两层:调度集群和渲染集群。调度集群向渲染集群发送任务,渲染集群向调度集群上报状态。

渲染任务首先进入调度集群,调度集群根据上报的状态和发送历史,选择最优的渲染服务器,将任务发送给它;渲染服务器更新并上报它的机器状态,然后开始执行渲染。

image.png

AceRay极速渲染

设计工具通常都使用离线渲染器。离线渲染的效果很好,但是比较大的问题是渲染速度很慢,渲染一张图的时间短则几分钟,长则几小时。对于设计师来说,渲染速度慢无疑会降低生产3D场景的效率,特别是某些场景中有需要频繁调整的元素时,快速渲染的需求显得更为迫切。对于消费者,快速的效果预览也十分必要,人们通常没有耐心为了一张效果图等待太长时间。

AceRay极速渲染服务正是为了解决离线渲染速度慢的问题而诞生,渲染器的目标是要帮助设计师提高3D场景生产效率,提高消费者3D功能使用体验。

谈到渲染,效果永远是排在第一位的。如果没有优秀的渲染质量,那么再快的速度也失去了意义。我们使用 AceRay 云渲染平台,在十几秒内渲染了两张室内家装的效果图。

image.pngimage.png

在保证上述的渲染效果时,极速渲染的渲染速度可以达到离线渲染的 20~30 倍,这无疑是一个很具有诱惑力的功能。在躺平设计家里,极速预览功能通常在3~5秒就能得到一张预览图像,极大提升了设计师的工作效率。

光栅化和光线追踪

首先简单介绍一下渲染原理。以游戏为代表的实时渲染业界通常使用光栅化渲染器,而以电影特效、设计工具为代表的离线渲染业界通常使用基于光线追踪的渲染器。

image.png

光栅化渲染的管线和光线追踪的渲染管线和有着很大的不同。传统的光栅化渲染管线包括顶点处理,图元组装,光栅化以及像素着色等阶段,是一套在游戏和实时渲染业界久经考研的渲染方案。自人类有图形硬件开始,图形硬件就在做一件事情,那就是加速光栅化渲染。然而光栅化渲染有着致命的缺陷,在渲染过程中,物体与物体之间的相互关系缺失。这个缺点导致了涉及到物体相互关系的光照效果都很难计算,需要设计特殊的算法,花费高昂的代价来实现。这些效果包括阴影,间接光照,镜面反射,环境光遮蔽等。正因如此,光栅化渲染的效果在很长一段时间内都难以比肩离线渲染,做不到真正的物理真实的渲染。

而离线渲染使用的基于光线追踪原理,简单来说是从相机的位置出发,向屏幕上的每个像素的位置发射光线,通过模拟光线的各种反射/折射/散射的过程,从而实现真实的渲染效果。光线追踪的原理是简单的,但是要达到真实的渲染效果,每个像素需要大量的光线和计算,这是导致离线渲染速度慢的最主要原因。尽管现在CPU通常都是多核设计,但是这些计算硬件在离线渲染巨大的计算量面前还是显得力不从心,要真正能做到能够在十几秒甚至几秒内渲染出效果图,这个效率还是远远不够的。

基于光线追踪的离线渲染器,本质来说是使用光线追踪的功能,利用蒙特卡洛方法,对高维的渲染方程做数值估计。而蒙特卡洛方法使用了随机采样,为了达到较好的渲染质量,需要很高的采样数量。

AceRay极速渲染采用定制的优化算法,很好的解决了离线渲染中需要很高采样数的问题,在较快的时间内使用光线追踪算法获得平滑的光照效果。

image.png

直接光照

image.png

间接光照

image.png

最终效果

总结

虽然图形学和光线追踪已经有相当长的历史了,基于光线追踪的快速渲染还是一个相对较新的领域。如何更好地利用硬件计算能力,结合当前业务的需求,做出快速而高质量的渲染器是一个相当富有挑战性的工作。虽然用户通常只会接触到最终的渲染效果图,然而渲染之前的模型处理,场景处理,服务器调度等工作是整个渲染服务的基石。3D业界的数据流目前是非常多样化的,如何兼容各种数据流,处理成为统一的渲染器输入格式,高效调度服务器资源,完成渲染,这背后的工作值得更多的关注和赞赏。

更多极速渲染效果图:

image.pngimage.pngimage.pngimage.png
展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java