長久以來,瀏覽器都被認爲是個上限偏低的平臺,難以承載 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 方向上的形態,也但願接下來能總結出更多的技術乾貨和你們分享。最後,歡迎志同道合的小夥伴們加入咱們噢~