Dimensioni dei server

Azure Rendering remoto è disponibile in due configurazioni del server: Standard e Premium.

Limiti primitivi

Una primitiva è un singolo triangolo (in mesh triangolari) o un singolo punto (nelle mesh cloud punto). È possibile creare un'istanza di mesh triangolari insieme alle nuvole di punti, nel qual caso la somma di tutti i punti e triangoli nella sessione viene conteggiata rispetto al limite.

Dimensioni standard

Rendering remoto con Standard server di dimensioni ha una dimensione massima della scena di 20 milioni di primitive. Quando il renderer in una dimensione del server "Standard" raggiunge questa limitazione, il rendering passa a uno sfondo checkerboard:

Screenshot shows a grid of black and white squares with a Tools menu.

Dimensioni Premium

Rendering remoto con Premium dimensioni non impone un massimo rigido, ma le prestazioni potrebbero essere ridotte se il contenuto supera le funzionalità di rendering del servizio. Inoltre, per le mesh triangolari (e a differenza delle nuvole di punti), la quantità di memoria grafica disponibile è un limite rigido. Non è possibile eseguire il mapping della quantità di memoria grafica a un numero specifico di triangoli, perché esistono molti fattori che contribuiscono a seconda della mesh di origine e delle impostazioni:

  • numero e risoluzione delle trame,
  • quantità di istanze di geometria univoche e sotto mesh all'interno della mesh (vedere anche la creazione di istanze di oggetti),
  • flussi dei vertici in uso,
  • modalità di composizione del rendering utilizzata con le Premium dimensioni.

Per i cloud di punti non esiste alcun limite reale perché gli asset cloud punto usano l'approccio di streaming dei dati. Con il flusso di dati, il renderer gestisce automaticamente il budget di memoria nella scheda grafica, in base alla geometria visibile effettiva.

Specificare le dimensioni del server

Il tipo desiderato di configurazione del server deve essere specificato in fase di inizializzazione della sessione di rendering. Non può essere modificato all'interno di una sessione in esecuzione. Gli esempi di codice seguenti illustrano la posizione in cui è necessario specificare le dimensioni del server:

async void CreateRenderingSession(RemoteRenderingClient client)
{
    RenderingSessionCreationOptions sessionCreationOptions = default;
    sessionCreationOptions.Size = RenderingSessionVmSize.Standard; // or  RenderingSessionVmSize.Premium

    CreateRenderingSessionResult result = await client.CreateNewRenderingSessionAsync(sessionCreationOptions);
    if (result.ErrorCode == Result.Success)
    {
        RenderingSession session = result.Session;
        // do something with the session
    }
}
void CreateRenderingSession(ApiHandle<RemoteRenderingClient> client)
{
    RenderingSessionCreationOptions sessionCreationOptions;
    sessionCreationOptions.Size = RenderingSessionVmSize::Standard; // or  RenderingSessionVmSize::Premium

    client->CreateNewRenderingSessionAsync(sessionCreationOptions, [](Status status, ApiHandle<CreateRenderingSessionResult> result) {
        if (status == Status::OK && result->GetErrorCode() == Result::Success)
        {
            ApiHandle<RenderingSession> session = result->GetSession();
            // do something with the session
        }
    });
}

Per gli script di PowerShell di esempio, è necessario specificare le dimensioni del server desiderate all'interno del arrconfig.json file:

{
  "accountSettings": {
    ...
  },
  "renderingSessionSettings": {
    "vmSize": "<standard or premium>",
    ...
  },

Come il renderer valuta il numero di primitive

Il numero di primitive considerate per il test di limitazione è il numero di primitive (triangoli e punti) effettivamente passate al renderer. Questa geometria è in genere la somma di tutte le mesh di cui è stata creata un'istanza, ma esistono anche eccezioni. La geometria seguente non è inclusa:

  • Istanze del modello caricate completamente esterne al frustum di visualizzazione.
  • Modelli o parti del modello che vengono passate a invisibili, usando il componente di override dello stato gerarchico.

Di conseguenza, è possibile scrivere un'applicazione destinata alle standard dimensioni che carica più modelli con un conteggio primitivo vicino al limite per ogni singolo modello. Quando l'applicazione visualizza un solo modello alla volta, la scacchiera non viene attivata.

Come determinare il numero di primitive

Esistono due modi per determinare il numero di primitive di un modello o di una scena che contribuiscono al limite di budget delle dimensioni della standard configurazione:

  • Sul lato conversione del modello recuperare il file JSON di output della conversione e controllare la numFaces voce nella sezione inputStatistics. Questo numero indica rispettivamente il numero di triangoli nelle mesh triangolari e il numero di punti nelle nuvole di punti.
  • Se l'applicazione si occupa di contenuto dinamico, il numero di primitive di cui è stato eseguito il rendering può essere sottoposto a query in modo dinamico durante il runtime. Usare una query di valutazione delle prestazioni e verificare la somma dei valori nei due membri PolygonsRendered e PointsRendered nello PerformanceAssessment struct . Il PolygonsRendered / PointsRendered campo viene impostato su bad quando il renderer raggiunge la limitazione primitiva. Lo sfondo della scacchiera è sempre sbiadito con un certo ritardo per garantire che l'azione dell'utente possa essere eseguita dopo questa query asincrona. L'azione dell'utente può, ad esempio, nascondere o eliminare istanze del modello.

Prezzo

Per una suddivisione dettagliata dei prezzi per ogni tipo di configurazione, vedere la pagina dei prezzi Rendering remoto.

Passaggi successivi