Utilizzare SideFX Houdini per trasformare nuvole di punti in oggetti 3D ottimizzati per Dynamics 365 Guides e per i componenti di realtà mista in app create con Power Apps

Questa esercitazione fornisce istruzioni dettagliate per le attività seguenti:

  • Convertire una nuvola di punti in un oggetto 3D.

  • Ottimizzare un oggetto 3D riducendo il numero di poligoni in modo che soddisfi gli obiettivi di prestazioni per le applicazioni di realtà mista di Dynamics 365.

  • Esportare un oggetto 3D ottimizzato come file .glb utilizzabile in Dynamics 365 Guides e nei componenti di realtà mista nelle app create con Power Apps.

  • Creare un modello di pipeline di processo, in modo da poter rapidamente ottimizzare le nuvole di punti in futuro.

Questa esercitazione è a solo scopo informativo, per mostrare il funzionamento di SideFX Houdini con Microsoft Dynamics 365 Guides e Power Apps. Il tuo utilizzo di applicazioni di terze parti è soggetto alle condizioni vigenti tra te e le terze parti. Microsoft Corporation non è associata a SideFX né è sua partner e non promuove né sponsorizza SideFX o alcuno dei suoi prodotti. Sono disponibili diverse altre applicazioni per la creazione di contenuti che puoi utilizzare per preparare i tuoi oggetti 3D.

Cos'è Houdini?

Houdini è uno strumento per la creazione di contenuti procedurali 3D. Utilizza un sistema di strumenti non distruttivo basato su nodi per progettare pipeline di processo e contenuti 3D.

Configurare l'ambiente

Per configurare l'ambiente, devi completare queste attività:

  • Installare l'estensione SideFX Labs.

  • Configurare AliceVision per la fotogrammetria.

Installare l'estensione SideFX Labs

SideFX Labs è un terreno di prova per strumenti in grado di aiutarti ad acquisire una più rapida operatività con Houdini. Questa raccolta gratuita include strumenti utili per convertire nuvole di punti in oggetti 3D ottimizzati. Per utilizzare SideFX Labs, devi disporre di Houdini 18 o versioni successive.

SideFX fornisce un'esercitazione video che facilita l'installazione di questi strumenti.

Nota

Devi installare Houdini prima di poter installare SideFX Labs. Altre informazioni su come installare Houdini.

  1. Apri Houdini.

  2. Per installare SideFX Labs, seleziona il segno più Segno più. nella parte superiore della finestra di Houdini, seleziona Shelves, quindi seleziona la casella di controllo SideFX Labs.

    Casella di controllo SideFX Labs.

  3. Nella barra degli strumenti visualizzata nella parte superiore della finestra, seleziona Update Toolset per aprire il programma di installazione.

    Pulsante Update Toolset.

  4. Seleziona Update per installare gli strumenti.

    Pulsante Update.

Se l'installazione ha esito positivo, vengono visualizzati altri strumenti nella barra degli strumenti. Puoi quindi proseguire con questa esercitazione.

Configurare AliceVision per la fotogrammetria

AliceVision è un framework di fotogrammetria per la visione artificiale sviluppato da Mikros Image. Fornisce algoritmi di ricostruzione 3D e tracciamento della fotocamera. Altre informazioni su AliceVision e il plug-in di AliceVision.

Per informazioni su come installare e configurare il plug-in di AliceVision per Houdini, vedi l'esercitazione di SideFX.

Importare una nuvola di punti in Houdini

Houdini è in grado di importare file di nuvole di punti nel formato di file PLY. Se il tuo file è in formato PTS, puoi convertirlo manualmente nel formato PLY.

Convertire un file .pts in file .ply

  1. Apri il file .pts in un editor di file di tua scelta e aggiungi la seguente intestazione.

    ************************
    ply
    format ascii 1.0
    element vertex 534993
    property float x
    property float y
    property float z
    property uchar intensity
    property uchar red
    property uchar green
    property uchar blue
    end_header
    ************************
    
  2. Nell'intestazione, accanto a element vertex, sostituisci il valore 534993 con il valore che appariva originariamente all'inizio del file .pts (ma che ora segue immediatamente l'intestazione).

    Valore all'inizio del file .pts

    Questo valore è il numero totale di punti nella nuvola di punti.

  3. Rimuovi il valore originale dopo l'intestazione. La tabella seguente mostra un confronto fianco a fianco dei file prima e dopo aver apportato le modifiche precedenti. Il valore di element vertex è evidenziato in rosso.

    Inizio del file .pts Inizio del file .ply
    Valore all'inizio del file .pts Valore nell'intestazione del file .ply
  4. Salva il file in modo che abbia estensione .ply.

Importare il file .ply

  1. Apri Houdini. Viene creata automaticamente una nuova scena. In questa procedura creerai una catena di nodi per elaborare la nuvola di punti in un oggetto 3D. Questi nodi vengono creati nel riquadro inferiore destro della finestra di Houdini.

    Riquadro dei nodi.

  2. Fai clic con il pulsante destro del mouse nel riquadro inferiore destro per aprire il TAB Menu. In alternativa, premi il tasto TAB.

  3. Nel TAB Menu seleziona Import > File, quindi seleziona un punto nel riquadro Geometry per posizionare il nodo.

    Comando File.

  4. Fai doppio clic al centro del nodo file1 (o premi I) per eseguire il drill-down nella parte di selezione dei file del nodo, seleziona il pulsante File Chooser, quindi seleziona il file da importare.

    Pulsante File Chooser.

  5. Nel browser di file visualizzato individua il percorso del file della nuvola di punti con estensione .ply che desideri importare, seleziona il file, quindi seleziona Accetta.

    Pulsante Accept.

    La nuvola di punti appare nella parte principale della finestra. Se non riesci a vederla, prova a utilizzare la rotellina del mouse per applicare lo zoom indietro finché non appare l'intera nuvola di punti.

    Nuvola di punti.

Preparare la nuvola di punti

Riorientare la nuvola di punti

A volte, quando si importa per la prima volta una nuvola di punti, l'orientamento è sbagliato. È possibile correggere l'orientamento aggiungendo un nodo di trasformazione all'albero dei nodi.

  1. Fai clic con il pulsante destro del mouse nel riquadro Geometry per aprire il TAB Menu, quindi seleziona Manipulate > Transform per aggiungere un nodo di trasformazione.

    Comando Transform.

  2. Trascina il puntatore dal punto nella parte inferiore del nodo file1 al punto nella parte superiore del nodo transform1. Questa azione collega l'uscita del nodo file1 all'ingresso del nodo transform1. Quindi, seleziona un punto sul lato destro del nodo transform1. Il lato destro del nodo transform1 diventa blu e il nodo diventa attivo nella parte principale della finestra, consentendoti di vedere il modello dopo che è stato riorientato.

    Nodo di trasformazione.

    Suggerimento

    Per visualizzare il modello durante una fase specifica del processo in Houdini, fai clic sul lato destro del nodo appropriato. Questa funzionalità è utile se hai bisogno di esaminare l'oggetto 3D in uno stato precedente e modificare i cambiamenti avvenuti durante quello stato.

  3. Per correggere la rotazione del modello, nel riquadro delle opzioni sopra il riquadro dei nodi aggiungi i valori nella riga Rotate. Spesso è sufficiente impostare il valore x su 270 per ruotare il modello nella posizione corretta. Tuttavia, se tale valore non funziona, prova valori diversi.

    Valore Rotate.

  4. Per centrare la nuvola di punti sul punto di origine, aggiungi un nodo di allineamento sull'asse dopo il nodo di trasformazione. Per posizionare il nodo, passa il mouse sopra il riquadro Geometry, premi il tasto TAB per aprire il TAB Menu, quindi seleziona Labs>Geo>Labs Axis Align.

    Comando Labs Axis Align.

  5. Trascina il puntatore per collegare il punto di uscita nella parte inferiore del nodo transform1 al punto di ingresso nella parte superiore del nodo axis_align1. Lascia invariati i valori predefiniti per posizionare la nuvola di punti sopra il punto di origine (posizione ideale).

    Nodi collegati.

Pulire la nuvola di punti per rimuovere i punti isolati

Se la nuvola di punti contiene punti isolati che desideri rimuovere, puoi selezionare ed eliminare singoli punti o gruppi di punti.

  1. Cambia il metodo Selezione geometria in Punti e lo strumento Seleziona in Prelievo con lazo.

    Nota

    Se preferisci, puoi usare un metodo diverso.

    Metodo Punti e strumento Prelievo con lazo selezionati.

  2. Seleziona i punti da eliminare.

    Punti da eliminare selezionati.

  3. Premi il tasto CANC. Appare un nuovo nodo blast1. Il punto di ingresso nella parte superiore di questo nodo è collegato al punto di uscita nella parte inferiore dell'ultimo nodo con cui stavi lavorando.

    Nodo blast.

  4. Continua a rimuovere i punti finché il risultato non ti soddisfa. Ogni eliminazione aggiunge un nuovo nodo blast che puoi visualizzare o rimuovere in qualsiasi momento.

    Più nodi blast.

Convertire la nuvola di punti in una mesh

Sia le applicazioni di rendering glTF sia quelle di rendering in tempo reale richiedono che gli oggetti siano rappresentati come una superficie poligonale triangolata. Puoi usare il comando Particle Fluid Surface per collegare i punti in una superficie logica come geometria poligonale.

  1. Seleziona un punto nel riquadro Geometry per aprire il TAB Menu, quindi seleziona Fluid>Particle Fluid Surface. Quindi, seleziona il nodo e aggiungilo al riquadro Geometry.

    Comando Particle Fluid Surface.

  2. Trascina il puntatore per collegare il punto di uscita nella parte inferiore del nodo transform1 al punto di ingresso nella parte superiore sinistra del nodo particlefluidsurface1. Quindi, seleziona un punto nel lato destro del nodo pariclefluidsurface1 per attivarlo nella parte principale della finestra.

    Screenshot dei nodi collegati.

    Viene eseguito il rendering della nuvola di punti come una mesh nella parte principale della finestra. La scheda Surfacing è selezionata nel riquadro in alto a destra, sopra il riquadro Geometry.

    Scheda Surfacing.

  3. Se ci sono dati di colore associati ai punti nella nuvola, è possibile utilizzare gli attributi del colore aggiungendo le lettere Cd alla fine del valore nel campo Transfer Attributes. Il colore verrà quindi mostrato sulla mesh.

    Attributo Cd.

  4. Se sono presenti fori nella mesh, come mostrato nella figura seguente, regola i dispositivi di scorrimento Particle Separation e Voxel Scale nel riquadro in alto a destra per provare a risolvere il problema.

    Dispositivi di scorrimento Particle Separation e Voxel Scale.

  5. Per preparare la mesh per la decimazione (il passaggio successivo del processo complessivo), in Output cambia il valore del campo Convert To da Surface Polygon Soup a Surface Polygons. Ciò ti consente di eseguire il remesh della mesh e decimarla.

    Campo Convert To.

  6. Fai clic con il pulsante destro del mouse nel riquadro Geometry per aprire il TAB Menu, quindi seleziona Polygon>Remesh. Viene aggiunto un nodo di remesh per convertire la mesh in triangoli. In questo modo puoi decimare l'oggetto 3D in un numero di poligoni che soddisfa i tuoi requisiti di prestazioni.

    Comando Remesh.

  7. Trascina il puntatore per collegare il punto di uscita nella parte inferiore del nodo particlefluidsurface1 al punto di ingresso nella parte superiore sinistra del nodo remesh. Seleziona al centro del nodo remesh per attivarlo nel riquadro sopra il riquadro Geometry. Quindi, seleziona un punto nel lato destro del nodo remesh per attivare il modello nella parte principale della finestra. È ora possibile modificare le proprietà del remesh; il modello nella parte principale della finestra rifletterà quelle modifiche.

    Nodi collegati.

  8. Sperimenta con le opzioni in Element Sizing per ottenere i risultati desiderati. Per il campo Edge Lengths puoi mantenere il valore predefinito (Uniform) oppure selezionare Adaptive e regolare il dispositivo di scorrimento Relative Density (e le altre opzioni) per produrre la mesh che desideri.

    Opzioni Element Sizing.

Decimare l'oggetto 3D per migliorare le prestazioni

Per raggiungere obiettivi specifici dell'applicazione, potrebbe essere necessario decimare l'oggetto 3D. Per decimazione si intende il processo di ricalcolo dei poligoni di superficie di un modello per creare una forma simile utilizzando un numero inferiore di poligoni. Sebbene questo processo riduca la fedeltà visiva, aiuta a migliorare le prestazioni. La figura seguente mostra un confronto fianco a fianco di un modello di alta qualità utilizzato per scene con bassa complessità in HoloLens e un modello di bassa qualità utilizzato per scene con elevata complessità.

Oggetto 3D a elevato numero di poligoni Oggetto 3D a ridotto numero di poligoni
Modello a elevato numero di poligoni Modello a ridotto numero di poligoni
500.000 triangoli 8.000 triangoli

Decimare un modello

  1. Nel riquadro Geometry premi il tasto TAB per aprire il TAB Menu, quindi seleziona Polygon>PolyReduce per posizionare un nodo PolyReduce nel riquadro Geometry.

    Comando PolyReduce.

  2. Trascina il puntatore per collegare il punto di uscita nella parte inferiore del nodo remesh al punto di ingresso nella parte superiore sinistra del nodo polyreduce1. Seleziona al centro del nodo polyreduce1, quindi seleziona un punto nel lato destro del nodo per attivarlo nella parte principale della finestra.

  3. In Reduction Amount, nel campo Target seleziona Output Polygon Count, quindi usa il dispositivo di scorrimento Number To Keep per regolare il numero di poligoni in grado di soddisfare i tuoi requisiti di prestazioni, ma anche di mantenere una fedeltà visiva accettabile.

    Opzioni Reduction Amount.

La nuvola di punti è stata ora convertita in una mesh 3D ottimizzata. Nel passaggio successivo fisserai una texture ad alta risoluzione sull'oggetto 3D per recuperare parte della fedeltà visiva esistente prima della decimazione.

Fissare una texture ad alta risoluzione su una mesh a ridotto numero di poligoni

Uno svantaggio della riduzione del numero di poligoni in una mesh è che molti dei dettagli potrebbero andare persi. Per ripristinare alcuni di questi dettagli, è possibile catturarli e applicarli come texture sovrapposta al modello a ridotto numero di poligoni. Durante questo processo, noto come fissaggio di texture, acquisisci un'immagine di tutte le superfici del modello a elevato numero di poligoni e le unisci in una "trapunta" che stendi sul modello a ridotto numero di poligoni. In questo modo ottieni le prestazioni di un modello a ridotto numero di poligoni ma mantieni alcuni dei dettagli più precisi di un modello a elevato numero di poligoni.

Le coordinate della texture (note anche come UV) sono coppie di numeri (U e V) archiviate nella geometria di un modello. Questi numeri rappresentano il modo in cui un'immagine 2D può essere mappata su una superficie 3D e consentono di definire le proprietà della superficie come immagine. Le immagini possono essere semplici decalcomanie o componenti di materiali complessi, come la ruvidità e il riflesso metallico. È possibile generare manualmente posizioni UV per una mesh oppure il processo può essere eseguito in modo semiautomatico o automatico. L'operatore per superfici AutoUV è uno strumento di Houdini in grado di generare UV. Utilizza alcuni metodi automatici durante la creazione di UV.

Fissare la texture

  1. Fai clic con il pulsante destro del mouse nel riquadro Geometry per aprire il TAB Menu, quindi seleziona Labs>UV>Labs Auto UV per aggiungere un nodo AutoUV alla scena.

    Comando Labs AutoUV.

  2. In Method cambia il valore del campo Method in UV Unwrap.

    Metodo UV Unwrap selezionato.

  3. Trascina il puntatore per collegare il punto di uscita nella parte inferiore del nodo polyreduce1 al punto di ingresso nella parte superiore del nodo autouv1.

    Trascinamento del puntatore per creare nodi collegati.

  4. Per visualizzare gli oggetti "prima" e "dopo" fianco a fianco, seleziona il pulsante Layout riquadro di visualizzazione, quindi seleziona Due visualizzazioni affiancate.

    Opzione Due visualizzazioni affiancate.

  5. Nella parte principale della finestra, dal menu a discesa seleziona Set View > UV viewport.

    Comando UV viewport.

    Le coordinate UV di cui è stato eseguito l'unwrapping vengono visualizzate a sinistra e l'oggetto 3D viene visualizzato a destra.

    UV di cui è stato eseguito l'unwrapping e oggetto 3D.

  6. Nel riquadro Geometry seleziona Labs>Output>Labs Maps Baker per aggiungere un nodo maps_baker1.

    Comando Labs Maps Baker.

  7. Trascina il puntatore per collegare il punto di uscita nella parte inferiore del nodo autouv1 al punto di ingresso nella parte superiore sinistra del nodo maps_baker1. Il punto in alto a sinistra è il nodo Input risoluzione BASSA.

    Collegamento del nodo autouv1 al nodo maps_baker1.

  8. Trascina il puntatore per collegare il punto di uscita nella parte inferiore del nodo particlefluidsurface1 al punto di ingresso nella parte superiore destra del nodo maps_baker 1. Il punto in alto a destra è il nodo HIGH Resolution input.

    Collegamento del nodo particlefluidsurface1 al nodo maps_baker 1.

  9. Seleziona il nodo maps_baker1, quindi in Bake cambia il valore del campo Preview Channel in diffuse. In Bake Options imposta il campo Diffuse Map su diffuse.

    Opzioni di fissaggio.

    Suggerimento

    Per salvare il progetto in una cartella specifica, seleziona il pulsante File Chooser accanto al campo Output Directory mostrato nella figura precedente. Quando fissi una texture, il file della texture .png viene salvato in una cartella render che viene creata nella cartella radice del progetto salvato. Salvando il progetto nella sua cartella, troverai facilmente la texture fissata.

  10. Seleziona il nodo maps_baker1, quindi nel riquadro delle opzioni seleziona Bake.

    Screenshot del pulsante Bake.

  11. Fai clic con il pulsante destro del mouse nel riquadro Geometry per aprire il TAB menu, quindi seleziona Managers>Material Network per aggiungere un nodo matnet1 alla scena.

    Comando Material Network.

  12. Fai doppio clic sul nodo matnet1 per aprire il riquadro VEX Builder.

    Nodo matnet.

  13. Fai clic con il pulsante destro del mouse nel riquadro VEX Builder, quindi seleziona Shaders > Shader di principio per aggiungere il materiale Shader di principio.

    Comando Shader di principio.

  14. Nel riquadro delle opzioni, nella scheda Surface utilizza i dispositivi di scorrimento per cambiare il valore del campo Roughness in 0.6 e il valore del campo Metallic in 0.1. Puoi impostare questi campi sui valori che preferisci, ma abbiamo rilevato che questi valori sono un buon punto di partenza quando vengono utilizzati con i valori predefiniti.

    Campi Roughness e Metallic.

  15. Nella scheda Textures, in Base Color seleziona la casella di controllo Use Texture. Quindi, seleziona il pulsante File Chooser e il file della texture *_color.png che hai salvato in precedenza nella cartella render. Lo shader semplificato è ora pronto per l'uso.

    Nota

    Puoi modificare ulteriormente il materiale a tuo piacimento. Ai fini di questa esercitazione, questa configurazione è sufficiente.

    Casella di controllo Use Texture e texture selezionata.

  16. Nel riquadro VEX Builder seleziona il pulsante Back (freccia sinistra) per tornare al riquadro Geometry.

    Pulsante Back.

  17. Seleziona Material > Material per posizionare un nodo del materiale nel riquadro Geometry.

    Comando Material.

  18. Trascina il puntatore per collegare il punto di uscita nella parte inferiore del nodo autouv1 al punto di ingresso nella parte superiore del nodo material1.

    Collegamento del nodo autouv1 al nodo material1.

  19. Seleziona il nodo material1, quindi il pulsante Operator chooser. Quindi, nella finestra di dialogo Scegli operatore seleziona file1>matnet1>principledshader1 per selezionare lo shader semplificato creato in precedenza.

    Pulsante Operator chooser e file del materiale selezionato.

  20. Seleziona un punto sul lato destro del nodo per attivarlo nella parte principale della finestra.

Viene eseguito il rendering della texture sopra l'oggetto 3D a ridotto numero di poligoni. Se il risultato sembra accettabile, vai al passaggio successivo.

Rendering della texture sul modello a ridotto numero di poligoni.

Esportare il modello in un file .glb

In questo passaggio esporterai il modello in un file .glb, in modo da poterlo utilizzare con Dynamics 365 Guides e Power Apps.

  1. Fai clic con il pulsante destro del mouse nel riquadro Geometry per aprire il TAB Menu, quindi seleziona Export>ROP GLTF Output.

    Comando ROP GLTF Output.

  2. Trascina il puntatore per collegare il punto di uscita nella parte inferiore del nodo material1 al punto di ingresso nella parte superiore del nodo rop_gltf1.

    Collegamento del nodo material1 al nodo rop_gltf1.

  3. Nel riquadro superiore, cambia il valore del campo Export Type in glb.

    Valore glb selezionato nel campo Export Type.

  4. Seleziona il pulsante File Chooser accanto al campo Output File, quindi immetti un nome e una destinazione per il file .glb. Assicurati di aggiungere .glb alla fine del nome del file. Al termine, seleziona Accept.

    Pulsante File Chooser e campo File.

  5. Seleziona Render to Disk per finalizzare l'esportazione e creare il file .glb.

    Pulsante Render to Disk.

Creare un modello per riutilizzare le impostazioni per altre nuvole di punti

Per risparmiare tempo e risorse, puoi creare un modello. In questo modo, le impostazioni create per una nuvola di punti potranno essere utilizzate per altre nuvole di punti. Anche se dovrai comunque selezionare manualmente Bake e probabilmente regolare alcuni valori, puoi automatizzare la maggior parte dell'elaborazione.

Creare un modello

  1. Sostituisci la geometria attualmente in uso con una geometria predefinita. Questo passaggio rende il file del modello leggero e quindi rapidamente caricabile.

    1. Nel riquadro Geometry seleziona al centro del nodo del file per passare al menu File nel riquadro superiore.

    2. Cambia il valore del campo Geometry File in default.bgeo, quindi seleziona Reload Geometry.

    3. Nota che la geometria viene ridisegnata ed è ora un cubo generico.

    4. Cambia il nome del file in qualcosa di generico, come Modello.

    Geometria ridisegnata.

  2. Seleziona File > Save e immetti un nome facile da ricordare, come Prep_Template.

    Comando Save.

  3. Chiudi Houdini.

Utilizzare il modello

  1. Apri Houdini, seleziona File>Open, quindi seleziona il modello appena creato.

    Comando Open.

  2. Nel riquadro Geometry seleziona al centro del nodo del file per passare al menu File nel riquadro superiore. Quindi, seleziona il pulsante File Chooser accanto al campo Geometry File per selezionare il file della nuvola di punti .ply.

    Nodo selezionato e pulsante File Chooser.

  3. Seleziona Reload Geometry per caricare la nuvola di punti nella scena.

    Pulsante Reload Geometry.

  4. Vai al nodo maps_baker1, quindi seleziona Bake per fissare una nuova texture per l'oggetto 3D.

    Pulsante Bake.

  5. Seleziona un punto sul lato destro del nodo material1 per visualizzare il modello fissato.

    Lato destro del nodo del materiale.

  6. Effettua uno dei passaggi seguenti:

    • Se trovi l'oggetto 3D soddisfacente, vai al nodo rop_gltfB, quindi seleziona Render to Disk per esportare l'oggetto 3D.

      Comando Render to Disk.

    • Se l'aspetto dell'oggetto 3D non è soddisfacente, regola le impostazioni dei nodi particlefluidsurface1, remesh e polyreduce1. Quando il modello sembra accettabile, fissa di nuovo la texture ed esporta l'oggetto 3D.

Visualizzare un oggetto 3D in Dynamics 365 Guides o Power Apps

Dopo aver preparato un oggetto 3D, utilizza i seguenti collegamenti per altre informazioni sull'utilizzo del modello in Dynamics 365 Guides o Power Apps:

Altre informazioni

Gli screenshot in questa esercitazione sono stati tratti dal programma software Houdini allo scopo di fornire istruzioni chiare su come utilizzare il software Houdini. Altre informazioni su SideFX Houdini.

Microsoft Corporation non è responsabile e declina espressamente ogni responsabilità per danni di qualsiasi tipo derivanti dall'uso di Houdini o dalla fiducia riposta in queste istruzioni. Questo documento è stato creato al solo scopo di fornire informazioni generali ai nostri clienti e non prende in considerazione alcun piano aziendale né specifiche personalizzate.

L'uso in questo documento di nomi e immagini protetti da marchio di fabbrica è strettamente a scopo informativo e descrittivo e Microsoft Corporation non rilascia alcuna rivendicazione commerciale sul loro utilizzo né alcun suggerimento di sponsorizzazione o promozione.