Написал маленький скрипт (конвертация модели).
Скрипт отличнно работает на Win7 x64.
Запускаю его из командной строки
C:\SOFT\blender-2.79-windows64\blender.exe --debug-all --background --python myscript.py
Скрипт берет файл одного типа, и создаёт файл другого типа.
Работает как часы.
Возникла необходимость разместить эту возможность на веб-сервере в интернете.
т.е. пользователь грузит свой формат, а на выходе получает другой.
Загрузкf, обработка php - это понятно. Вопросы следующие:
1. Какую версию Blender-а использовать (Линуксовую?)
2. Как будет выглядить синтаксис запуска моего скрипта?
... смотри доку blender cli или blender --help в части переменных окружения ($BLENDER_USER_SCRIPTS и $BLENDER_SYSTEM_SCRIPTS) https://docs.blender.org/manual/en/dev/advanced/command_line/arguments.html ...
Так в том то и дело, что System-scripts можно через консоль изменить, а user-scripts нет
--env-system-datafiles
Set the BLENDER_SYSTEM_DATAFILES environment variable.
--env-system-scripts
Set the BLENDER_SYSTEM_SCRIPTS environment variable.
--env-system-python
Set the BLENDER_SYSTEM_PYTHON environment variable.
Startup.blend не нашел поиском. На винде он есть, но там пути то другие.
а сервак консольный, GUI не открыть для его создания
нашел следы /usr/share/blender/2.79
и
/usr/bin/blender - это 1кб файл со следующим содержанием
#!/bin/sh
if [ -z "$OMP_NUM_THREADS" ]; then
NUM_CORES=`grep -m1 '^cpu cores' /proc/cpuinfo | tr -dc 0-9`
if [ "$NUM_CORES" ]; then
export OMP_NUM_THREADS=$NUM_CORES
fi
fi
export LD_LIBRARY_PATH=/usr/lib/blender/ffmpeg/2.2/lib:${LD_LIBRARY_PATH}
exec $BLENDER_WRAPPER /usr/lib/blender/blender -P /usr/lib/blender/reset_excepthook.py "$@"
... у тебя уже установлен докер? ты где проводишь проводить эксперименты? ...
... может попробовать скриптом установить все переменные которые тебе требуются ...
#myscript.py
import bpy
from bpy import context
print("hello!")
path = "/somepath"
context.user_preferences.filepaths.script_directory=path
print(context.user_preferences.filepaths.script_directory)
... а скрипт запускать ...
exec blender --background --python myscript.py
ps
... и наверное нужно startup.blend смотреть, а userpref.blend ...
... почему пользователь не может сделать это у себя на ПК? ...
Ну, скрипт может/будет добавлять свои "плюшки"б помимо простой конвертации.
Кстати, код
#myscript.py
import bpy
from bpy import context
print("hello!")
path = "/somepath"
context.user_preferences.filepaths.script_directory=path
print(context.user_preferences.filepaths.script_directory)
почему то не срабатывает. точнее ничего не выводит в консоль
>> Не понял, кто сделает? Какая в этом практическая польза?
... не бери в голову, это отступление от темы, но blender можно использовать как модуль для python, то есть сам blender не запускается, а запускается скрирт на python, который использует функции blender как библиотечные ...
This allows 'bpy' to be imported from python or other applications/IDE's which embed python, eg:
python -c "import bpy ; bpy.ops.render.render(write_still=True)"
This runs in background mode and has similar restrictions to running a script:
blender --background --python test.py
Так. Ну вроде как победил. Подбросил конфиг-файл из установленного на GUI Ubuntu в созданную папку .config/blender/2.79
Теперь всё подхватывается, и делается как надо.
На самом деле, думаю это можно было и не делать.
По сути 2 задачи, которые я пытался выполнить (В GUI) это
1. Указание пути к скриптам
под конец понял, что это делается так
import bpy
from bpy import context
path = "/somepath"
context.user_preferences.filepaths.script_directory=path
print(context.user_preferences.filepaths.script_directory)
2. Подключение плагина
код не помню, но при включении галочки этого плагина - всплывает питоновская подсказка с командой его подключения.
т.е. GUI-шный вариант (через файл файл в .config userprefs.blend) для настройки вроде как не нужен. В консоли запускается нулячий Blender с заданнной коммандной строкой, которая и формирует требуемую конфигурацию.
Единственный момент, который мне непонятен это:
На сервер я установил Blender из репозитория (который разбросался по нескольким папкам в системе).
На офсайте я могу скачать tar-архив и распаковав его запустить Blender без всяких репозиториев (что я и сделал на GUI-Ubuntu).
На серверном Ubuntu я не пробовал запускать "распакованный".
Вопрос в том, "зачем парится со скачивания с репозитория, если можно просто скопировать с офсайта?".
Типа если у меня голый Линух - то репозиторная версия точно проинсталит нужные библиотеки, а офсайтная подразумевает что у меня все нужные либы есть по умолчанию?