Community Forum Supporto Utenti Supporto Illuminazione, nodi e rendering Problema di gestione progetto e telecamere

Stai visualizzando 13 post - dal 1 a 13 (di 13 totali)
  • Autore
    Post
  • #774510
    joaulo
    Partecipante
    @joaulo

    Buongiorno a tutti, vorrei chiedere il vostro parare in merito alla gestione di un progetto quando diventa troppo pesante e difficile da gestire.

    Mi spiego meglio con un esempio: la vostra scena è diventata molto pesante, al limite delle capacità del vostro PC e quando renderizzate tutte le risorse hardware sono spremute al 100% e se per caso il carico di sistema ha un picco Blender si chiude.

    Immaginate che in questa situazione nel vostro progetto ci siano diverse telecamere che inquadrano punti differenti della scena e vogliate saltare agilmente da una all’altra nella 3D view in modalità render (Eevee) e lanciare dei test render di quando in quando.

    Per il momento ho risolto “spegnendo” tutte le collezioni di asset non inquadrati dalla telecamera che voglio renderizzare, così facendo il carico scende e riesco ad ottenere il render. Tuttavia poi devo passare alla telecamera successiva e devo riattivare le collezioni disattivate e quindi disattivarne altre non inquadrate nella telecamera attuale… e così via un numero incalcolabile di volte per tutte le sessioni di lavoro.

    Dato che Blender è utilizzato in ambito professionale  e per progetti ben più complessi del mio, sono propenso a credere che ci sia una soluzione migliore e più performante per passare da una telecamera ad un’altra attivando e disattivando gruppi predefiniti di asset.

    Le strade che abbiamo percorso finora sono le seguenti:

    1. inizialmente abbiamo predisposto tutti gli asset in file separati, ogni asset in una collezione. Abbiamo composto la scena finale importando tutti gli asset come link esterni. In questo modo la scena caricata è di per se molto leggera ed il file risulta di dimensioni contenute. Tuttavia al momento del render il carico di sistema è quello effettivo (cioè troppo) ed abbiamo il problema delle continue modifiche e ritocchi agli asset… essendo link esterni non possono essere ritoccati nella scena e devono essere modificati nel loro file di origine e ricaricati. Questo ci ha portato al punto successivo.
    2. abbiamo ricreato la scena da capo utilizzando “append” invece di “link” per importare tutti gli asset. Il file e la scena sono diventati pesantissimi, ma almeno possiamo editare tutto in loco. E questa è la situazione attuale.

    Da qui in poi siamo alla ricerca di come migliorare. Il primo passo sarà sicuramente rivedere ed ottimizzare tutti gli asset e le texture. Ma l’abbiamo già fatto 2 volte e non c’è più molto da ottimizzare, non senza sacrificare la qualità finale.

    L’approccio indicato in apertura di questo post sembra funzionare ma è davvero molto poco pratico e causa di facili errori.

    Ho iniziato ad indagare il tema delle Scene. Finora abbiamo racchiuso tutto in una sola scena, tuttavia ho visto un video molto interessante che almeno inizialmente sembrava essere la soluzione a tutti i nostri problemi:

    A quanto ho capito è possibile generare più scene, condividendo gli asset tra le scene, gestendo il rendering indipendentemente per ogni scena. Tuttavia da qualche prova che ho fatto ho visto che:

    • se genero una nuova scena come copia link, non posso accendere/spegnere le singole collezioni
    • se genero una scena nuova e poi collego le istanze di oggetti e collezioni dalla scena madre perdo tutta l’organizzazione a livelli nell’outliner
    • nelle nuove scene non ho il bake delle luci già calcolato, mentre è calcolato nella scena madre, quindi se dovessi fare una scena per ogni telecamera dovrei calcolare il bake per ogni scena?

    E per ora questo è tutto e siamo arenati qui.

    Sarei curioso di sapere come vengono gestite normalmente queste situazioni in progetti complessi, sono aperto a suggerimenti!

    Grazie a tutti

     

    #776246
    Dave
    Membro
    @3ddave79

    A me è capitata una cosa simile ed ho risolto utilizzando nella timeline i marker per inquadrare una determinata telecamera e contestualmente i keyframe nella medesima posizione per attivare/disattivare la visibilità del render di ogni singolo oggetto nella scena… è un lavoro laborioso ma che fatto una volta, poi ti permette di ritrovare gli oggetti di interesse per ogni singola inquadratura semplicemente spostandoti nel frame desiderato della timeline. Nel mio caso la scena era fissa e dovevo inquadrare l’oggetto da diverse posizioni… nel caso di animazioni comunque credo sia la stessa cosa.

    Non sono certamente un esperto e non so se ci sono sistemi migliori…

    #776298
    joaulo
    Partecipante
    @joaulo

    Sì, ho visto utilizzare lo stesso metodo e potrebbe anche fare al caso mio, ma andrebbe bene solo a giochi fatti, con la certezza di cosa devo renderizzare e quando…

    Mi spiego meglio: nel mio progetto devo inquadrare la scena con diverse telecamere (circa 9) e ognuna è animata indipendentemente dalle altre. Ogni cam mi deve generare una clip video di lunghezza differente, alcune da 400frame, altre 600 fino l’ultima da 3600 frames. Il problema è che la scena è composta da migliaia di oggetti ed è molto pesante, ai limiti dell’hardware che sto utilizzando, quindi renderizzare “costa parecchio tempo“.

    Con questa premessa se penso di posizionare ovunque (ammesso sia possibile con diverse telecamere che riprendono la stessa sequenza temporale) keyframes per accendere/spegnere la visibilità di oggetti nel render, il rischio enorme è che ad un certo punto potrei dover spostare o riposizionare un oggetto o modificare leggermente il movimento della telecamera. Piccole correzioni e sistemazioni che sto facendo per finalizzare la scena prima della renderizzazione finale. Il problema è che in questo caso mi troverei poi a dover “inseguire” e correggere tutti i keyframes… potrebbe funzionare ma a sensazione mi sembra ad alto rischio complicazioni.

    Sebbene non abbia ancora trovato “la giusta via” per gestire un progetto complesso, per il momento ho provveduto a semplificarmi la vita creando 2 script:

    • render collection cameras
    • scene collection manager

    Il primo script cerca tutte le telecamere presenti nella collezione selezionata ed avvia in sequenza il render su ogni telecamera rilevata. Ho fatto in modo di salvare le impostazioni correnti di rendering e di poterle ricaricare. Quindi idealmente il mio flusso di lavoro è stato di creare delle “collezioni di telecamere” dividendole per impostazioni di rendering, quindi ho salvato i vari setup ed ora posso lanciare i render tramite script prima di andare a dormire per trovare tutto fatto alla mattina. Questo script e questo approccio mi aiutano ad esempio nei test massivi dove devo previsualizzare il risultato delle modifiche e mi servono i render di tutte le telecamere a scapito della customizzazione di ognuna.

     

    Il secondo script mi permette di salvare l’elenco delle collezioni attive/disattivate nella scena e di ricaricare la configurazione salvata in qualsiasi momento. In questo modo posso lanciare un render ad alta qualità su una telecamera, magari disattivando le collezioni non inquadrate riducendo di molto il carico di sistema (come dicevo sono impiccato). Dovendo continuamente renderizzare telecamere differenti questo script mi riduce il lavoro manuale di dover attivare o disattivare le collezioni manualmente ad ogni cambio telecamera, con il rischio di perdermi i pezzi e renderizzare sbagliato (ulteriore perdita di tempo).

     

    Mettendo insieme questi due script/approcci sono riuscito in qualche modo a trovare un flusso di lavoro efficace. Il presupposto è in ogni caso una buona organizzazione della scena in collezioni (anche nidificate).

    Confesso che per essere i primi script che scrivo non mi aspettavo di riuscire a farli funzionare così bene (anche se la scrittura ha richiesto che andassi più volte sul tetto a gridare come Saruman quando ha fatto crollare la montagna con la sua empia voce nell’aria). Sto meditando seriamente di fonderli in un “render manager” o qualcosa del genere…

    Mi ha fatto piacere la tua risposta, purtroppo non ho avuto modo di sviluppare un confronto su questo argomento finora e ho ancora moltissimi dubbi… speravo di trovare l’occasione di confrontarmi con qualcuno alla BIC2020, ma grazie al COVID19 tutti i miei progetti per questo anno stanno andando in fumo. Suppongo ci saranno altre occasioni, in ogni caso questo thread è sempre aperto e chissà che col tempo saltino fuori altri spunti interessanti!

     

     

     

    #776441
    3dclubber
    Membro
    @3dclubber

    ciao! anche io mi trovo in una situazione simile, ma purtroppo non ho ancora trovato soluzioni.

    mi occupo principalmente di scene di interni, e ad esempio in una stanza inserisco 2/3 telecamere, e mi capita che la vista della camera 2 sia ostruita da un oggetto. Mi piacerebbe poter spegnere un oggetto solo per quella telecamera, e fare in modo che il programma se lo ricordi così da non dover spegnere/accendere manualmente l’oggetto ogni volta che cambio telecamera.

    Ho provato a duplicare la scena, con linked copy, ma se disabilito un oggetto me lo spegne in entrambe le scene.

    in sketchup utilizzavo le scene, e il programma salvava i layer accesi e quelli spenti, se ci fosse un opzione simile sarebbe la soluzione ai nostri problemi

    #776447
    joaulo
    Partecipante
    @joaulo

    @3dclubber è esattamente la mia situazione, ma nel mio caso devo accendere e spegnere decine di collezioni… non sostenibile, per cui ho fatto lo script.

    In teoria la strada della scena “linked” dovrebbe essere percorribile, strano che non ti funzioni… la visibilità di un oggetto o di una collezione dovrebbero essere settabili indipendentemente da una scena ad un’altra… infatti inizialmente pensavo di fare così. Poi ho rinunciato perché mi troverei con 9 scene da gestire e ognuna con i sui settaggi di render da sistemare indipendentemente…. troppo complicato per me.

    #776469
    Harvester
    Moderatore
    @harvesterAssociato

    Puoi usare il Camera Clip Start per rimuovere l’oggetto in primo piano. E’ una cosa che puoi fare per ogni singola camera. Inoltre, nelle impostazioni di rendering dovrebbe essere possibile eliminare gli oggetti al di fuori del frustrum della camera usando la funzione Simplify | Culling. Fai qualche prova.

    #776470
    joaulo
    Partecipante
    @joaulo

    Perbacco usare il clip start per togliere elementi in primo piano è tanto semplice quanto geniale! In effetti non ci avevo pensato… ma non mi stupisco, non è la prima volta che mi perdo a cercare soluzioni complesse mentre quelle semplici sono davanti al naso e non le vedo 😉

    dovrebbe essere possibile eliminare gli oggetti al di fuori del frustrum della camera usando la funzione Simplify | Culling

    …questa è la prima volta che la sento. Ma suona molto interessante, indago subito.

    Grazie mille per i consigli @Harvester

    #776476
    3dclubber
    Membro
    @3dclubber

    Ho riprovato per sicurezza, faccio linked copy, se agisco sulla scene collection di una scena ritrovo l’oggetto “disattivato” anche nell’altra (ho provando a spegnere l’oggetto o una collezione contenente l’oggetto).

    grazie per l’aiuto

    #776477
    3dclubber
    Membro
    @3dclubber

    Fantastico grazie! Ottima soluzione e semplice da attuare

    #776497
    joaulo
    Partecipante
    @joaulo

    @3dclubber il mio PC sta renderizzando come un disperato da 30 ore… non oso fare nulla per non rischiare di buttare via tutto visto quanto è impiccato, ma in nottata dovrebbe finire e se vuoi domani posso fare un a prova anche io sul discorso delle scene linkate… ti faccio sapere

    #776526
    joaulo
    Partecipante
    @joaulo

    @Harvester purtroppo sembra che la feature di Culling per il frustrum non sia disponibile in eevee… un vero peccato. Soprattutto perchè molto utilizzata in moti real time engine, spero sia in cantiere ma per ora non ho trovato informazioni in merito.


    @3dclubber
    ho fatto una prova semplice ma ha funzionato. Sono partito da una scena con 3 cubi e li ho spostati in una collezione dedicata:

    Poi ho creato una scena linked e ho “spento” la visibilità nell’outliner:

    Poi ho creato un’altra scena linked e ho disattivato l’intera collezione dei cubi:

    Sono tornato sulla scena di partenza e i cubi erano tutti visibili. Mi sembra che funzioni, era questo ciò che intendevi?

    #776809
    3dclubber
    Membro
    @3dclubber

    Intanto di ringrazio per la disponibilità e l’impegno.
    quello che hai fatto è esattamente quello che intendevo, però ho capito alla 3 scena che hai creato come risolvere.

    io “spegnevo” l’oggetto o collezione agendo sull’icona dell’occhio o della macchina fotografica (quelli a destra del nome). agendo sull’occhio è vero che nella seconda scena l’oggetto non è visibile nella viewport, ma facendo il render (f12) l’oggetto viene renderizzato.

    LA SOLUZIONE (quella da te usata nella terza scena)

    per “spegnere” l’oggetto nel render, devo DESELEZIONARE la spunta che si trova alla sinistra del nome della collezione (quindi ovviamente l’oggetto deve trovarsi in una collezione).

    Spero di essermi spiegato abbastanza bene, se servissero dei chiarimenti sono a disposizione.

    grazie grazie grazie

    ho iniziato a usare blender da solo un mese, ma posso affermare che il valore della community è altissimo.

     

    #776814
    joaulo
    Partecipante
    @joaulo

    @3dclubber sono felice tu abbia risolto. Una precisazione: io di solito utilizzo i filtri dell’outliner:

    e tengo sempre esposti “la freccetta“, “l’occhio” e “la macchina fotografica“, che rispettivamente rappresentano: la possibilità di selezionare l’oggetto, la visibilità nella 3d viewport e la visualizzazione nel render.

    Di fatto se il tuo scopo è solo non visualizzarlo nel render, dovrebbe essere sufficiente spegnere il simbolo della macchina fotografica. Ti confermo invece che se spegni solo l’occhio, nel render compare comunque.

     

Stai visualizzando 13 post - dal 1 a 13 (di 13 totali)
  • Devi essere connesso per rispondere a questo topic.