Tailles des serveurs

Le service Azure Remote Rendering est disponible dans deux configurations de serveur : Standard et Premium.

Limites primitives

Une primitive est soit un triangle unique (en maillages triangulaires) soit un point unique (en maillages de nuages de points). Les maillages triangulaires peuvent être instanciés avec des nuages de points, auquel cas la somme de tous les points et triangles de la session est comptabilisée par rapport à la limite.

Taille standard

Le service Remote Rendering avec un serveur de taille Standard a une taille de scène maximale de 20 millions de primitives. Quand le convertisseur sur un serveur de taille « standard » atteint cette limitation, il bascule le rendu vers un damier d’arrière-plan :

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

Taille Premium

Le service Remote Rendering de taille Premium n’impose pas de maximum inconditionnel, mais les performances peuvent de dégrader si votre contenu dépasse les capacités de rendu du service. En outre, pour les maillages triangulaires (et contrairement aux nuages de points), la quantité de mémoire graphique disponible est une limite difficile. Il n’est pas possible de mapper la quantité de mémoire graphique à un nombre spécifique de triangles, car il existe de nombreux facteurs contributeurs qui dépendent du maillage source et des paramètres :

  • nombre et résolution des textures,
  • quantité d’instanciation de géométrie unique par rapport à l’instanciation de sous-maillage à l’intérieur du maillage (voir aussi instanciation d’objets),
  • flux de vertex utilisés,
  • mode de composition de rendu utilisé avec la Premium taille.

Pour les clouds de point, il n’existe aucune limite réelle, car les ressources cloud de point utilisent l’approche de diffusion en continu des données. Avec la diffusion en continu des données, le renderer gère automatiquement le budget mémoire sur les graphiques carte, en fonction de la géométrie visible réelle.

Spécifier la taille du serveur

Le type souhaité de configuration de serveur doit être spécifié au moment de l’initialisation de la session de rendu. Il ne peut pas être modifié pendant une session en cours d’exécution. Les exemples de code suivants illustrent l’emplacement où la taille de serveur doit être spécifiée :

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
        }
    });
}

Pour les exemples de scripts PowerShell, la taille de serveur souhaitée doit être spécifiée dans le fichier arrconfig.json :

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

Comment le convertisseur évalue-t-il le nombre de primitives ?

Le nombre de primitives pris en compte pour le test de limitation est le nombre de primitives (triangles et points) qui sont réellement transmis au convertisseur. Cette géométrie correspond généralement à la somme de tous les clouds instanciés, mais il existe également des exceptions. La géométrie suivante n’est pas incluse :

Par conséquent, il est possible d’écrire une application qui cible la taille standard et qui charge plusieurs modèles avec un nombre de primitives proche de la limite pour chaque modèle unique. Quand l’application n’affiche qu’un seul modèle à la fois, le damier n’est pas déclenché.

Comment déterminer le nombre de primitives ?

Il existe deux façons de déterminer le nombre de primitives d’un modèle ou d’une scène qui contribuent à la limite budgétaire de la taille de serveur standard :

  • Du côté conversion du modèle, récupérez le fichier json de sortie de conversion et vérifiez l’entrée numFaces dans la section inputStatistics. Ce nombre indique le nombre de triangles dans les maillages triangulaires et le nombre de points dans les nuages de points respectivement.
  • Si votre application traite du contenu dynamique, le nombre de primitives rendues peut être interrogé de manière dynamique pendant l’exécution. Utilisez une requête d’évaluation des performances et vérifiez la somme des valeurs dans les deux membres PolygonsRendered et PointsRendered dans la structure PerformanceAssessment. Le PolygonsRendered / PointsRendered champ est défini bad lorsque le renderer atteint la limitation primitive. Le damier d’arrière-plan apparaît toujours en fondu avec un certain délai, afin de garantir qu’une action utilisateur puisse être effectuée après cette requête asynchrone. L’action utilisateur peut par exemple masquer ou supprimer des instances de modèle.

Tarification

Pour obtenir une description détaillée des tarifs pour chaque type de configuration, consultez la page Tarification Remote Rendering.

Étapes suivantes