最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

V-Ray 用戶接口 Qt 化的研發(fā)秘辛

2023-03-16 13:49 作者:Chaos中國(guó)  | 我要投稿

在這個(gè) Chaos 創(chuàng)新實(shí)驗(yàn)室的首篇文章中,我們將透露Chaos團(tuán)隊(duì)在Autodesk 3ds Max中,V-Ray 用戶接口的 Qt 化的艱辛研發(fā)歷程。

函式庫(kù)啊,函式庫(kù)...

3ds Max 是古老的行業(yè)巨人,已有 30 年的歷史。

一直以來(lái),Chaos 與 3ds Max 保持著密切關(guān)系,最重要的是在每次新技術(shù)的出現(xiàn),要交給用戶時(shí),彼此都能共享這些珍貴回憶。

其中一項(xiàng)改進(jìn)是 Max UI 采用了 Qt 函式庫(kù),Max 內(nèi)部在幕后的改版大約從 2017 年版本開始,第一批具有 Qt 的接口在2018年版本發(fā)行,當(dāng)今任務(wù)仍在進(jìn)行。

引進(jìn) Qt 的宗旨在于用一套現(xiàn)代化的功能取代陳舊的 Win32 函式庫(kù),整個(gè)速度更快,新的接口還支持跨平臺(tái)。

效能評(píng)測(cè)

為了驗(yàn)證 Qt 接口更有效率的觀點(diǎn),將參考我?guī)啄昵斑M(jìn)行的測(cè)試結(jié)果,這些結(jié)果仍然有意義,還有些是在當(dāng)前的硬件與軟件上重新測(cè)試的。

我對(duì)重新繪制三種關(guān)鍵材質(zhì)的完整用戶接口所花費(fèi)的時(shí)間進(jìn)行基準(zhǔn)檢驗(yàn)。V-Ray 材質(zhì)、ALSurface 和 FastSSS2,因?yàn)橐陨喜馁|(zhì)是許多工作流程的核心,并包含許多 UI 控件。

我把材質(zhì)編輯器拉伸到最大高度,以確保所有控件都繪制出來(lái),并停用了渲染預(yù)覽。

我測(cè)量了 UI 加載時(shí)間 100 次,然后取平均值。

測(cè)試結(jié)果將在文章中說(shuō)明。

看似美好的過(guò)去......其實(shí)并非如此

十年前的 UI 速度感覺(jué)是足夠的,甚至覺(jué)得速度很快,因?yàn)檎w經(jīng)驗(yàn),從硬件的速度,到用戶的期望,都滿足這點(diǎn)。

換句話說(shuō),以前我們對(duì) UI 加載的敏感度比今天要低。

為了檢驗(yàn)這一理論,我努力用 V-Ray 3.x 的最后版本(3.7)在 Max 2015 上進(jìn)行基準(zhǔn)檢驗(yàn),因?yàn)樵摪姹旧贤耆珱](méi)有 Qt。

因此,這些測(cè)量速度的數(shù)據(jù)是基于原生 Win32 控件的,或多或少處于最佳狀態(tài)。

VRayMtl?類別花了1.6159秒來(lái)重繪。

VRayALSurfaceMtl?花了1.2955秒,VRayFastSSS2?也花了差不多的時(shí)間,為1.2655秒。

在 Max 中拖動(dòng)材質(zhì)編輯器或渲染設(shè)置窗口時(shí),鼠標(biāo)在其他位置很痛苦地延遲,而窗口卻無(wú)望地想要追上鼠標(biāo)(以當(dāng)前強(qiáng)大的硬件,幾乎需要整整一秒鐘才能做到這一點(diǎn))。

這是 V-Ray 3.7 在 Max 2015 下的渲染設(shè)置窗口的截圖。注意到鼠標(biāo)在等待窗口的捕捉。

這個(gè)測(cè)試證明了 Autodesk 的開發(fā)人員的遠(yuǎn)見卓識(shí),他們注意到性能的不足,并提前引進(jìn)了 Qt。
感謝 Autodesk 開發(fā)人員。

成長(zhǎng)的痛苦

進(jìn)行 Max 的 Qt 化時(shí),大約在 Max 的 2018 版,我們開始收到關(guān)于 UI 速度減慢的報(bào)告,實(shí)在慢太多了,因此不能簡(jiǎn)單地歸咎于用戶過(guò)度使用的工作站。

就在這時(shí)候,我開始對(duì)各種 Win32 UI 組件的性能進(jìn)行基準(zhǔn)檢驗(yàn),結(jié)果出現(xiàn)了不穩(wěn)定的重繪速度。

同樣,窗口的開啟時(shí)間變得特別長(zhǎng),有時(shí)需要幾十秒,而且在 Max 的其他用戶接口上移動(dòng)時(shí),會(huì)變得更加延遲。

問(wèn)題是由于 Max 將 Win32 控件自動(dòng)轉(zhuǎn)換成 Qt 版本,整個(gè)過(guò)程在每核時(shí)鐘較低的多核計(jì)算機(jī)上,會(huì)變成影響工作流程的問(wèn)題,而在低核、高頻率的 CPU 上,算是小小的問(wèn)題。

這離理想狀態(tài)很遠(yuǎn),但這樣的轉(zhuǎn)換是無(wú)可避免的:由于在過(guò)渡到 Qt 的過(guò)程中,需要保持兼容性。

然而,這影響了每個(gè) UI 控件,導(dǎo)致了嚴(yán)重的滯后、產(chǎn)生間歇性減速與普遍的遲鈍:畢竟我們?cè)谒械?UI 中都有大量的控件在使用。

范例圖顯示了忽高忽低的減速??v軸的最高延遲時(shí)間達(dá)數(shù)千毫秒。

為了量化降速,以下是用Max 2018測(cè)試相同V-Ray版本(3.7)的結(jié)果:

VRayMtl: 2.5436 秒

VRayALSurfaceMtl: 2.0685 秒

VRayFastSSS2: 1.9779 秒

您會(huì)發(fā)現(xiàn),減速是成比例的,對(duì)所有 UI 的影響都一樣,大約是63%。

與此同時(shí),第一批原生 Qt 對(duì)話框出現(xiàn)了,例如在 Autodesk 物理材質(zhì)中,它們?cè)?Win32 滯后的地方特別快:重新繪制特定的控制類型,如微調(diào)器或下拉式選單,新的 Qt 接口比舊版速度快了 10 倍。

?

范例圖顯示了 Qt 控件的比較速度。縱軸達(dá)數(shù)百毫秒。

細(xì)心的讀者會(huì)注意到每次運(yùn)行界面都變得越來(lái)越慢。

這是那個(gè)特定的 Max 版本的另一個(gè)問(wèn)題:在某些情況下(例如長(zhǎng)時(shí)間的視覺(jué)開發(fā)),會(huì)加重UI滯后的痛苦,盡管沒(méi)有顯著減慢 Qt。

很明顯,Chaos自己的軟件也需要將UI轉(zhuǎn)換成Qt,因?yàn)槠浜锰幪罅?,而且無(wú)論如何,老屋子已經(jīng)著火了。

典范轉(zhuǎn)移

用 Qt 的原生方法編寫 UI 并不簡(jiǎn)單:在做法、方法和控件之間幾乎沒(méi)有與舊的 Win32 相匹配之處,所以必須從頭開始構(gòu)建 UI 程序代碼。

這意味著重新輸入每個(gè)頁(yè)簽,重新排列每個(gè)微調(diào)器,重新設(shè)置每個(gè)對(duì)象的默認(rèn)值,調(diào)整各種控件的行為,諸如此類。當(dāng)然,理想的情況是不損害使用者原有的體驗(yàn)與效率。

調(diào)整的過(guò)程

這樣說(shuō)吧,我們第一次并沒(méi)有把事情做對(duì):當(dāng)開發(fā)人員開始在用戶接口上工作時(shí),意想不到的,而且往往是不想要的行為出現(xiàn)了,經(jīng)過(guò)一段時(shí)間也無(wú)法修復(fù)。

各種 Qt 組件的尺寸與舊的 Win32 組件不一樣,所以幾乎所有的地方都需要調(diào)整。
此外,新控件的默認(rèn)方法是相對(duì)定位,并非絕對(duì)尋址;控件的默認(rèn)策略是自動(dòng)縮放;作為 Win32 庫(kù)的直接延續(xù),各種行為明顯不同于人們對(duì) UI 的預(yù)期(例如材質(zhì)和貼圖按鈕),等等狀況。
我們遇到的接連失誤讓我們清楚地意識(shí)到,Chaos 所導(dǎo)入的 Qt 接口必須與 3ds Max 本身的整合以及其 Qt 庫(kù)的成熟度并駕齊驅(qū)。

由于趕時(shí)間,我們采取了大量艱苦的手工勞動(dòng)策略,以便使 UI 看起來(lái)連貫一致,并能在功能上發(fā)揮作用。好在,V-Ray 中的許多用戶接口布局是自動(dòng)生成的(例如,大多數(shù)渲染元素的用戶接口,或 VrayALSurface 材質(zhì),或 VRayDirt 紋理),并共享共同的程序代碼,使改版變得更容易些。

然而,當(dāng)我們完成了第一個(gè)概念驗(yàn)證的 UI 接口時(shí),發(fā)現(xiàn)要及時(shí)完成 Qt 的轉(zhuǎn)換,需要耗費(fèi)龐大的工作量。

全體總動(dòng)員!

為了確保我們能夠在發(fā)布 V-Ray Update 1 之前及時(shí)完成第一個(gè)過(guò)渡的轉(zhuǎn)換步驟,我們正面迎擊這個(gè)任務(wù),整個(gè) vMax 團(tuán)隊(duì)(也就是V-Ray for 3ds Max的開發(fā)人員的簡(jiǎn)稱)都參與了 Qt 化的工作。

每個(gè) V-Ray 對(duì)話框的 UI 控件的數(shù)量之多,意味著這項(xiàng)工作仍然需要整個(gè)團(tuán)隊(duì)付出許多天的努力,而這反過(guò)來(lái)又給他們帶來(lái)了壓力,因?yàn)檫€必須處理其他任務(wù)。

可說(shuō),對(duì)于 vMax 的開發(fā)人員來(lái)說(shuō),時(shí)間緊迫,但高質(zhì)量的結(jié)果使一切努力都值得。

實(shí)際運(yùn)行狀況

從 V-Ray 6.0 Update 1(或6.1)開始,向 Qt 函式庫(kù)的過(guò)渡基本上已經(jīng)完成。

材質(zhì)、貼圖、各種節(jié)點(diǎn)、修改器和每一個(gè)可轉(zhuǎn)為 Qt 的輔助窗口都已經(jīng)轉(zhuǎn)換完畢。

仍有些小部分有待轉(zhuǎn)換,因?yàn)檫@些并不適合 Qt(例如,古老的 light lister。),我們還保留了時(shí)間來(lái)收集用戶對(duì)新控件的布局和行為反饋與意見,以便更能完成轉(zhuǎn)換工作,并將用戶體驗(yàn)提升至最大。

還有行為上的限制需要處理,一部分是由我們自己經(jīng)手,另一部分是由于將 Qt 庫(kù)整合到 Max 本身所產(chǎn)生的副作用。

這一過(guò)渡還沒(méi)有完全完成,所以各位要有心理準(zhǔn)備面對(duì)更長(zhǎng)的適應(yīng)期。

這一切值得嗎?

沒(méi)錯(cuò),我們覺(jué)得為這項(xiàng)工作付出的努力是值得的,而且得到的實(shí)測(cè)數(shù)據(jù)也令人振奮:

V-Ray 6.1 for Max 2023的?VRayMtl?的繪制時(shí)間為0.4664秒(即使 V-Ray 從 3.7 版開始多了更多控件需要重繪?。?strong>VRayALSurfaceMtl?需要0.3621秒,?VRayFastSSS2?只需要0.2857秒。

在所有的情況下,控件的重繪都發(fā)生得如此之快,以至于肉眼無(wú)法察覺(jué)。

同樣,窗口的拖動(dòng)也是瞬間完成的,好似窗口粘在鼠標(biāo)上。

捕獲當(dāng)前的渲染設(shè)置窗口。注意,這里我們有了新的布局。

這表示目前的Qt UIs?比原生的Win32快三到四倍,比轉(zhuǎn)換的Win32快七倍。

然而,真實(shí)評(píng)價(jià)必須來(lái)自您,我們的用戶:請(qǐng)花時(shí)間嘗試一下最新的V-Ray 6更新版,并分享您對(duì)Qt用戶接口的新外觀、速度和可用性的看法。

關(guān)于 V-Ray 6.1 的詳細(xì)信息

V-Ray 6.1 還包括許多其他改進(jìn)。更多細(xì)節(jié)請(qǐng)閱讀這里。您可在這個(gè)文件查看完整的更新日志。

本文首發(fā)于 Chaos 官方技術(shù)博客,作者是 Emanuele Lecchi,譯者是 Hammer Chen

V-Ray 用戶接口 Qt 化的研發(fā)秘辛的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
黑河市| 古丈县| 辽宁省| 孟村| 聊城市| 湖州市| 明水县| 梁河县| 邓州市| 萨嘎县| 平利县| 乌审旗| 枣强县| 宁河县| 大厂| 石城县| 宁德市| 青岛市| 政和县| 杨浦区| 武宣县| 双辽市| 昌平区| 理塘县| 晋宁县| 澄迈县| 双柏县| 祁东县| 太康县| 长葛市| 万安县| 万年县| 民乐县| 沂南县| 定陶县| 通州市| 彩票| 察隅县| 静海县| 河曲县| 成武县|