Коротко
- SDK можно использовать для создания сцен V-Ray или загрузки файлов .vrscene.
- Рендер запускается в фоновом режиме в отдельном потоке вызовом start().
- Interactive подходит для предпросмотра и экспериментов с настройками, Production — для получения финального изображения.
- В документации не указана конкретная версия ПО, в которой применялся SDK.
V-Ray Application SDK (App SDK) позволяет сторонним приложениям запускать и контролировать движок V-Ray. В документации Chaos App SDK описаны преобразование сцены в плагины V-Ray в памяти или загрузка из файла .vrscene, запуск рендера и получение результата в виде изображения. В этом руководстве рассматривается базовый рабочий процесс SDK для команд, которые разрабатывают интеграцию рендера в инструменты для архитектуры и визуализации. Поскольку в документации не указана конкретная версия V-Ray или App SDK, описанные шаги относятся к задокументированному интерфейсу App SDK.
1. Подготовьте среду для работы с SDK
Основной компонент App SDK — класс VRayRenderer. Он объединяет такие операции, как загрузка сцены, запуск рендера и доступ к изображению. Перед началом нужно убедиться, что приложение может найти файлы библиотек.
Укажите расположение SDK с помощью переменной среды
VRAY_SDK. Если вы используете привязку для Python, папкаpythonвнутри SDK должна быть доступна в путях поиска модулей Python; в документации для этого приводится пример сPYTHONPATH.В документации приведены скрипты
setenv.batдля Windows иsource setenv.shдля Linux и macOS. Эти скрипты задают обе переменные среды.Если задана переменная
VRAY_SDK, привязка ищет исполняемый файл VRaySDKLibrary и его зависимости вVRAY_SDK/bin. Если в структуре папок продукта нет/bin, можно использовать переменнуюVRAY_APPSDK_BIN; в этом случае исполняемые файлы ищутся в указанной папке.Если переменные среды недоступны, путь поиска библиотек можно задать во время выполнения. В документации приведены примеры
vray.setSDKLibraryPath(bin_folder)для Python и конструктораVRayInitдля C++.
Эта подготовка особенно важна при интеграции, встроенной в другое ПО или работающей автономно: до запуска рендера привязка SDK должна находить библиотеки V-Ray и необходимые зависимости. Подробности о соответствующем способе инициализации следует также проверить в документации привязки для используемого языка.
2. Загрузите сцену и выполните рендер
Базовый рабочий процесс включает создание VRayRenderer, подготовку сцены или загрузку из файла, запуск рендера, получение изображения и освобождение ресурсов. Сцену можно собрать в памяти, задав параметры плагинов V-Ray, либо прочитать из файла .vrscene. В примере показана загрузка файла и сохранение изображения в PNG с помощью Python:
import vray
with vray.VRayRenderer() as renderer:
renderer.load('./intro.vrscene')
renderer.start()
renderer.waitForRenderEnd(6000)
image = renderer.getImage()
image.save('intro.png')Вызов start() работает асинхронно: движок V-Ray продолжает рендер в отдельном потоке, поэтому основной поток приложения не занят рендерингом целиком. getImage() позволяет получить изображение не только после завершения обработки, но и во время рендера — в его текущем состоянии. Таким образом приложение может показать промежуточный результат или сохранить его в файл в одном из поддерживаемых форматов сжатия. В документации для ожидания завершения рендера используется waitForRenderEnd(); единица измерения параметра в примерах не поясняется, поэтому здесь не следует предполагать, что он задан в определённых единицах времени.
После завершения работы renderer нужно закрыть, а выделенные ресурсы памяти — освободить. В примере для Python жизненным циклом renderer управляет менеджер контекста; в привязках для других языков следует использовать соответствующий метод закрытия из API.
3. Выберите режим для предпросмотра или финального рендера
App SDK поддерживает два основных режима рендера. Interactive предназначен для быстрого предпросмотра изображения и отслеживания прогресса при работе с контентом или настройками сцены. Production используется для получения финального изображения после тщательной настройки сцены; на подготовку всего изображения может потребоваться больше времени.
| Настройка | Рекомендуемое значение | Эффект |
|---|---|---|
| Режим рендера | Interactive для предпросмотра и экспериментов | Обеспечивает быструю обратную связь, постепенно повышая качество изображения. |
| Режим рендера | Production для финального изображения | Предназначен для получения итогового изображения из настроенной сцены. |
| Тип рендера | CPU или GPU | Вариант CPU использует ресурсы процессора, а GPU — вычислительную мощность видеокарты. |
В документации указано, что режим по умолчанию для класса VRayRenderer — Interactive (CPU). Для GPU перечислены CUDA и OptiX для NVIDIA, а также Metal и MetalRT для Apple. Это не означает, что любой тип рендера доступен на каждом компьютере: необходимо проверить, поддерживают ли рабочая станция и установка SDK выбранный вариант.
Режим можно задать через свойство renderMode объекта VRayRenderer. Согласно документации, для смены режима между рендерами не требуется заново создавать или загружать сцену. Это позволяет работать в Interactive на этапе проектирования, а затем переключиться на Production в рамках того же процесса интеграции.
4. Добавьте отслеживание состояния и ошибок в интеграцию
Во время фонового рендера SDK отправляет события. Событие изменения состояния можно использовать, чтобы сообщать приложению о таких переходах, как начало рендера, его завершение или остановка из-за ошибки. Состояние готовности финального изображения обозначается как IDLE_DONE; промежуточные изображения также можно получать во время обработки.
Событие сообщения журнала предоставляет текст и уровень. В документации перечислены уровни info, warning, error и debug. Приложение может передавать эти сообщения в собственную систему диагностики, чтобы выявлять проблемы при загрузке сцены и рендеринге.
Обработчики событий выполняются в отдельном от потока рендера потоке. Такая архитектура призвана не допустить, чтобы медленный обработчик влиял на время рендера; однако медленные пользовательские callbacks могут задерживать выполнение других callbacks. Кроме того, после асинхронного вызова start() нельзя изменять сцену или renderer, пока renderer не выйдет из состояния PREPARING: в документации указано, что такие изменения будут отклонены.
Что меняется в рабочих процессах архитектуры и archviz?
App SDK нужен не столько для отдельного пункта меню в интерфейсе моделирования, сколько для интеграции V-Ray в рабочий процесс другого приложения. Например, команда может объединить в собственном инструменте подготовки сцены загрузку .vrscene, запуск рендера, получение изображения по ходу процесса и сохранение результата. Преимущество в том, что движком рендера можно управлять прямо из приложения, а предпросмотр и финальный рендер выполняются через один renderer.
Сначала студиям следует проверить привязку для используемого языка, расположение библиотек V-Ray и доступность варианта CPU/GPU на целевой машине. В источниках не описаны условия лицензирования, цена, совместимость с конкретным хост-приложением или аппаратные требования; поэтому делать предположения на этот счёт не следует. Отслеживание состояния сцены и журналов помогает создать более надёжную интеграцию, чем простое добавление кнопки рендера.
Типичные ошибки
Запускать привязку SDK, не задав
VRAY_SDKили, при использовании Python, путь к модулю. Если библиотека или модуль Python не найдены, сначала проверьте переменные среды и пути к папкам.Считать вызов
start()синхронной операцией и предполагать, что рендер сразу завершён. Вызов работает в фоновом режиме, поэтому приложению необходимо отслеживать завершение.Изменять сцену или renderer на этапе
PREPARING. Используйте событие изменения состояния и откладывайте редактирование до безопасного момента.Выполнять длительные операции внутри callback. В документации отмечено, что это может задержать другие callbacks; тяжёлые задачи следует обрабатывать отдельно от обработчика события.
Источники
Источников: 1Тексты источников не перепечатываются; короткие цитаты отмечены, остальное — наш пересказ и комментарий.
Для архитектурных и визуализационных студий в Турции главная ценность App SDK — возможность интегрировать повторяющиеся этапы рендера в собственные инструменты. Разделение процесса на предпросмотр и получение финального изображения может помочь выстроить более контролируемые рабочие процессы внутри команды.
При этом SDK сам по себе не гарантирует ускорения рендера. Прежде чем разрабатывать интеграцию, отдельно проверьте условия лицензирования и стоимость, совместимость с используемым ПО и доступность вариантов CPU/GPU на целевой машине. Также важно учитывать ошибки в переменных среды, не упускать из виду асинхронную логику и не выполнять длительные операции в callbacks.
Частые вопросы
Для чего нужен V-Ray App SDK?
Он используется для запуска и управления рендером V-Ray из сторонних приложений. Сцену можно создать в памяти или загрузить из файла `.vrscene`.
Чем отличаются режимы Interactive и Production в V-Ray App SDK?
Interactive предназначен для быстрого предпросмотра и получения обратной связи при проверке настроек сцены, а Production — для получения финального изображения из настроенной сцены.
Какой режим рендера по умолчанию используется в V-Ray App SDK?
В документации режимом по умолчанию для класса VRayRenderer указан Interactive (CPU).



