Запуск скрипта Blender python вне блендера

Я хочу визуализировать некоторые научные данные, которые на данный момент представляют собой лишь анимацию некоторых сфер разных цветов и размеров.

Я уже создал скрипт в Mathematica, который создает входные данные для POV-Ray.

Моя проблема в том, что меня не устраивает качество результатов POV-Ray, и я хотел написать скрипт на Python, который мог бы настроить соответствующие сцены блендера и отрисовать их. Важным ограничением является то, что я хочу рендерить на безголовой машине, поэтому я не могу использовать внутреннюю консоль Блендера.

Мой вопрос: можно ли использовать API-интерфейс Blender с внешней консоли, чтобы получить поведение, подобное POV-Ray?


Прочитав ответ Джорджа Профензы, я провел дальнейшее исследование и обнаружил, что Don't t Use Blender! в документации Blender.

В отличие от моих мыслей, нужно создать скрипт Python, который выполняется блендером в фоновом режиме.

./blender --background --python myscript.py

person Stefan    schedule 28.02.2013    source источник


Ответы (3)


Насколько я помню, вы можете запускать Blender из командной строки, не открывая интерфейс/оконную систему, что, я надеюсь, подойдет для вашей установки. Вы можете не только указать Блендеру визуализировать документ, но также можете запустить скрипт, который генерирует этот документ/заполняет сцену геометрией, источниками света и т. д.

В качестве альтернативы вы можете генерировать контент прямо для средства визуализации (и полностью пропустить 3D-редактор/блендер). Существует довольно много бесплатных рендереров, таких как:

  1. Яфарай
  2. Sunflow
  3. Mitsuba
  4. LuxRender
  5. Пикси

яфарай

YAFARAY

подсолнух

СОЛНЕЧНЫЙ ПОТОК

luxRender LUX

пикси

PIXIE

person George Profenza    schedule 28.02.2013
comment
Я знаю, что это старая тема, но есть ли у вас рекомендации по созданию контента напрямую? Прямо сейчас я пробую cgkit (библиотека python для создания файлов RenderMan), но мне было интересно, может ли быть лучший подход. Спасибо - person sheridp; 27.05.2014
comment
Вы говорите о создании генеративных моделей? Если да, то следует использовать API Python для Blender, чтобы добавить вершины к граням/граням к мешам и/или изменить эти меши. Не знал о cgkit, спасибо за внимание, выглядит интересно. Взглянув на документацию, вы можете создать собственную треугольную сетку с помощью cgkit. Трудно сказать, какой подход будет лучше в вашем сценарии... - person George Profenza; 27.05.2014
comment
... вы можете использовать как cgkit, так и Blender для создания мешей. У вас есть еще несколько модификаторов и инструментов в Blender, но, в конце концов, я бы выбрал самое простое решение (не обязательно самое многофункциональное): то, что генерирует желаемый результат самым простым и при этом поддерживает нужные вам входные данные (параметры для генерируя геометрию, которую я предполагаю). ХТН - person George Profenza; 27.05.2014
comment
Я использую блендер командной строки для рендеринга 1 сцены (с той же настройкой камеры) с разными текстурами (скажем, 100 файлов текстур), но для рендеринга 1 файла PNG требуется около 2 с. Не могли бы вы предложить более быстрый инструмент для этого? - person Jackie; 10.05.2019

Есть два варианта,

  • Первое, с чем вы столкнулись, это запуск Blender в фоновом режиме,
  • Второй, очень экспериментальный, с использованием Blender в качестве модуля Python — BlenderAsPyModule

В обоих случаях это должна быть простая операция по импорту сцены Mathematica — bpy. ops.import_scene.* Затем выполните визуализацию сцены bpy.ops.render.render

person neomonkeus    schedule 28.02.2013
comment
Я останусь с первым вариантом. Но спасибо за указание на оператор import_scene. Это может быть очень полезно. - person Stefan; 28.02.2013

Blender можно запустить «без головы» внутри контейнера Docker. Проверьте Dockerfile здесь

Если вы не знакомы с Docker, скачайте Dockerfile и запустите:

docker build -t blender .
docker run -it -v your_folder/:/scripts bash

Теперь вы можете запускать свои скрипты внутри безголового блендера.

person Enric Moreu    schedule 12.06.2020