Esercizio - Creare posizionamenti intelligenti di oggetti con risolutori

Completato

I risolutori sono uno dei componenti di Mixed Reality Toolkit (MRTK). Verranno esaminati due tipi di risolutori e le rispettive funzionalità.

Posizione dei risolutori in MRTK

I risolutori di MRTK si trovano nella cartella MRTK SDK. Per visualizzare i suggerimenti disponibili nel progetto, nella finestra Progetto passare a Pacchetti>Manipolazione spaziale MRTK>Suggerimenti.

Screenshot che mostra la posizione della cartella Solvers.

Risolutore indicatore direzionale

Usare il risolutore Indicatore direzionale per indirizzare l'utente verso gli oggetti. In tal caso, eseguire la procedura seguente:

  1. Nella finestra Project passare alla cartella Assets>MRTK.Tutorials.GettingStarted>Prefabs. Trascinare il prefab Chevron nella finestra Gerarchia e impostare la Posizione di trasformazione su X = 0, Y = 1.5, Z = 2 per posizionarlo vicino all'oggetto RoverExplorer.

    Screenshot che mostra il prefab Chevron appena aggiunto selezionato.

  2. Rinominare l'oggetto Chevron appena aggiunto in Indicator. Nella finestra Inspector selezionare quindi Add Component per aggiungere DirectionalIndicator.

    Screenshot che mostra il componente solver DirectionalIndicator aggiunto.

  3. Configurare i componenti DirectionalIndicator e SolverHandler nel modo seguente:

    a. Verificare che per Tracked Target Type del componente SolverHandler sia impostato il valore Head.

    b. Assegnare RoverExplorer a Directional Target del componente DirectionalIndicator trascinandolo da Hierarchy sul campo None (Transform).

    c. Modifica il valore di View Offset impostandolo su 0.2.

    Screenshot che mostra il componente solver DirectionalIndicator configurato.

  4. Per passare alla modalità Game, premere Play. Tenere premuto il pulsante destro del mouse mentre si sposta il mouse verso sinistra o verso destra per ruotare la direzione dello sguardo.

    Si noti che quando si allontana lo sguardo dall'oggetto RoverExplorer, viene visualizzato l'oggetto Indicator che punta verso l'oggetto RoverExplorer.

    Screenshot che mostra la doppia visualizzazione in modalità di riproduzione con il solver DirectionalIndicator in uso.

Risolutore Tap To Place

Usare il risolutore Tap To Place per riposizionare gli oggetti. In tal caso, eseguire la procedura seguente:

  1. Nella finestra Hierarchy selezionare l'oggetto RoverExplorer>RoverAssembly. In Controllo usare Aggiungi componente per aggiungere il componente Tocca per posizionare. Configurare il componente come indicato di seguito:

    a. Verificare che per Tracked Target Type del componente SolverHandler sia impostato il valore Head.

    b. Deselezionare Usa offset normale superficie predefinita e assicurarsi che Offset normale superficie sia impostato su 0.

    c. Selezionare la casella di controllo Keep Orientation Vertical.

    Screenshot che mostra il componente solver Tap To Place aggiunto e configurato.

  2. Usare quindi Aggiungi componente per aggiungere il componente Interagibile con stato. Nella finestra Controllo individuare l'evento Al clic (). Selezionare l'icona + per aggiungere un nuovo evento. Configura l'evento come indicato di seguito:

    a. Assegnare l'oggetto RoverAssembly come listener per l'evento Al clic () trascinandolo da Gerarchia sul campo Nessuno (Oggetto).

    b. Dall'elenco a discesa Nessuna funzione, selezionare TapToPlace>StartPlacement() per chiamare questo metodo quando viene attivato l'evento.

    Screenshot che mostra l'evento On Placing Started di Tap To Place configurato.

  3. Con l'oggetto RoverAssembly ancora selezionato nella finestra Hierarchy, nella finestra Inspector individuare l'evento On Placing Started (). Selezionare l'icona + per aggiungere un nuovo evento.

    Screenshot che mostra l'evento On Placing Started di Tap To Place aggiunto.

  4. Configura l'evento come indicato di seguito:

    a. Assegnare l'oggetto RoverAssembly come listener per l'evento On Placing Started () trascinandolo da Hierarchy sul campo None (Object).

    b. Dall'elenco a discesa No Function selezionare TapToPlace>float SurfaceNormalOffset per aggiornare il valore della proprietà SurfaceNormalOffset quando viene attivato l'evento.

    c. Verificare che l'argomento sia impostato su 0.

    Screenshot che mostra l'evento On Placing Started di Tap To Place configurato.

  5. In Hierarchy fare clic con il pulsante destro del mouse su un punto vuoto. Scegliere 3D Object>Cube per creare un oggetto temporaneo che rappresenta il terreno e configurare il componente Transform come segue:

    • Posizione: X = 0, Y = 0.15, Z = 6
    • Rotazione: X = 0, Y = 0, Z = 0
    • Scale (Scala): X = 10, Y = 0,2, Z = 10

    Screenshot che mostra l'oggetto Cube temporaneo relativo al terreno aggiunto e configurato.

  6. Per passare alla modalità Game, premere Play. Quindi premere e tenere premuto il pulsante destro del mouse mentre si sposta il mouse verso il basso, fino a quando lo sguardo raggiunge l'oggetto RoverAssembly.

    Screenshot che mostra la doppia visualizzazione in modalità di riproduzione, con lo sguardo fisso puntato sull'oggetto RoverAssembly.

  7. Tenere premuta la barra spaziatrice e fare clic sul pulsante sinistro del mouse per simulare il tocco e avviare il processo tap-to-place.

    Screenshot che mostra la doppia visualizzazione in modalità di riproduzione, con il posizionamento avviato.

  8. Tenere premuto il pulsante destro del mouse mentre si sposta il mouse verso sinistra o verso destra per ruotare la direzione dello sguardo. Quando si è soddisfatti del posizionamento, tenere premuta la barra spaziatrice e fare clic sul pulsante sinistro del mouse per simulare il tocco finale.

    Screenshot che mostra la doppia visualizzazione in modalità di riproduzione, con il posizionamento terminato.

  9. Dopo aver testato la funzionalità nella modalità Game, fare clic con il pulsante destro del mouse sull'oggetto Cube e scegliere Delete per rimuoverlo dalla scena.

    Screenshot che mostra come eliminare l'oggetto Cube temporaneo relativo al terreno.