Regolazione dei parametri dell'immagine 3DGS
Questo documento è diviso in tre parti: i parametri comuni valgono su entrambe le pipeline, seguiti dai parametri specifici di ciascuna pipeline. I parametri specifici di una pipeline non vengono mostrati nel pannello Details dell'altra pipeline.
Parametri comuni
Render Mode
3D Gaussian Splatting (predefinito)
Renderizza come ellissi gaussiane 2D con colore e trasparenza completi.
LCCComponent->SetRenderMode(ERenderMode::Splatting);
Nuvola di punti
Renderizza ogni splat come singolo punto colorato, adatto a viste d'insieme o a scene con vincoli di prestazione.
LCCComponent->SetRenderMode(ERenderMode::PointCloud);

Passaggio tra le modalità di rendering 3DGS e nuvola di punti
La modalità nuvola di punti supporta la colorazione per quota:
ElevationColorBottom— colore alla quota più bassaElevationColorTop— colore alla quota più alta

Colorazione per quota in modalità nuvola di punti
Load Mode
I dati sono divisi in una parte principale e una parte di ambiente, e LoadMode controlla quale parte venga renderizzata:
| Modalità | Descrizione |
|---|---|
| Both | Renderizza la parte principale e l'ambiente (predefinito) |
| OnlyMain | Renderizza solo la parte principale |
| OnlyEnvironment | Renderizza solo l'ambiente |
| None | Non renderizza nulla, i dati restano caricati |

Cambiare con LoadMode l'ambito di rendering della parte principale e dell'ambiente
Nota:
Noneinterrompe soltanto il rendering, e i dati continuano a occupare memoria video. ChiamareUnLoad()per rilasciare le risorse.
Light Mode
Unlit (predefinito)
Usa solo il colore delle gaussiane stesse, senza interazione con le luci della scena.
Lit
Abilita l'illuminazione deferred, così la scena 3DGS può essere influenzata da luci direzionali, luci puntiformi e altre. Richiede informazioni di profondità e normali.
LCCComponent->SetLightMode(ELightMode::Lit);

Passaggio tra le modalità di illuminazione Unlit e Lit
Mip Filter
Quando è abilitato, applica un filtro passa-basso 2D insieme alla compensazione dell'opacità per ridurre lo sfarfallio a scale diverse.
Il valore predefinito dipende dal formato dei dati:
| Formato | Predefinito |
|---|---|
.lcc2 / .lcc | Abilitato |
.ply / .spz / .sog | Disabilitato |
I formati a file singolo lo disabilitano per impostazione predefinita per conservare l'aspetto nitido originale dei dati. Abilitarlo manualmente quando compare sfarfallio:
LCCComponent->SetUseMipFilter(true);
Armoniche sferiche (SH)
Forniscono variazioni di colore in base alla vista e migliorano la fedeltà dell'illuminazione.
LCCComponent->SetUseShcoef(true);
Requisiti:
- La modalità di rendering è 3DGS
- I dati stessi contengono coefficienti di armoniche sferiche
Se i dati contengano coefficienti di armoniche sferiche dipende dal formato:
| Formato | Come viene determinato |
|---|---|
.lcc2 / .lcc | Determinato dal tipo di file dei dati: il tipo Quality contiene le armoniche sferiche, il tipo Portable no |
.ply / .spz / .sog | Nessun marcatore di tipo di file, quindi dipende dal fatto che i coefficienti delle armoniche sferiche siano stati effettivamente scritti nel file |
Quando i dati non contengono coefficienti di armoniche sferiche, questo interruttore è disabilitato nel pannello Details.
SplatScale
Controlla la dimensione di ogni quad dello splat, da 0.001 a 1.0.
Ridurlo diminuisce l'area su schermo coperta da un singolo splat, cosa che riduce la sovrapposizione semitrasparente e abbassa il costo di riempimento dei pixel. Ridurlo troppo fa comparire buchi sulle superfici o le fa sembrare visibilmente rarefatte. È anche una delle opzioni di regolazione delle prestazioni; vedere Guida alle prestazioni.
LCCComponent->SetSplatScale(1.0f);

Impostare la dimensione degli splat e l'alpha globale del 3DGS
Global Alpha
Ogni modalità di rendering ha la propria proprietà di alpha globale, entrambe da 0.0 a 1.0:
| Proprietà | Si applica a |
|---|---|
| GlobalAlpha | 3DGS |
| GlobalAlpha_PointCloud | Nuvola di punti |
LCCComponent->SetGlobalAlpha(1.0f);
LCCComponent->SetGlobalAlpha_PointCloud(1.0f);

Impostare l'alpha globale della modalità nuvola di punti
Regolazione del colore

Configurare i parametri LCC di saturazione, contrasto e tinta
Le modifiche a runtime sono supportate:
| Proprietà | Intervallo | Descrizione |
|---|---|---|
| Saturation | 0.0~2.0 | Saturazione per canale |
| Contrast | 0.0~2.0 | Contrasto per canale |
| Gamma | 0.0~2.0 | Correzione gamma per canale |
| Offset | -1.0~1.0 | Offset additivo del colore |
| ColorTint | LinearColor | Tinta moltiplicativa |
LCCComponent->SetSaturation(FVector4(1.2, 1.2, 1.2, 1.0));
LCCComponent->SetColorTint(FLinearColor::White);

L'immagine dopo la regolazione dinamica dei parametri di colore
Anti-aliasing
Con bAffectAntiAliasingMethod abilitato, il plugin gestisce automaticamente il metodo di antialiasing:
| Configurazione | Metodo predefinito |
|---|---|
| LCC1 Splat | FXAA |
| LCC2 Splat | TSR |
| LCC1 Point Cloud | MSAA |
| LCC2 Point Cloud | TSR |
I valori predefiniti possono essere modificati in ProjectSettings > Plugins > LCC4Unreal.
Nota: il metodo di antialiasing è un'impostazione globale a livello di vista. Quando nella stessa scena esistono Actor sia della pipeline LCC sia della pipeline LCC2, ciascuno imposta il metodo di antialiasing in base alla propria configurazione, quindi quale abbia effetto dipende dall'ordine di esecuzione e il risultato non è determinato. In scene di questo tipo, configurare manualmente il metodo di antialiasing di entrambe le pipeline sullo stesso valore.

Configurare il metodo di antialiasing predefinito di ciascuna pipeline LCC
Post-elaborazione

Configurare le opzioni di post-elaborazione e tone mapping di LCC4Unreal
| Impostazione | Predefinito | Descrizione |
|---|---|---|
| Enable Post Process | Abilitato | Se i pixel LCC partecipino alla pipeline di post-elaborazione del motore |
| Apply Tonemap Inverse | Disabilitato | Applica FilmToneMapInverse durante la conversione dello spazio colore, così l'aspetto originale dei dati viene ripristinato dopo il tone mapping del motore |
Sono impostazioni globali sotto ProjectSettings > Plugins > LCC4Unreal > Rendering e si applicano a entrambe le pipeline. Tutti i component LCC di una scena condividono la stessa modalità, che non può essere impostata per singolo Actor.
Risultato della disattivazione di Enable Post Process
I due stati vengono elaborati in modo diverso:
| Stato | Elaborazione | Risultato |
|---|---|---|
| Abilitato | Applica InverseACES ai pixel LCC così che entrino nella pipeline di post-elaborazione del motore | Il 3DGS riceve tone mapping, Bloom, esposizione, color grading e le altre post-elaborazioni insieme agli oggetti ordinari della scena |
| Disabilitato | Salva un'istantanea prima del tone mapping e la ricompone nell'immagine per alpha al termine del tone mapping | Il 3DGS conserva i colori originali e non è influenzato dal tone mapping né da nessuna fase di post-elaborazione successiva |
Disattivarlo è adatto ai casi che richiedono una riproduzione rigorosa dei colori originali dei dati, come la verifica del colore o il confronto con un'immagine di riferimento. Il costo è che il 3DGS e gli oggetti ordinari della scena non appaiono più coerenti, e gli effetti complessivi di post-elaborazione come Bloom ed esposizione non si applicano alla parte 3DGS.
Nota: disattivare Enable Post Process richiede l'output del canale alpha nel motore, altrimenti il risultato della composizione è errato. Abilitare Alpha Output in ProjectSettings > Engine > Rendering (in UE 5.4 e precedenti corrisponde a «Enable alpha channel support in post processing», che va impostato su Linear color space only seguito da un riavvio dell'editor). Il plugin mostra un avviso quando rileva che questa opzione è disattivata.
Cosa fa Apply Tonemap Inverse
I colori dei dati 3DGS sono colori finiti che hanno già attraversato il tone mapping al momento dell'acquisizione. Far passare tali colori di nuovo attraverso il tone mapping del motore li comprime una seconda volta, cosa che si manifesta di solito come contrasto ridotto e alte luci grigiastre.
Con questa opzione abilitata, il plugin applica FilmToneMapInverse ai colori LCC durante la fase di conversione dello spazio colore per annullare il tone mapping del motore che segue, così l'immagine finale ripristina l'aspetto originale dei dati.
| Stato | Caso d'uso |
|---|---|
| Disabilitato (predefinito) | Il 3DGS e gli oggetti ordinari della scena condividono lo stesso tone mapping per un aspetto complessivo coerente |
| Abilitato | Il 3DGS deve mostrare i colori e il contrasto originali dei dati |
Questa opzione si applica a entrambe le pipeline e ha senso solo mentre Enable Post Process è abilitato: quando è disattivato, il 3DGS non partecipa più al tone mapping, quindi non c'è nulla da annullare.
Parametri specifici della pipeline LCC2
Depth Threshold
AlphaThreshold decide quale strato di profondità il 3DGS scriva nel depth buffer. Il 3DGS è composto da molti strati di splat semitrasparenti, e il plugin accumula l'opacità dal vicino al lontano. Quando il valore accumulato raggiunge questa soglia, la profondità corrente viene registrata come profondità rappresentativa di quel pixel.
| Voce | Valore |
|---|---|
| Intervallo | 0.01 ~ 0.99 |
| Predefinito | 0.5 |
Ridurlo sposta la profondità verso la camera, aumentarlo la sposta lontano dalla camera. Questa profondità partecipa all'illuminazione, ai test di occlusione e alla post-elaborazione dipendente dalla profondità, quindi la risposta delle superfici in modalità Lit e l'occlusione reciproca con le mesh ordinarie cambiano di conseguenza.
LCC2Component->AlphaThreshold = 0.5f;
Un caso tipico in cui ridurlo: i dati contengono strutture fini con opacità molto bassa, come ali di insetti o uccelli, reti a maglia o bordi di foglie. Gli splat in queste aree non raggiungono mai l'opacità accumulata predefinita di 0.5, quindi nessuna profondità viene scritta. Se la scena ha anche uno skybox, nebbia o un altro fondo non nero, queste aree vengono fuse con il colore di fondo perché prive di profondità, cosa che si manifesta come strutture sbiadite e dettaglio perduto. Ridurre la soglia permette a tali aree di scrivere la profondità prima e ripristina il dettaglio.
Ridurlo gradualmente e osservare. Un valore troppo basso avvicina l'intera profondità alla camera e influisce sulle relazioni di occlusione e sulla post-elaborazione dipendente dalla profondità.
Nota: questa proprietà si trova nell'area collassata Advanced del pannello Details, e il valore predefinito è adatto alla maggior parte delle scene.
Parametri specifici della pipeline LCC
Ricezione delle ombre
LCCComponent->bReceiveShadows = true;
Nota: richiede la modalità di rendering 3DGS. Abilitarla ha un impatto significativo sulle prestazioni.

Rendering 3DGS con la ricezione delle ombre abilitata
Taglio delle giunzioni
bEnableSeamCutting taglia le giunzioni che il rendering a blocchi produce ai confini dei nodi. La versione 5.0 e superiori dei dati LCC lo abilita automaticamente; abilitarlo manualmente quando compaiono giunzioni visibili nei dati di versioni precedenti.
LCCComponent->bEnableSeamCutting = true;
Nota: questa proprietà si trova nell'area collassata Advanced del pannello Details.
Ordinamento delle trasparenze tra più Actor
La pipeline LCC non produce profondità, quindi più LCC Actor non possono ottenere un'occlusione reciproca corretta attraverso il test di profondità e possono solo approssimarla tramite l'ordine di disegno delle trasparenze. bEnableMultipleLCCActorAutoSort (abilitato per impostazione predefinita) imposta automaticamente TranslucentSortPriority in base alla distanza di ogni Actor dalla camera, così gli Actor più vicini vengono disegnati dopo, cosa che nella maggior parte dei casi dà un risultato di sovrapposizione ragionevole.
Questo ordinamento agisce a granularità di Actor: ogni Actor partecipa come insieme e non viene suddiviso fino al livello degli splat. Ciò comporta limitazioni intrinseche:
- Quando i bounding box di due LCC Actor si intersecano o si compenetrano nello spazio, nessun ordine complessivo unico può esprimere la corretta relazione tra davanti e dietro, e l'occlusione nell'area di intersezione risulta errata
- Quando un singolo Actor si estende internamente su un ampio intervallo di profondità, l'ordinamento in base alla distanza dal centro dell'Actor può non corrispondere alla relazione reale tra davanti e dietro
Passare alla pipeline LCC2 quando più dataset 3DGS devono occludersi correttamente a vicenda. Disattivare questa opzione quando l'ordine di sovrapposizione deve essere specificato manualmente, e impostare invece TranslucentSortPriority su ciascun Actor.
La pipeline LCC2 non offre questa proprietà: i suoi dati vengono uniti in un unico Buffer, ordinati globalmente per splat, e producono profondità per partecipare ai test di occlusione, quindi non serve alcun intervento.