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.
Apri Houdini.
Per installare SideFX Labs, seleziona il segno più nella parte superiore della finestra di Houdini, seleziona Shelves, quindi seleziona la casella di controllo SideFX Labs.
Nella barra degli strumenti visualizzata nella parte superiore della finestra, seleziona Update Toolset per aprire il programma di installazione.
Seleziona Update per installare gli strumenti.
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
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 ************************
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).
Questo valore è il numero totale di punti nella nuvola di punti.
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 Salva il file in modo che abbia estensione .ply.
Importare il file .ply
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.
Fai clic con il pulsante destro del mouse nel riquadro inferiore destro per aprire il TAB Menu. In alternativa, premi il tasto TAB.
Nel TAB Menu seleziona Import > File, quindi seleziona un punto nel riquadro Geometry per posizionare il nodo.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
Cambia il metodo Selezione geometria in Punti e lo strumento Seleziona in Prelievo con lazo.
Nota
Se preferisci, puoi usare un metodo diverso.
Seleziona i punti da eliminare.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 |
---|---|
500.000 triangoli | 8.000 triangoli |
Decimare un modello
Nel riquadro Geometry premi il tasto TAB per aprire il TAB Menu, quindi seleziona Polygon>PolyReduce per posizionare un nodo PolyReduce nel riquadro Geometry.
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.
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.
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
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.
In Method cambia il valore del campo Method in UV Unwrap.
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.
Per visualizzare gli oggetti "prima" e "dopo" fianco a fianco, seleziona il pulsante Layout riquadro di visualizzazione, quindi seleziona Due visualizzazioni affiancate.
Nella parte principale della finestra, dal menu a discesa seleziona Set View > UV viewport.
Le coordinate UV di cui è stato eseguito l'unwrapping vengono visualizzate a sinistra e l'oggetto 3D viene visualizzato a destra.
Nel riquadro Geometry seleziona Labs>Output>Labs Maps Baker per aggiungere un nodo maps_baker1.
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.
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.
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.
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.
Seleziona il nodo maps_baker1, quindi nel riquadro delle opzioni seleziona Bake.
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.
Fai doppio clic sul nodo matnet1 per aprire il riquadro VEX Builder.
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.
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.
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.
Nel riquadro VEX Builder seleziona il pulsante Back (freccia sinistra) per tornare al riquadro Geometry.
Seleziona Material > Material per posizionare un nodo del materiale nel riquadro Geometry.
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.
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.
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.
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.
Fai clic con il pulsante destro del mouse nel riquadro Geometry per aprire il TAB Menu, quindi seleziona Export>ROP GLTF Output.
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.
Nel riquadro superiore, cambia il valore del campo Export Type in glb.
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.
Seleziona Render to Disk per finalizzare l'esportazione e creare il file .glb.
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
Sostituisci la geometria attualmente in uso con una geometria predefinita. Questo passaggio rende il file del modello leggero e quindi rapidamente caricabile.
Nel riquadro Geometry seleziona al centro del nodo del file per passare al menu File nel riquadro superiore.
Cambia il valore del campo Geometry File in default.bgeo, quindi seleziona Reload Geometry.
Nota che la geometria viene ridisegnata ed è ora un cubo generico.
Cambia il nome del file in qualcosa di generico, come Modello.
Seleziona File > Save e immetti un nome facile da ricordare, come Prep_Template.
Chiudi Houdini.
Utilizzare il modello
Apri Houdini, seleziona File>Open, quindi seleziona il modello appena creato.
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.
Seleziona Reload Geometry per caricare la nuvola di punti nella scena.
Vai al nodo maps_baker1, quindi seleziona Bake per fissare una nuova texture per l'oggetto 3D.
Seleziona un punto sul lato destro del nodo material1 per visualizzare il modello fissato.
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.
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.