L'ideaPixi.js e ThreeJS per un avanzato web GUI
Hi! Io e un team di sviluppatori stiamo creando un'interfaccia grafica open-source per l'editing grafico interattivo.
Desidero che questa interfaccia gestisca una grande quantità di nodi connessi, consentendo all'utente di spostarli, ricollegarli, ingrandire/ridurre ecc. Ogni nodo può contenere testo, pulsanti, cursori e altri controlli. Inoltre vogliamo creare un'interfaccia grafica abbastanza avanzata e collegabile - ogni pannello sarebbe un plugin - puoi pensarlo come su eclipse basata sul web. Un pannello potrebbe essere un editor grafico, una timeline o una finestra 3D.
La domanda
vorrei chiederti, quale libreria ci darebbe più benefici - Pixi.js
, ThreeJS
o forse altro? Forse dovremmo mixarli - creando l'interfaccia in Pixi.js
e alcuni dei plug-in che richiedono il supporto 3D in ThreeJS
(non mi piace personalmente questa idea, a causa della "coerenza" inferiore).
Requisiti
Vogliamo tutto in esecuzione in WebGL. Una ragione è che vogliamo eseguire l'editor grafico nel modo più fluido possibile e considerando il fatto che l'editor grafico deve visualizzare gli stessi controlli di altre parti della GUI, è ragionevole farlo in una tecnologia.
Sto cercando una libreria, che mi avrebbe dato le migliori prestazioni e la flessibilità nella creazione di un progetto così grande, soprattutto se si considera:
- possibilità di creare elementi HUD personalizzati (slider, pulsanti, grafici, ecc)
- capacità di gestire grandi quantità di elementi - un caching/ridisegnare solo una parte necessaria è importante
- tela di riserva è importante, ma non fondamentale
L'elemento 2D deve sempre essere creato con tecnologie web comuni, puoi fare molte cose solo usando html5 e css3. Se vuoi che tutte le soluzioni di alto livello per le cose 3d vadano per Three.js, è una libreria adeguata e ti dà un facile accesso alla gpu. Non posso raccomandare Pixi.js poiché questo è solo per Slider con animazioni e materiale simile (animazioni personalizzate di alto livello in meno tempo ma anche con minori prestazioni). Ora puoi creare un livello sopra il tuo ciclo di rendering per mostrare la tua "GUI 2D" o metterlo tutto nel ciclo di rendering (questa causa è più lenta dal momento che devi renderli al secondo) – Silom
@Silom Capisco perfettamente che hmtl5 e css sono la soluzione definitiva, ma se si vuole creare un grafico di nodo ad alte prestazioni con zoom in/out e alcuni effetti di fantasia, che potrebbero gestire migliaia di nodi, penso che prestazioni molto migliori potremmo ottenere usando canvas/webgl, destra? Per questo pensiamo a questa soluzione. Grazie per la raccomandazione, ha perfettamente senso. Se hai altri suggerimenti mi piacerebbe ascoltarli! –
Per lo zoom in avanti e indietro puoi usare il tag svg, la grafica basata su vettori è fatta solo per queste cose. E puoi usare una tela per interagire con i tuoi grafici. La risposta di Entity Black è ciò che volevo dirti, ero solo limitato nei personaggi. Hai più opzioni con Pixi e Three.js, ma anche più limitazioni, dal momento che entrambi sono basati su un ciclo di rendering personalizzato (che in realtà è facile far saltare in aria le spese generali). – Silom