Fornire normali reali al 3DGS con una mesh proxy
Panoramica
ProxyMesh è una funzionalità dell'edizione Pro di LCC4Unreal. Fornisce informazioni reali di profondità e normali attraverso una mesh proxy posizionata nella scena ed è l'unica modalità normali con vero shading della forma. Si applica a ogni formato della pipeline LCC2 (.lcc2 / .sog / .spz / .ply). Per le licenze, vedere Edizioni e licenze.
Nota: ProxyMesh richiede una licenza valida. Senza licenza ripiega automaticamente sulla modalità Fixed.
Che cos'è una mesh proxy
I dati 3DGS non hanno normali di superficie proprie e non scrivono nulla nel GBuffer, quindi non possono partecipare ai calcoli di illuminazione normali. Il compito della mesh proxy è fornire una geometria la cui forma corrisponda al 3DGS. Il plugin ne prende profondità, normali e proprietà del materiale nel GBuffer e le passa all'illuminazione e alla post-elaborazione del motore; la mesh stessa non compare mai nell'immagine finale.
Dati 3DGS Mesh proxy
(colore, opacità) (profondità, normali, proprietà del materiale)
│ │
│ ▼
│ Scritte nel GBuffer
│ │
│ ┌───────────────┴───────────────┐
│ ▼ ▼
│ Illuminazione del motore Post-elaborazione che
│ (direzionale, puntiforme, dipende dal GBuffer
│ ombre) (riflessione, rifrazione, ecc.)
│ │ │
│ └───────────────┬───────────────┘
▼ ▼
Sorgente del colore ─────────▶ Composizione dell'immagine finale
│
▼
La mesh proxy stessa è invisibile
In altre parole: il colore nell'immagine viene dal 3DGS, e la risposta all'illuminazione viene dalla mesh proxy.
L'origine della mesh non è vincolata. Il plugin legge solo il suo risultato di rendering e non si cura di come sia stata prodotta. Origini comuni:
| Origine | Descrizione |
|---|---|
| Mesh approssimata generata insieme al 3DGS | Mesh prodotta dal flusso di acquisizione; la corrispondenza di forma più stretta e la prima scelta |
| Mesh convertita dal 3DGS | Mesh ricostruita dal 3DGS con uno strumento di terze parti |
| Mesh creata a mano | Modellata sulla forma del 3DGS in un software DCC, adatta a scene che richiedono un controllo preciso |
| Assemblata da forme primitive | Volumi approssimati costruiti con Cube, Plane e altre mesh di base, adatti a forme regolari come edifici e terreno |
L'unico requisito è che la mesh corrisponda spazialmente alla forma del 3DGS. Più stretta è la corrispondenza, più realistica è l'illuminazione. Quando lo scostamento è troppo grande, la direzione dell'illuminazione non corrisponde più alla forma visibile nell'immagine.
La mesh non richiede alta precisione: una geometria low-poly semplificata è sufficiente purché volumi e orientamento siano corretti.
Cosa fa il materiale
Le proprietà del materiale della mesh proxy vengono lette insieme al GBuffer, quindi decidono come la superficie del 3DGS risponde all'illuminazione.
Per la sola illuminazione di base è sufficiente un materiale whitebox, senza texture. Per gli effetti che dipendono dalle proprietà del materiale, usare il materiale PBR corrispondente nella posizione corrispondente sulla mesh, per esempio:
- Riflessione e rifrazione dell'acqua: usare un materiale acqua con valori adeguati di metallicità e ruvidità nell'area dell'acqua
- Riflessi metallici: assegnare valori di Metallic e Roughness adeguati alle strutture metalliche
- Superfici ruvide: usare un valore alto di Roughness per sopprimere i riflessi che non devono comparire
Quando le proprietà del materiale non corrispondono alla forma reale, il risultato dell'illuminazione non corrisponde all'aspetto del 3DGS nell'immagine, per esempio riflessi speculari su un muro che dovrebbe essere ruvido.
Configurazione rapida
Passo 1: posizionare l'Actor ProxyMesh
- Aggiungere un Actor
ALCC2ProxyMeshdal pannello del plugin LCC4Unreal nell'editor - Assegnare una StaticMesh al suo
StaticMeshComponent(di qualsiasi origine, vedere la sezione precedente) - Regolare la posizione della ProxyMesh in modo che si sovrapponga spazialmente al contenuto 3DGS

Posizionamento di un Actor ALCC2ProxyMesh nella scena
Passo 2: abilitare la modalità ProxyMesh
- Selezionare l'Actor della pipeline LCC2 (
ALCC2Actor/ASogActor/ASpzActor/APlyActor) - Trovare LightMode nel pannello Details e cambiarlo in Lit
- Trovare la categoria Lighting di LCC2Component nel pannello Details
- Impostare
NormalModesuProxyMesh

Abilitazione di Lit e impostazione di NormalMode su ProxyMesh
Passo 3: verificare
- Cambiare la direzione dell'illuminazione della scena e osservare se il 3DGS produce auto-ombreggiatura
- Verificare che la mesh proxy sia nascosta nell'immagine finale

Risultato dell'illuminazione dopo che ProxyMesh fornisce normali reali
Esempio di uso di ProxyMesh

Il processo di configurazione di ProxyMesh e il risultato dell'illuminazione
ALCC2ProxyMesh
L'Actor proxy, abbinato agli Actor della pipeline LCC2 quando NormalMode = ProxyMesh.
Proprietà
| Proprietà | Descrizione |
|---|---|
| StaticMeshComponent | La mesh statica che fornisce profondità e normali della scena |
Transform predefinita
- Scale (100, 100, 100): l'unità della mesh è il metro per impostazione predefinita, mentre UE usa i centimetri
- Rotation (0, 180, 0): compensa il fatto che la pipeline di generazione della mesh ha l'asse frontale opposto a quello di UE
Comportamento
- Abilita automaticamente il rendering CustomDepth quando la StaticMesh è valida
- Registra un avviso e disabilita CustomDepth quando la StaticMesh è vuota
Controllo della licenza
La modalità ProxyMesh richiede una licenza dell'edizione Pro, vedere Edizioni e licenze. Senza licenza ripiega automaticamente sulla modalità Fixed, e il valore memorizzato della proprietà non viene modificato.
Cambio a runtime
NormalMode può essere modificato a runtime da Blueprint o C++ e ha effetto dal fotogramma successivo.
Uso con Blueprint
Creare una ProxyMesh
SpawnActor->Class: ALCC2ProxyMesh
→ Set the StaticMesh of StaticMeshComponent
→ Adjust the position to align with the 3DGS content
Cambiare modalità
LCC2Component->NormalMode = ProxyMesh
Buone pratiche
- Copertura della mesh: assicurarsi che la mesh proxy copra la stessa area spaziale del contenuto 3DGS.
- Precisione della mesh: è sufficiente un'approssimazione semplificata della geometria della scena, non servono conteggi di poligoni elevati.
- Actor multipli: si possono posizionare più Actor
ALCC2ProxyMeshper coprire aree differenti. - Nessun collegamento esplicito: la ProxyMesh non deve essere associata a un Actor specifico, l'abbinamento avviene automaticamente.
- Compatibilità con il passato: i progetti che non usano ProxyMesh si comportano esattamente come prima dell'aggiornamento, senza costi aggiuntivi.
Risoluzione dei problemi
ProxyMesh non ha effetto
- Verificare che
NormalModesia impostato suProxyMesh - Verificare che la licenza sia valida
- Assicurarsi che all'Actor ProxyMesh sia assegnata una StaticMesh valida
- Verificare che la ProxyMesh si sovrapponga spazialmente al contenuto 3DGS
Avviso: «has a null StaticMesh»
Assegnare una StaticMesh all'Actor ALCC2ProxyMesh. L'avviso è limitato in frequenza e viene emesso una sola volta per istanza.
Colore del whitebox visibile nell'immagine finale
- Assicurarsi che almeno un LCC2Component sia in modalità ProxyMesh
- Regolare
LCC2.ProxyMeshDepthEpsilonquando la corrispondenza di profondità è troppo rigida
Il risultato dell'illuminazione è scorretto
- Verificare che le normali della mesh proxy siano un'approssimazione ragionevole della geometria reale della scena
Le ombre compaiono solo da vicino e vengono tagliate in lontananza
Un problema del motore. Selezionare l'Actor ProxyMesh, disattivare e riattivare Far Shadow sullo StaticMeshComponent per ripristinare le ombre complete.