Стартиране на Blender python скрипт извън blender

Искам да визуализирам някои научни данни, които в момента са само анимация на някои сфери с различни цветове и размери.

Вече създадох скрипт в Mathematica, който създава вход за POV-Ray.

Проблемът ми е, че не съм доволен от качеството на резултатите на POV-Ray и исках да напиша скрипт на Python, който може да настрои съответните сцени на блендер и да ги изобрази. Важно ограничение е, че искам да рендерирам на машина без глава, така че не мога да използвам вътрешната конзола на Blender.

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


След като прочетох отговора на George Profenza, направих допълнително проучване и открих Don' t Използвайте Blender! в документацията на Blender.

За разлика от моите мисли, човек трябва да създаде скрипт на Python, който се изпълнява от blender във фонов режим.

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

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


Отговори (3)


Доколкото си спомням, можете да стартирате Blender от командния ред, без да отваряте интерфейса/прозоречната система, което се надявам да работи за вашата настройка. Не само можете да кажете на Blender да изобрази документ, но можете също така да стартирате скрипт, който генерира този документ/попълва сцената с геометрия, светлини и т.н.

Като алтернатива можете да генерирате съдържание направо за рендеринг (и да пропуснете напълно 3D редактор/блендер). Има доста безплатни рендери като:

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

яфарай

YAFARAY

слънчоглед

SUNFLOW

luxRender LUX

пикси

PIXIE

person George Profenza    schedule 28.02.2013
comment
Знам, че темата е стара, но имате ли препоръки за директно генериране на съдържание? Точно сега съм в средата на изпробване на cgkit (библиотека на Python за генериране на RenderMan файлове), но се чудех дали може да има по-добър подход. Благодаря - person sheridp; 27.05.2014
comment
Говорите за създаване на генеративни модели? Ако е така, трябва да е въпрос на използване на API на Blender Python за добавяне на върхове към лица/лица към мрежи и/или модифициране на тези мрежи. Не знаех за cgkit, благодаря за вниманието, изглежда интересно. Като прегледате набързо документите, можете да генерирате персонализирана триъгълна мрежа с cgkit. Трудно е да се каже какъв би бил по-добрият подход във вашия сценарий... - person George Profenza; 27.05.2014
comment
... можете да използвате както cgkit, така и Blender за генериране на мрежи. Имате още няколко модификатора и инструмента в Blender, но в крайна сметка бих избрал най-простото решение (не непременно най-богато на функции): това, което генерира желания от вас изход най-просто и все още поддържа необходимите входове (параметри за генериране на геометрията, която предполагам). HTH - person George Profenza; 27.05.2014
comment
Използвам блендер на командния ред, за да изобразя 1 сцена (една и съща настройка на камерата) с различни текстури (да речем файл със 100 текстури), но отнема около 2 секунди, за да изобразя 1 PNG файл. Бихте ли предложили по-бърз инструмент за това? - 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

Сега можете да стартирате вашите скриптове в безглав Blender

person Enric Moreu    schedule 12.06.2020