Librerie, Librerie
Abbiamo goduto di un forte rapporto con lui per la maggior parte di questo periodo e, soprattutto, abbiamo condiviso ricordi cari di ogni volta che la comparsa di una nuova tecnologia doveva farsi strada nelle mani degli utenti.
Uno di questi miglioramenti è stata l’adozione delle librerie Qt per le UI di Max. Iniziato con un lavoro nascosto all’interno di Max con la versione 2017, la comparsa delle prime interfacce utente Qt arriva nella versione 2018 ed è ancora in corso.
L’introduzione di Qt mira a soppiantare l’obsoleta libreria Win32 con un insieme di funzionalità moderne, velocità più elevate e capacità multipiattaforma.
La Qt-ficazione di V-Ray
In questo primo post di Chaos’ Innovation Lab, veniamo guidati attraverso il laborioso percorso che porta alla Qt-ficazione delle UI di V-Ray sotto Autodesk 3ds Max.
I test
Per dimostrare i punti esposti in tutto il post, farò riferimento ai risultati di miei test eseguiti qualche anno fa, che rimangono validi in ciò che mostrano, e ad alcuni che sono stati ritestati su hardware e software molto attuali.
Ho analizzato i tempi necessari per ridisegnare completamente l’UI di tre materiali chiave: V-Ray Material, ALSurface e FastSSS2, poiché sono centrali per molti flussi di lavoro e contengono molti controlli dell’interfaccia.
L’editor dei materiali è stato allargato alla massima altezza per garantire il disegno di tutti i controlli possibili e il rendering delle anteprime è stato disattivato.
I tempi sono stati presi 100 volte ed è poi stata fatta la media.
I risultati saranno menzionati quando pertinenti nel post.
Un passato dorato... che non c'è mai stato
In altre parole, eravamo proporzionalmente meno sensibili al problema rispetto a oggi.
Per mettere alla prova questa teoria, ho cercato di effettuare un benchmark con l’ultima versione di V-Ray 3.x (3.7), su Max 2015, poiché questa versione è completamente priva di Qt.
La velocità misurata è quindi quella dei controlli nativi Win32, più o meno nella loro forma migliore.
La classe VRayMtl ha impiegato 1,6159 secondi per essere ridisegnata.
VRayALSurfaceMtl ha impiegato 1,2955 secondi e VRayFastSSS2 ha impiegato circa lo stesso tempo, 1,2655 secondi.
Trascinare l’editor dei materiali o la finestra delle impostazioni di rendering in Max è dolorosamente lento, con il cursore del mouse che si sposta altrove mentre le finestre cercano disperatamente di raggiungerlo (e ci vuole quasi un secondo intero per farlo, sull’hardware potente attuale).

Questa è una testimonianza della lungimiranza degli sviluppatori di Autodesk, che hanno notato che le prestazioni stavano diventando inadeguate e hanno introdotto Qt in anticipo. Complimenti.
Dolori Crescenti
È in questo periodo che ho iniziato ad analizzare le prestazioni dei vari componenti dell’interfaccia utente Win32, scoprendo che potevano mostrare velocità di ridisegno irregolari.
Allo stesso modo, le finestre diventavano eccezionalmente lunghe da aprire, a volte impiegando manciate di secondi, e diventavano ancora più lente quando venivano spostate sul resto dell’interfaccia utente di Max.
I problemi erano dovuti alla traduzione automatica da parte di Max dei controlli Win32 in versioni Qt, un processo che su macchine multi-core con un clock boost inferiore per ogni core si trasformava in un problema che comprometteva il flusso di lavoro, mentre su CPU a core inferiore e clock più elevato era un semplice fastidio.
Era una situazione tutt’altro che ideale, ma non era opzionale: la compatibilità doveva essere mantenuta mentre avveniva la transizione a Qt.
Tuttavia, questo si ripercuoteva su tutti i controlli dell’interfaccia utente, causando gravi lag, rallentamenti intermittenti e una generale lentezza: dopo tutto, avevamo molti, moltissimi controlli in uso in tutte le nostre interfacce.

VRayMtl: 2,5436 s.
VRayALSurfaceMtl: 2,0685 s.
VRayFastSSS2: 1,9779 s.
Si può notare che il rallentamento è proporzionale e riguarda tutti allo stesso modo, circa il 63%.
Nel frattempo, sono apparse le prime finestre di dialogo native di Qt, ad esempio nel Physical Material di Autodesk, e sono state eccezionalmente veloci laddove Win32 era in ritardo: fino a dieci volte più veloci nel ridisegnare tipi di controllo specifici, come gli spinner o i menu a discesa.

Cambio di Paradigma
Ciò significa riscrivere ogni etichetta, riorganizzare ogni spinner, reimpostare i valori predefiniti per ogni elemento, mettere a punto i comportamenti dei vari controlli e così via. Idealmente, naturalmente, senza compromettere l’esperienza e l’efficienza dell’utente.
Il Giocoliere
I vari componenti Qt non avevano le stesse dimensioni dei vecchi componenti Win32, per cui l’allineamento era praticamente ovunque sballato.
Inoltre, l’approccio predefinito per i nuovi controlli era il posizionamento relativo, non assoluto; la politica predefinita per i controlli era il ridimensionamento automatico; i vari comportamenti erano nettamente diversi da quelli che ci si aspettava da loro come diretta continuazione della libreria Win32 (per esempio nei pulsanti dei materiali e delle mappe), e così via.
La litania di contrattempi che abbiamo affrontato ci ha fatto capire che l’integrazione doveva andare di pari passo con quella di Max stesso e la sua maturazione delle librerie Qt integrate.
Non avendo il lusso di avere tempo, abbiamo fatto ricorso a enormi quantità di lavoro manuale e minuzioso per far sì che le interfacce utente avessero un aspetto coerente e si comportassero in modo funzionale. Fortunatamente, molti layout dell’interfaccia utente in V-Ray sono stati generati automaticamente (ad esempio, l’interfaccia utente della maggior parte degli elementi di rendering, o il materiale VRayALSurface, o la texture VRayDirt) e condividono un codice comune, il che ha reso le cose un po’ più facili.
Tuttavia, quando abbiamo finito di realizzare le prime UI di prova, era evidente che la quantità di lavoro necessaria per completare la transizione a Qt in modo tempestivo era enorme.
Tutti a bordo!
L’enorme numero di controlli dell’interfaccia utente in tutte le finestre di dialogo di V-Ray ha fatto sì che il lavoro richiedesse ancora molti giorni di impegno da parte di tutto il team, e questo a sua volta li ha messi a dura prova, poiché gli altri compiti non potevano essere lasciati in attesa.
È giusto dire che è stato un periodo intenso per gli sviluppatori di vMax, ma la qualità dei risultati ne è valsa la pena.
Stato di Avanzamento
I materiali, le mappe, i vari nodi, i modificatori e tutte le finestre ausiliarie che possono essere convertite in Qt sono state convertite.
Restano ancora da tradurre alcune parti minori che non si prestano (ad esempio,il vecchio light lister), e ci riserviamo ancora un po’ di tempo per raccogliere i feedback e le opinioni degli utenti sui nuovi layout e comportamenti dei controlli, in modo da completare al meglio la traduzione e massimizzare la qualità della vita degli utenti.
Rimangono alcune limitazioni comportamentali che dovranno essere curate, in parte da noi stessi e in parte come prodotto secondario della maturazione dell’integrazione delle librerie Qt in Max stesso.
La transizione non è ancora del tutto completa, per cui ci si aspetta ancora un po’ di tempo per l’adattamento.
Ne è valsa la pena?
Il VRayMtl in Max 2023 e V-Ray 6.1 ora disegna in 0,4664 secondi (anche se ha guadagnato qualche controllo in più da ridisegnare dalla versione 3.7!), il VRayALSurfaceMtl impiega 0,3621 secondi e il VRayFastSSS2 solo 0,2857 secondi.
In tutti i casi, il ridisegno dei controlli avviene così velocemente che l’occhio non lo vede.
Allo stesso modo, il trascinamento della finestra è istantaneo e la finestra è incollata al cursore del mouse.

L’ultima parola, tuttavia, spetta a voi, i nostri utenti: prendetevi il tempo di provare l’ultimo aggiornamento di V-Ray 6 e fateci sapere come avete trovato il nuovo look, la velocità e l’usabilità delle interfacce utente Qt.
Altro su V-Ray 6.1
Qui puoi trovare il Post Originale a cura di Emanuele Lecchi. Tradotto da 3DWS
Lascia un commento