Размеры серверов

Удаленная отрисовка Azure доступна в двух конфигурациях сервера: Standard и Premium.

Примитивные ограничения

Примитив — это один треугольник (в треугольных сетках) или одна точка (в точечных облачных сетках). Триангулярные сетки можно создать вместе с облаками точек, в этом случае сумма всех точек и треугольников в сеансе учитывается по пределу.

Стандартный размер

Удаленная отрисовка с Standard сервером размера имеет максимальный размер сцены 20 миллионов примитивов. Когда отрисовщик на уровне сервера "Стандартный" попадает в это ограничение, он переключает отрисовку на фон проверка доски:

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

Размер класса Premium

Удаленная отрисовка с Premium размером не применяет жесткое максимальное значение, но производительность может снизиться, если содержимое превышает возможности отрисовки службы. Кроме того, для треугольных сеток (и в отличие от облаков точек), доступное количество графической памяти является жестким ограничением. Невозможно сопоставить объем графической памяти с определенным числом треугольников, так как существует множество факторов, которые зависят от исходной сетки и параметров:

Для облаков точек нет реального ограничения, так как облачные ресурсы точки используют подход потоковой передачи данных. При потоковой передаче данных отрисовщик автоматически управляет бюджетом памяти на графическом карта на основе фактической видимой геометрии.

Указание размера сервера

Требуемый тип конфигурации сервера должен быть указан во время инициализации сеанса отрисовки. Его нельзя изменить в рамках запущенного сеанса. В следующих примерах кода показано место, где должен быть указан размер сервера.

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

В примерах сценариев PowerShell требуемый размер сервера должен быть указан в файле arrconfig.json.

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

Как отрисовщик оценивает количество примитивов

Число примитивов, которые считаются для теста ограничения, — это количество примитивов (треугольников и точек), которые фактически передаются в отрисовщик. Эта геометрия обычно является суммой всех экземпляров сеток, но существуют и исключения. Следующая геометрия не включается.

Соответственно, можно написать приложение, которое предназначено standard для размера, который загружает несколько моделей с примитивным числом близко к пределу для каждой отдельной модели. Если приложение отображает только одну модель одновременно, проверка erboard не активируется.

Определение количества примитивов

Существует два способа определить количество примитивов модели или сцены, которые способствуют ограничению standard бюджета размера конфигурации:

  • На стороне преобразования модели извлеките выходной json-файл преобразования и проверка numFaces запись в разделе inputStatistics. Это число обозначает число треугольников в треугольных сетках и количество точек в точках облака соответственно.
  • Если приложение работает с динамическим содержимым, количество отрисованных примитивов может выполняться динамически во время выполнения. Используйте запрос оценки производительности и проверка для суммы значений в двух членах PolygonsRendered и PointsRendered в PerformanceAssessment структуре. Поле PolygonsRendered / PointsRendered задано bad , когда средство отрисовки попадает в примитивное ограничение. Шахматный фон всегда проступает с некоторой задержкой, чтобы можно было выполнить пользовательское действие после этого асинхронного запроса. Действие пользователя может, например, скрывать или удалять экземпляры модели.

Цены

Подробные сведения о ценах для каждого типа конфигурации см. на странице цен на удаленную отрисовку.

Следующие шаги