长久以来,浏览器都被认为是个上限偏低的平台,难以承载 3D 渲染等高性能要求的应用。但 Web 打开即用的便捷性,又无疑具有着巨大的想象空间。做为研发在线图形设计应用的团队,咱们在稿定一直致力于推进 Web 上专业级设计能力的落地。而 3D 文字能力,就是咱们最新交出的答卷。前端
相信很多在 XP 年代作过 PPT 的同窗,都知道那时 Office 是能够默认在 PPT 里渲染出 3D 形式的文字的。像这样:算法
不过你们对这种效果最近的印象,更多是在中老年表情包里这样的:浏览器
确实是听起来高大上的 3D 呀!但你是否也能感觉到这样的 3D 效果,有种比较浓厚的「土味」或者「廉价感」呢?这类功能确实早已有之,但效果一直有些……好吧,一言难尽。从 Office WordArt 诞生到如今,很难说这个领域的进步足够大,甚至它自身的很多 3D 效果都慢慢被雪藏起来了。然而,技术的发展是存在成熟度的曲线周期的。在迎来一些虽小但关键的突破后,一项技术才能真正地更新换代。在 9102 年的今天,能够认为咱们遇上了两个时间点:前端工程师
在这个时间点上,咱们实现了:编辑器
结合了这二者以后,咱们就可以在网页里对质感有更精确的控制了。从这样的金属质感:性能
到这样的岩石质感:学习
再到这样的鲜艳光泽质感:字体
这都是经过咱们的编辑器,在浏览器里实时渲染获得的。优化
那什么是质感呢?真实世界中,你所看到的物体颜色,并不是由物体表面的 “RGB 色值” 直接决定,而会在光照影响下,具有微妙的过渡——譬如对口红的色号来讲,真正重要的毫不是直男眼里的 RGB 数值,而应该是涂上后总体的光面、雾面等质感(好吧其实我不懂口红)。这种质感,咱们也称之为「材质」。在咱们所采用的 PBR 工做流中,最核心的材质效果是由金属度和粗糙度控制的。spa
什么是金属度和粗糙度呢?这是两个范围为 0~1 的数值,用来控制物体的质感。一些物理学上的规律,简单说来是这样的:
所以,粗略地说有如下现象:
这些现象在咱们引擎的渲染算法中都获得了体现。以被单个点光源照亮的红色球体为例,在不一样的金属度和粗糙度参数下,咱们渲染获得的效果就存在着明显的质感区别:
咱们能够发现如下现象:
上面的例子只使用了一个点光源。在此基础上,咱们还支持环境光,亦即将一张 360 度的全景图做为光源,全方位地照亮物体。好比,咱们能够把下面这张全景图做为光照的输入:
保持点光源打开,把一样的这些红色球体「放在」这个环境中,就能得到这样的渲染效果了:
在更复杂的光照状况下,也能感觉到这些球体的质感,仍然分别是红色的,或磨砂或光滑的,塑料球或金属球。咱们线上的模板素材里,一样充分应用了不一样的材质,从而用一套代码渲染出多样化的质感效果。
材质算法其实只是浏览器中整个 3D 文字绘制流程的一部分。在 Web 浏览器里,咱们控制了以下的一条链路,覆盖了从请求字体文件到绘制屏幕像素的整个过程:
归纳而言包括这么一些关键步骤:
走通这个过程后,咱们作到了在浏览器的 DOM 环境下,让 3D 文字与其余内容良好地共存,还可以快捷地切换它的材质。就像这样:
能够看到,如今咱们的 Web 编辑器中,用户不须要复杂的图形理论基础,也能轻松地为文字添加 3D 效果啦~移步这里便可体验免费的 稿定 3D 文字模板
做为一个前端工程师,这应该是我作过的最能结合技术和人文的项目了。从文字排印到到摄影理论,从立体几何到着色算法,从 Web 浏览器到图形渲染管线,来自各个领域的知识被串联了起来,最后实现了业界中的全新体验——你无需下载安装,只要打开连接,就能轻松制做出富有质感的精美 3D 文字。许多小伙伴们的支持在这个过程里都相当重要,这里也再次表示感谢!
固然,现阶段的 3D 文字还有不少能够改进的地方,如今的效果「专业」程度比起工业级 3D 渲染软件,也还有许多差距。咱们会继续保持学习,优化体验,提高效果和易用性,探索 Web 设计在 3D 方向上的形态,也但愿接下来能总结出更多的技术干货和你们分享。最后,欢迎志同道合的小伙伴们加入咱们噢~