Qt-fication của V-Ray

Hotline: 0902405791
Qt-fication của V-Ray

Thư viện, Thư viện...

3D Studio Max là một gã khổng lồ cũ của ngành, gần 30 tuổi.

Chúng tôi đã tận hưởng mối quan hệ bền chặt với nó trong phần tốt nhất của giai đoạn đó và quan trọng nhất là chia sẻ những kỷ niệm trân trọng về mỗi lần sự xuất hiện của công nghệ mới cần thiết để đến tay người dùng.

Một trong những cải tiến như vậy là việc áp dụng các thư viện Qt cho giao diện người dùng Max, với công việc ẩn bên trong Max bắt đầu từ phiên bản 2017, giao diện người dùng Qt đầu tiên xuất hiện cho phiên bản 2018 và một số công việc vẫn đang tiếp tục.

Phần giới thiệu của Qt nhằm mục đích thay thế thư viện Win32 cũ kỹ bằng một bộ chức năng hiện đại, tốc độ cao hơn xuyên suốt và khả năng đa nền tảng.

 

Bài kiểm tra

Để chứng minh những điểm được đưa ra trong suốt bài đăng, tôi sẽ tham khảo những phát hiện của tôi về các thử nghiệm mà tôi đã thực hiện vài năm trước và vẫn còn hiệu lực trong những gì chúng hiển thị và một số đã được kiểm tra lại trên phần cứng và phần mềm rất hiện tại.

Tôi đã đánh giá thời gian cần thiết để vẽ lại giao diện người dùng hoàn chỉnh của ba tài liệu chính: V-Ray Material, ALSurface và FastSSS2, vì chúng là trung tâm của nhiều quy trình công việc và chứa nhiều điều khiển giao diện người dùng.

Trình chỉnh sửa vật liệu đã được kéo dài đến độ cao tối đa để đảm bảo tất cả các điều khiển có thể sẽ được vẽ và kết xuất các bản xem trước đã bị vô hiệu hóa.

Thời gian được thực hiện 100 lần, và trung bình.

Kết quả sẽ được đề cập đến nơi thích hợp trong bài đăng.

 

Một quá khứ mạ vàng... điều đó chưa bao giờ là

Những gì được cảm thấy là đầy đủ, hoặc thậm chí nhanh chóng, một thập kỷ trước được coi là như vậy bởi vì toàn bộ trải nghiệm, từ tốc độ của phần cứng, đến kỳ vọng của chúng tôi, đã cho phép nó.

Nói cách khác, chúng tôi ít nhạy cảm hơn với vấn đề này so với ngày nay.

Để đưa lý thuyết này vào thử nghiệm, tôi đã cố gắng điểm chuẩn với phiên bản cuối cùng của V-Ray 3.x (3.7), trên Max 2015, vì phiên bản này hoàn toàn không có Qt.

Do đó, tốc độ đo được là của Win32 Controls bản địa, ít nhiều có hình dạng tốt nhất từ trước đến nay.

Lớp VRayMtl mất 1.6159 giây để vẽ lại

VRayALSurfaceMtl mất 1.2955 giây và VRayFastSSS2 mất khoảng thời gian tương tự với 1.2655 giây.

Kéo Material Editor hoặc cửa sổ Render Settings xung quanh trong Max bị tụt hậu một cách đau đớn với con trỏ chuột ở nơi khác trong khi các cửa sổ vô vọng cố gắng bắt kịp nó (và mất gần một giây để làm như vậy, trên phần cứng hiện tại hàng đầu.)

 

Qtif_gif.gif

Chụp cửa sổ cài đặt kết xuất trong V-Ray 3.7 trong Max 2015. Chú ý con trỏ đang chờ cửa sổ đính vào nó.

 

Đây là một minh chứng cho tầm nhìn xa của các nhà phát triển Autodesk, nhận thấy hiệu suất đang trở nên không đầy đủ và giới thiệu Qt sớm.

Kudos.

 

Những cơn đau ngày càng tăng

Trong khi Qt-fication của Max đang diễn ra, về phiên bản Max 2018, chúng tôi bắt đầu nhận được báo cáo về sự chậm lại của giao diện người dùng, một số trong số đó đủ lớn để không chỉ đơn giản là do máy trạm mệt mỏi của người dùng.

Vào khoảng thời gian này, tôi đã tiếp tục đo điểm chuẩn hiệu suất của các thành phần giao diện người dùng Win32 khác nhau, để thấy rằng chúng có thể hiển thị tốc độ vẽ lại thất thường.

Tương tự như vậy, các cửa sổ trở nên đặc biệt dài để mở, đôi khi chỉ mất vài giây và thậm chí còn bị lag hơn khi di chuyển xung quanh phần còn lại của giao diện người dùng của Max.

Các vấn đề là do Max dịch tự động các điều khiển Win32 sang các phiên bản Qt, một quá trình mà trên các máy nhiều lõi có tốc độ tăng xung nhịp trên mỗi lõi thấp hơn, sẽ biến thành một vấn đề làm suy giảm quy trình làm việc, từ sự phiền toái đơn thuần là trên các CPU lõi thấp hơn, xung nhịp cao hơn.

Nó không phải là lý tưởng, nhưng nó không phải là tùy chọn: khả năng tương thích cần được duy trì trong khi quá trình chuyển đổi sang Qt xảy ra.

Tuy nhiên, điều này đã ảnh hưởng đến mọi điều khiển giao diện người dùng, dẫn đến độ trễ nghiêm trọng, chậm không liên tục và sự chậm chạp chung: xét cho cùng, chúng tôi đã sử dụng rất, rất nhiều trong số các điều khiển đó trong tất cả các giao diện người dùng của mình.

 

Qt_img1.png

Biểu đồ ví dụ cho thấy bản chất lộn xộn của sự chậm lại. Trục tung đạt tới hàng nghìn mili giây.

 

Để định lượng sự sụt giảm, đây là kết quả thử nghiệm cùng một phiên bản V-Ray (3.7) với Max 2018:

  • VRayMtl: 2.5436 giây.
  • VRayALSurfaceMtl: 2.0685 giây.
  • VRayFastSSS2: 1.9779 giây.

 

Có thể nhận thấy rằng sự chậm lại là tỷ lệ thuận và ảnh hưởng đến tất cả như nhau, khoảng 63%.

Trong khi đó, các hộp thoại Qt gốc đầu tiên xuất hiện, ví dụ như trong Tài liệu vật lý Autodesk và chúng đặc biệt nhanh chóng khi Win32 bị tụt hậu: nhanh hơn gấp mười lần khi vẽ lại các loại điều khiển cụ thể, như con quay hoặc menu thả xuống.

 

Qt_img2.png

Biểu đồ ví dụ hiển thị tốc độ so sánh của các điều khiển Qt. Trục dọc đạt hàng trăm mili giây.

 

Người đọc chu đáo sẽ nhận thấy mỗi lần chạy trở nên chậm hơn và chậm hơn.

Đó là một vấn đề khác với phiên bản Max cụ thể đó: một vấn đề khiến sự khốn khổ của chúng tôi trở nên tồi tệ trong những hoàn cảnh cụ thể (ví dụ như trong các phiên lookdev dài), trong khi nó không làm gì để làm chậm Qt một cách rõ rệt.

Rõ ràng là chúng tôi cũng cần phải chuyển sang Qt bản địa, bởi vì lợi ích đơn giản là quá lớn để bỏ qua, và trong mọi trường hợp, ngôi nhà cũ của chúng tôi đã bốc cháy.

 

Thay đổi mô hình

Viết giao diện người dùng theo cách tiếp cận gốc của Qt không đơn giản: hầu như không có sự phù hợp giữa các cách tiếp cận, phương pháp và điều khiển với Win32 cũ, vì vậy mã UI phải được xây dựng lại từ đầu.

Điều này có nghĩa là nhập lại mọi nhãn, phân loại lại mọi con quay, đặt lại mặc định cho mọi mục, điều chỉnh hành vi cho các điều khiển khác nhau, v.v. Lý tưởng nhất, tất nhiên, không làm giảm trải nghiệm và hiệu quả của người dùng.

 

Sự loay hoay

Thật công bằng khi nói rằng chúng tôi đã không ổn ngay lần đầu tiên: một số hành vi bất ngờ và thường không chính đáng, đã bị cắt xén khi các nhà phát triển bắt đầu làm việc trên giao diện người dùng và trong một thời gian cũng không thể khắc phục được.

Các thành phần Qt khác nhau sẽ không có cùng kích thước với các thành phần Win32 cũ, vì vậy sự liên kết đã bị loại bỏ khá nhiều ở khắp mọi nơi.

Hơn nữa, cách tiếp cận mặc định cho các điều khiển mới là định vị tương đối, không phải tuyệt đối; chính sách mặc định cho các tùy chọn kiểm soát là tự động thay đổi quy mô; các hành vi khác nhau khác biệt rõ rệt so với những gì được mong đợi từ chúng như là sự tiếp nối trực tiếp của thư viện Win32 (ví dụ như trong các nút tài liệu và bản đồ.), v.v.

Sự kiện rủi ro mà chúng tôi phải đối mặt cho thấy rõ ràng sự tích hợp phải đi đôi với chính Max và sự trưởng thành của các thư viện Qt tích hợp.

Không có nhiều thời gian, chúng tôi đã dùng đến một lượng lớn lao động siêng năng, thủ công, vất vả để giao diện người dùng trông mạch lạc và hoạt động theo chức năng. May mắn thay, nhiều bố cục giao diện người dùng trong V-Ray đã được tạo tự động (ví dụ: giao diện người dùng của hầu hết các phần tử kết xuất hoặc vật liệu VRayALSurface hoặc kết cấu VRayDirt) và chia sẻ mã chung và điều này làm cho mọi thứ dễ dàng hơn một chút.

Tuy nhiên, vào thời điểm chúng tôi hoàn thành giao diện người dùng bằng chứng khái niệm đầu tiên, rõ ràng khối lượng công việc cần thiết để hoàn thành quá trình chuyển đổi sang Qt một cách kịp thời là rất lớn.

 

Tất cả các tay trên boong!

Nỗ lực cần thiết đã được đáp ứng trực tiếp để đảm bảo chúng tôi có thể cung cấp bước chuyển đổi tạm thời đầu tiên kịp thời cho việc phát hành Bản cập nhật 1, với toàn bộ nhóm vMax (các nhà phát triển làm việc trên V-Ray cho 3D Studio Max) đã đăng ký làm việc trên Qt-fication.

Số lượng điều khiển giao diện người dùng tuyệt đối trên mọi hộp thoại V-Ray có nghĩa là công việc vẫn đòi hỏi nhiều ngày cống hiến từ cả nhóm và điều này đến lượt nó gây căng thẳng cho họ, vì các nhiệm vụ khác không thể bị bỏ lại chờ đợi.

Thật công bằng khi nói rằng đó là một giai đoạn căng thẳng đối với các nhà phát triển vMax, nhưng chất lượng của kết quả khiến tất cả đều xứng đáng.

 

Kể từ V-Ray 6.0 Update 1 (hoặc 6.1), quá trình chuyển đổi sang thư viện Qt về cơ bản đã hoàn tất.

Vật liệu, Bản đồ, các Nút, Công cụ sửa đổi khác nhau và mọi cửa sổ phụ trợ có thể được chuyển sang Qt đã được chuyển đổi.

Một vài phần nhỏ vẫn còn lại để được dịch vì chúng không cho vay nó (ví dụ. Danh sách ánh sáng lão hóa.) và chúng tôi dành thêm thời gian để thu thập phản hồi và ý kiến của người dùng về bố cục và hành vi của các điều khiển mới, để hoàn thành bản dịch tốt hơn và tối đa hóa chất lượng cuộc sống của người dùng.

Vẫn còn một số hạn chế về hành vi sẽ cần được quan tâm, một phần bởi chính chúng ta, và một phần là sản phẩm phụ của sự trưởng thành của việc tích hợp các thư viện Qt vào chính Max.

Quá trình chuyển đổi vẫn chưa hoàn tất, vì vậy vui lòng mong đợi thêm một số thời gian thích ứng.

 

Nó có đáng không?

Tuy nhiên, chúng tôi cảm thấy được minh chứng khi nỗ lực vào nỗ lực này, và khá sảng khoái bởi những con số mà chúng tôi lấp lánh:

VRayMtl theo Max 2023 và V-Ray 6.1 hiện có thời lượng 0.4664 giây (ngay cả khi nó có thêm một vài điều khiển để vẽ lại kể từ v. 3.7!), VRayALSurfaceMtl mất 0.3621 giây và VRayFastSSS2 chỉ 0.2857 giây.

Trong mọi trường hợp, việc vẽ lại các điều khiển xảy ra quá nhanh đến mức mắt không thể nhìn thấy nó.

Tương tự như vậy, kéo cửa sổ là tức thời, cửa sổ dán vào con trỏ chuột.

 

Qt_gif_final.gif

Chụp cửa sổ cài đặt kết xuất như hiện tại. Chú ý bố cục mới.

 

Điều này có nghĩa là giao diện người dùng Qt hiện tại nhanh hơn từ ba đến bốn lần so với Win32 gốc từng có và nhanh hơn tới bảy lần so với Win32 đã dịch.

Tuy nhiên, lời cuối cùng phải đến từ bạn, người dùng của chúng tôi: vui lòng dành thời gian để dùng thử bản cập nhật V-Ray 6 mới nhất và cho chúng tôi biết cách bạn tìm thấy giao diện, tốc độ và khả năng sử dụng mới của giao diện người dùng Qt.