简介: 天猫618宣布的 3D 购物时代,相信有不少小伙伴好奇,这背后有哪些“黑科技”?橙子从如下三点为你揭秘——3D实景复刻、3D渲染、3D算法,上周讲了《天猫618宣布开启3D购物时代,实景逛街背后的技术是这样实现的》,本期将和你们分享 AceRay 极速渲染。算法
做者|躺平技术-3D技术与渲染平台组
编辑|橙子君
出品|阿里巴巴新零售淘系技术部服务器
天猫618宣布的 3D 购物时代,相信有不少小伙伴好奇,这背后有哪些“黑科技”?橙子从如下三点为你揭秘——3D实景复刻、3D渲染、3D算法,上周讲了《天猫618宣布开启3D购物时代,实景逛街背后的技术是这样实现的》,本期将和你们分享 AceRay 极速渲染。并发
5月28日,天猫正式宣布开启3D场景购物时代,3D实景逛街今后走到了电子商务的最前线。用户足不出户即可逛各大卖场,在虚拟3D世界中,更能够享受自由搭配家具的畅快感觉。工具
3D实景逛街意味着线下的卖场全部数据须要3D数字化,这涉及到3D内容生产,数据链路整合,3D渲染技术等多个领域,是一项规模浩大的工程,须要设计师,工程师,以及产业链方面的通力合做才能作到。优化
躺平设计家是阿里巴巴淘系技术部联合躺平推出的为商家和设计师服务的免费3D设计工具和渲染服务,是一个可以高效生产3D内容的平台工具。其中最新推出的依托于淘系技术部AceRay云渲染平台的极速渲染功能,大幅度提升了设计预览的速度,能够助力各商家和设计师更方便快速地制做3D内容,更好地融入3D场景化购物这一将来家装购物模式。spa
在躺平设计家里,用户能够很是方便地编辑3D场景,并利用极速渲染快速查看渲染效果。设计
AceRay 极速渲染云平台涵盖了大量的工程化设计和最新几何/渲染研究成果,包括3D资源的处理,服务器资源调度,以及图形渲染算法。3d
在进入到渲染前,须要提早准备好渲染资源,这些资源包括模型、材质。blog
家装行业的业务复杂度很高,须要支持大量不一样格式模型上传,同时须要为各个平台产出模型和材质。不一样格式模型上传须要转成中间格式;目前家装模型一般三角面数都是很是高,须要经过几何优化手段把面数降下去;家装模型中的贴图一般都很是大,须要根据各个平台优化贴图;等等。接口
为了处理各个不一样的问题,须要大量的服务器处理各个不一样的问题,可是这些服务器怎样串通起来,怎样合理的调度可以使得这些服务器的综合效率最高,各个服务器间怎样并发处理大量的模型,为各个平台产出不一样的模型格式,须要一个管控平台来处理这些问题。所以咱们开发了模型中控平台,支持无上限提交模型,同时并发处理大量模型,为每一个模型定制不一样的处理流程,可以自由地控制每一个模型的处理优先级。
模型中控平台中包含两个核心部分:流程引擎和调度引擎。
开始一个新模型转换流程时,第一步进入流程引擎,分析流程节点,找出第一个须要执行的节点;而后任务交付到调度引擎,调度引擎负责找出最合理的远程执行机器,将任务分给它,并等待它执行完毕;当远程机器执行完毕时,调度引擎将任务交回给流程引擎,流程引擎将当前模型流转到所属流程的下一个节点,再度交付到调度引擎。重复执行这样的过程,直到当前模型的所有流程被执行完。
模型中控平台上能够同时运行N种不一样的处理流程,一种典型的处理流程以下:
解决了批量处理问题,咱们有更多的单点问题须要解决,好比模型问题:
目前设计师或者工厂所涉及的家装模型一般三角面数都是很是高的,材质很是复杂。
高面数有利于增长模型的细节,可是对于极速渲染来讲,这么多的三角面片就不是一件好事了。所以咱们须要在渲染以前,预处理这些拥有大量三角面片的模型。目前市面上相似的工具应该说是形形色色,都能作到精简模型面片的功能。可是具体到细节上,减面后须要保持原模型的各类细节,要有精准的法线,uv等要求,最重要的是一套参数控制全部模型,可以达到非人工干预、自动化、规模化的模型处理工具,在工业界并不存在。所以咱们自主开发了一套几何优化工具解决上述问题。
对比Max处理的模型,咱们处理的模型在外形保持、细节保持和法线、UV保持都要更好。
细节保持效果:
外形保持效果:
在解决了面数问题后,咱们须要进一步解决材质问题。在家装行业,比较常见的一种材质是Vray材质,这种材质的参数很是多,计算过程很是复杂,很是不利于极速渲染。而市面上又没有一种Vray材质转更简单材质的方法。由于咱们自研了一套材质转换方案,将现存的材质转换到更简单的材质来提高极速渲染的速度。
如下是材质转换的效果:
淘宝的商家依赖于咱们的渲染服务,所以咱们并不是在开发一个单点渲染引擎,而是须要一个服务器集群来处理上大量的请求,这个服务器集群组成了云渲染平台。云渲染平台管理全部的渲染请求类型,包括离线渲染、极速渲染,以及布料仿真。云渲染平台隔离业务方和渲染服务器,并统一了渲染接口,调度器会为每一个独立的请求寻找最合适的机器,最快速地完成此次渲染请求。
云渲染平台分为两层:调度集群和渲染集群。调度集群向渲染集群发送任务,渲染集群向调度集群上报状态。
渲染任务首先进入调度集群,调度集群根据上报的状态和发送历史,选择最优的渲染服务器,将任务发送给它;渲染服务器更新并上报它的机器状态,而后开始执行渲染。
设计工具一般都使用离线渲染器。离线渲染的效果很好,可是比较大的问题是渲染速度很慢,渲染一张图的时间短则几分钟,长则几小时。对于设计师来讲,渲染速度慢无疑会下降生产3D场景的效率,特别是某些场景中有须要频繁调整的元素时,快速渲染的需求显得更为迫切。对于消费者,快速的效果预览也十分必要,人们一般没有耐心为了一张效果图等待太长时间。
AceRay极速渲染服务正是为了解决离线渲染速度慢的问题而诞生,渲染器的目标是要帮助设计师提升3D场景生产效率,提升消费者3D功能使用体验。
谈到渲染,效果永远是排在第一位的。若是没有优秀的渲染质量,那么再快的速度也失去了意义。咱们使用 AceRay 云渲染平台,在十几秒内渲染了两张室内家装的效果图。
在保证上述的渲染效果时,极速渲染的渲染速度能够达到离线渲染的 20~30 倍,这无疑是一个很具备诱惑力的功能。在躺平设计家里,极速预览功能一般在3~5秒就能获得一张预览图像,极大提高了设计师的工做效率。
首先简单介绍一下渲染原理。以游戏为表明的实时渲染业界一般使用光栅化渲染器,而以电影特效、设计工具为表明的离线渲染业界一般使用基于光线追踪的渲染器。
光栅化渲染的管线和光线追踪的渲染管线和有着很大的不一样。传统的光栅化渲染管线包括顶点处理,图元组装,光栅化以及像素着色等阶段,是一套在游戏和实时渲染业界久经考研的渲染方案。自人类有图形硬件开始,图形硬件就在作一件事情,那就是加速光栅化渲染。然而光栅化渲染有着致命的缺陷,在渲染过程当中,物体与物体之间的相互关系缺失。这个缺点致使了涉及到物体相互关系的光照效果都很难计算,须要设计特殊的算法,花费高昂的代价来实现。这些效果包括阴影,间接光照,镜面反射,环境光遮蔽等。正因如此,光栅化渲染的效果在很长一段时间内都难以比肩离线渲染,作不到真正的物理真实的渲染。
而离线渲染使用的基于光线追踪原理,简单来讲是从相机的位置出发,向屏幕上的每一个像素的位置发射光线,经过模拟光线的各类反射/折射/散射的过程,从而实现真实的渲染效果。光线追踪的原理是简单的,可是要达到真实的渲染效果,每一个像素须要大量的光线和计算,这是致使离线渲染速度慢的最主要缘由。尽管如今CPU一般都是多核设计,可是这些计算硬件在离线渲染巨大的计算量面前仍是显得力不从心,要真正能作到可以在十几秒甚至几秒内渲染出效果图,这个效率仍是远远不够的。
基于光线追踪的离线渲染器,本质来讲是使用光线追踪的功能,利用蒙特卡洛方法,对高维的渲染方程作数值估计。而蒙特卡洛方法使用了随机采样,为了达到较好的渲染质量,须要很高的采样数量。
AceRay极速渲染采用定制的优化算法,很好的解决了离线渲染中须要很高采样数的问题,在较快的时间内使用光线追踪算法得到平滑的光照效果。
直接光照
间接光照
最终效果
虽然图形学和光线追踪已经有至关长的历史了,基于光线追踪的快速渲染仍是一个相对较新的领域。如何更好地利用硬件计算能力,结合当前业务的需求,作出快速而高质量的渲染器是一个至关富有挑战性的工做。虽然用户一般只会接触到最终的渲染效果图,然而渲染以前的模型处理,场景处理,服务器调度等工做是整个渲染服务的基石。3D业界的数据流目前是很是多样化的,如何兼容各类数据流,处理成为统一的渲染器输入格式,高效调度服务器资源,完成渲染,这背后的工做值得更多的关注和赞扬。
更多极速渲染效果图: